Hari sabtu lalu baru sempat membahas 1 soal UAS, yang juga saya posting di sini. Kali ini saya akan membahas 1 soal lagi. Berikut soal yang dimaksud :
Soal
Buatlah sebuah program yang mampu menampilkan pola seperti contoh di bawah. Program menerima masukan sebuah bilangan integer positif 1 < N < 2^32 dan menghasilkan pola tersebut.
Contoh:
Jika N = 5, maka pola yang ditampilkan :
1
3 2
5 4 1
7 6 3 2
9 8 5 4 1
Jika N = 10, maka pola yang ditampilkan :
1
3 2
5 4 1
7 6 3 2
9 8 5 4 1
11 10 7 6 3 2
13 12 9 8 5 4 1
15 14 11 10 7 6 3 2
17 16 13 12 9 8 5 4 1
Petunjuk :
- Tidak perlu dibuat tester, cukup solvernya saja
- Di dalam solver terdapat method yang menerima masukan N dan mengembalikan sebuah string
berisi pola
Jawaban
Kode solusi akan direpresentasikan dengan suatu kelas bernama Pola yang akan dibuat dalam bahasa Java. Pembentukan pola yang dimaksud dikerjakan oleh method buatPola(). Berikut implementasi dari kelas Pola.
public class Pola
{
//constructor
public Pola(){
}
//method utama untuk membentuk pola
public String buatPola(int n){
String pola = "";
int delta = 0;
int temp = 0;
int limit = n;
if(n >=1 && n<= Math.pow(2,32))
{
if(limit % 2 == 0) limit--; //jika n atau limit genap
for(int i=1; i<=limit; i++){
for(int j=1; j<=limit; j++){
if(j <= i){
if(i == j){
if((i % 2)!=0) pola += "1\t"; //jika i ganjil
else pola += "2 "; //jika i genap
}
else{// j < i
delta = i-j;
if(j % 2 != 0) temp = delta * 2 + 1; //jika j ganjil
else temp = delta * 2 + 2; //jika j genap
pola += temp + "\t";
}
}
}
pola += "\n";
}
}
else{
pola = "n tidak terdefinisi";
}
return pola;
}
}
Untuk mengetes hasil keluaran dari method tersebut, tinggal ketikan kode di bawah ini di kelas main :
Pola p = new Pola(); System.out.println(p.buatPola(5));
– Sekian –

Bagus bagus bagus … Saya lupa mata kuliah ini. Hampir tidak pernah saya pelajari lagi
setelah diliat-liat lagi solusi di atas harusnya bisa dikodekan lebih ringkas. percabangan if(i==j) tampaknya ga perlu. jadi seperti ini :
public class Pola
{
//constructor
public Pola(){
}
//method utama untuk membentuk pola
public String buatPola(int n){
String pola = “”;
int delta = 0;
int temp = 0;
int limit = n;
if(n >=1 && n<= Math.pow(2,32))
{
if(limit % 2 == 0) limit–; //jika n atau limit genap
for(int i=1; i<=limit; i++){
for(int j=1; j<=limit; j++){
if(j <= i){
delta = i-j;
if(j % 2 != 0) temp = delta * 2 + 1; //jika j ganjil
else temp = delta * 2 + 2; //jika j genap
pola += temp + "\t";
}
}
pola += "\n";
}
}
else{
pola = "n tidak terdefinisi";
}
return pola;
}
}