Tadinya lagi baca milis Delphindo. Terus baca postingannya Kang Jaim, salah satu pendekar dalam dunia pemrograman. Iseng-iseng baca postingan dia, dan nemu yang ini.
Berikut tulisan beliau:
Nah giliran daku juga penasaran, mencoba membuatnya dengan Java.
(Aku sendiri gak tahu ini kode untuk memecahkan masalah apa, yang menarik adalah bagaimana menuliskannya dalam berbagai bahasa pemrograman).
Berikut versi Perl (udah saya coba jalan dengan baik):
$m=4; $n=4;
for ($y=0; $y < $n ; $y++) { for ($x=0 ; $x < $m ; $x++) {
print $y*$m + $x . “:”;
if ($y!=0) { $neighbor = ($y-1) * $m + $x; print ” $neighbor “; } #N
if (!($x==($m-1))) { $neighbor = $y * $m + ($x + 1); print ” $neighbor “; } #E
if (!($y==($n-1))) { $neighbor = ($y+1) * $m + $x; print ” $neighbor “; } #S
if ($x!=0) { $neighbor = $y * $m + ($x – 1); print ” $neighbor “; } #W
print “n”; } }
Berikut versi C (belum dicoba karena saya gak punya compiler C, tapi saya yakin benar algoritmanya):
int main(int argc, char** argv) {
int m = 4;
int n = 4;
int x, y;
int neighbor;
for (y = 0; y < n; y++) {
for (x = 0; x < m; x++) {
printf(“%d: “, y * m + x);
if (y != 0) {
neighbor = (y – 1) * m + x;
printf(“%d “, neighbor);
}// #N
if (!(x == (m – 1))) {
neighbor = y * m + (x + 1);
printf(“%d “, neighbor);
}; // } #E
if (!(y == (n – 1))) {
neighbor = (y + 1) * m + x;
printf(“%d “, neighbor);
}//#S
if (x != 0) {
neighbor = y * m + (x – 1);
printf(“%d “, neighbor);
}//#W
printf(“n”);
}
}
return (EXIT_SUCCESS);
}
Berikut versi Python (saya coba kok error di kompie saya):
#! /usr/bin/python
m, n = 5, 7
process = lambda x, y, z: z.append(y) if x else None
for i in range(m*n):
y, x = i / m, i % n
lst = []
process(y != 0, (y-1) * m + x, lst)
process((x!=(m-1)), y * m + (x + 1), lst)
process((y!=(n-1)),(y+1) * m + x, lst)
process((x != 0),y * m + (x – 1), lst)
print “%d: %s” % (i, ‘ ‘.join(str(key) for key in lst))
Nah yang terakhir saya buat versi Javanya:
public class HackingCode {
public static void main(String[] args) {
for (int m = 4, n = 4, y = 0; y < n; y++) {
for (int x = 0; x < m; x++) {
System.out.print((y * m + x) + ":");
System.out.print((y != 0 ? " " + ((y - 1) * m + x) : ""));
System.out.print((x != m - 1 ? " " + (y * m + (x + 1)) : ""));
System.out.print((y != n - 1 ? " " + ((y + 1) * m + x) : ""));
System.out.print((x != 0 ? " " + (y * m + (x - 1)) : "") + "n");
}
}
}
}
Menurut Anda mana yang paling Anda sukai?
Mana yang paling mudah dimengerti?
Mana yang Anda pilih : lebih ringkas atau lebih readable?
Ada yang mau coba dalam bahasa lain?
Menyukai ini:
Suka Memuat...
Terkait