Pertimbangkan blok teks persegi, N karakter lebar dengan N tinggi, untuk beberapa bilangan bulat ganjil N lebih besar dari 1.
Sebagai contoh, mari N = 5 dan teksnya menjadi:
MLKJI
NWVUH
OXYTG
PQRSF
ABCDE
Perhatikan bahwa ini adalah alfabet (selain Z) yang berputar berlawanan arah jarum jam dari sudut kiri bawah. Ini seperti karpet yang digulung.
"Buka gulungan" teks dengan seperempat putaran searah jarum jam jadi FGHI
berada pada tingkat yang sama dengan ABCDE
hasil di:
PONM
QXWL
RYVK
STUJ
ABCDEFGHI
Buka gulungan ini dapat dilakukan 7 kali lagi hingga teks menjadi satu baris:
SRQP
TYXO
UVWN
ABCDEFGHIJKLM
UTS
VYR
WXQ
ABCDEFGHIJKLMNOP
WVU
XYT
ABCDEFGHIJKLMNOPQRS
XW
YV
ABCDEFGHIJKLMNOPQRSTU
YX
ABCDEFGHIJKLMNOPQRSTUVW
Y
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWXY
Tantangan
Tantangannya adalah untuk menulis sebuah program yang merupakan blok teks N × N yang menghasilkan berapa kali ia "membuka gulungannya" dengan seperempat putaran ketika ia disusun kembali ke dalam pola membuka gulungan dan menjalankannya.
Sebenarnya ada dua kontes di sini: (semoga tidak akan terlalu berantakan)
- Lakukan ini dengan N. terkecil (hingga batas N = 3)
- Lakukan ini dengan N. terbesar (tanpa batas)
Tidak akan ada jawaban yang diterima tetapi pemenang di masing-masing kategori ini akan menerima setidaknya 50 perwakilan hadiah dari saya. Dalam kasus ikatan jawaban tertua menang.
Contoh
Jika blok kode Anda
MyP
rog
ram
menjalankannya seperti seharusnya output 0.
Lari
rM
oy
ramgP
harus menghasilkan 1.
Lari
or
ramgPyM
harus menghasilkan 2.
Lari
o
ramgPyMr
harus menghasilkan 3.
Akhirnya, menjalankan ramgPyMro
seharusnya menghasilkan 4.
Detail
- Outputnya harus dicetak ke stdout (atau alternatif terdekat) dengan sendirinya. Tidak ada input.
- Anda hanya dapat menggunakan ASCII yang dapat dicetak (kode hex 20 hingga 7E, yang termasuk spasi) dalam kode Anda.
- Spasi mengisi ruang kosong dalam pengaturan membuka gulungan. (Kecuali jika Anda membuka gulungan ke kiri.)
- Hanya pengaturan dari sepenuhnya kuadrat ke sepenuhnya datar perlu memiliki output yang valid. Tidak ada pengaturan lain yang akan dijalankan.
- Anda mungkin tidak membaca sumber Anda sendiri.
- Anda dapat menggunakan komentar.
- N = 1 dikecualikan karena dalam banyak bahasa program
0
akan berfungsi. Jika diinginkan, Anda dapat membuka gulungan ke kiri dan bukan ke kanan. Jadi misalnya
MyP rog ram
menjadi
Pg yo Mrram
dan seterusnya. Tidak ada ruang tambahan yang ditambahkan saat menggulung dengan cara ini. Garis hanya berakhir
(Terkait: Tulis Program Rectangular yang Menghasilkan Jumlah Kali Diputar )