Untuk kelas CS saya, instruktur saya telah memberi kami tugas membuat persegi panjang yang terbuat dari tanda bintang dengan garis diagonal yang digambar di Jawa.
Dia juga menyuruh kami untuk menulisnya sesedikit mungkin. Saya sudah mendapatkannya hingga 190 byte, tetapi saya perlu menemukan beberapa untuk menyederhanakan kode ini bahkan lebih untuk mengurangi byte. Adakah yang bisa membantu saya dengan ini?
Kode ini fungsional:
interface d{static void main(String[]a){for(int z=0,w=new Byte(a[0]),h=new Byte(a[1]);z<h*w;){int y=z/w,x=z++%w;System.out.print((x>w-2)?"*\n":(y%(h-1)*x*((y-x)%3)==0)?"*":" ");}}}
Masukan adalah 10 10
.
Keluaran:
**********
** * * *
* * * **
* * * *
** * * *
* * * **
* * * *
** * * *
* * * **
Jawaban:
secara logis, harus ada Asterik ("*") setiap waktu
i == j
&i+j==w-1
(untuk diagonal),i == 0
&j == 0
(untuk garis atas dan sisi kiri) danj == w-1
&i==h-1
(untuk sisi kanan dan garis bawah).sumber
System.out.println()
putih yang tidak berguna dan tidak berguna antara pipa OR (||
) dan operator ternary.Kode yang Anda berikan dapat dikurangi dengan melakukan ini:
Kode yang dihasilkan adalah:
Catatan: baris terakhir tidak ada dalam contoh output dari pertanyaan! Output dari kode sampel berbeda.
sumber
Saya sebenarnya tidak memiliki Java di komputer saya jadi saya tidak bisa menguji ini, tetapi saya pikir itu harus bekerja untuk 174 byte dan hampir pasti bisa golf lebih
ruang putih dimasukkan untuk kejelasan:
cetak "* \ n" untuk karakter terakhir di setiap baris, "*" untuk semua baris pertama dan terakhir dan kolom pertama, dan "*" untuk setiap saat jumlah baris dan kolom genap, jika tidak cetak ""
sumber