Tujuannya adalah untuk menghasilkan keluaran dari n kuadrat (nxn) dari bilangan bulat acak ( 0-9
) dengan gerakan *
yang berputar searah jarum jam di sekitar sudut, mulai dari kiri atas. Kotak harus berdampingan dan dipisahkan oleh satu ruang.
Jika n = 0
, output harus kosong.
Output untuk n=1
:
*
Output untuk n=2
:
*3 4*
14 07
Output untuk n=3
:
*34 82* 291
453 224 924
145 158 57*
Output untuk n=4
:
*153 135* 0154 0235
2352 5604 3602 2065
2245 6895 3561 7105
7225 5785 479* *662
Perhatikan bagaimana *
rotasinya (di sudut sudut), dari kiri ke kanan, seperti ini: kiri atas, kanan atas, kanan bawah, kiri bawah, kiri atas, dll. (Searah jarum jam)
Jawaban terpendek (diukur dalam byte) menang.
*
s dalamn=4
contoh? Mungkin memberi beberapa contoh lagi?*153
, yang kedua dengan baris atas*135
, dan seterusnya.Jawaban:
05AB1E ,
5049 bytePenjelasan
Contoh untuk input = 4.
Pertama kita membuat string input ^ 3 angka acak antara 0 dan 9.
memproduksi
Lalu kami membaginya menjadi beberapa bagian sesuai ukuran input.
Itu selanjutnya dibagi menjadi potongan input.
Ini memberi kita matriks angka.
Kami kemudian mengulangi baris dari matriks, menyisipkan tanda bintang di tempat yang tepat.
Sekarang kita memiliki matriks dengan tanda "*" di setiap baris, tetapi kita ingin tanda bintang per kolom.
Jadi kami ritsleting daftar ini mengubah baris menjadi kolom dan sebaliknya.
Yang tersisa sekarang adalah memformat output.
Bergabung dengan baris pada spasi dan kolom pada baris baru memberi kita hasil akhir.
Cobalah online!
Solusi 50 byte lama
sumber
Dyalog APL , 57 byte
Membutuhkan
⎕IO←0
yang default pada banyak sistem.Dengan asumsi spasi ganda diizinkan, seperti contoh pertama OP.
TryAPL online!
Solusi 49-byte yang tidak bersaing (Dyalog APL 16.0):
sumber
Java 7,
372370366 byteMungkin bisa bermain golf lagi dengan menempatkan tanda bintang dan membuat output pada saat yang sama, bukan satu per satu.
Tidak digabungkan & kode uji:
Coba di sini.
Output yang mungkin:
sumber
PHP, 181 Bytes
sumber