Pertanyaan ini terinspirasi oleh pertanyaan Kevin Cruijssen .
Sekarang karpet sudah ditata, kami ingin menggulungnya. Tugas Anda adalah menulis program yang mengambil string dan mengembalikan spiral yang dibuat dari string ini (mewakili karpet yang digulung dilihat dari samping).
Prosedur untuk satu langkah menggulung karpet adalah sebagai berikut. Ada contoh untuk menggambarkan apa yang saya maksud. Perhatikan bahwa contoh dimulai dengan karpet yang digulung sebagian untuk pemahaman yang lebih baik:
ac
rpet
- pisahkan "kepala" dari "ekor" karpet: kepala adalah apa yang telah digulung sejauh ini, ekor adalah apa yang masih harus digulung.
Head: ac Tail:
rp et
- Putar kepala 90 °, searah jarum jam.
Rotated head: ra Tail (unchanged):
pc et
- jika lebar kepala baru (di sini
2
) kurang atau sama dengan panjang ekor (di sini2
)- lalu, letakkan di atas ekor
- selain itu, karpet (seperti pada awal langkah) digulung
New carpet: ra
pc
et
Ulangi prosedur ini sebanyak yang diperlukan.
Dua contoh yang menunjukkan semua langkah rolling karpet:
carpet
c
arpet
ac
rpet
ra
pc
et
0123456789
0
123456789
10
23456789
21
30
456789
432
501
6789
Beberapa ketentuan:
- Anda tidak perlu menunjukkan semua langkah perantara, hanya karpet yang digulung (mis. Jika Anda menemukan cara yang tidak berulang untuk menghitung hasilnya, itu sempurna). Juga, Anda tidak perlu mencetak spasi putih terkemuka, dalam contoh di atas, saya hanya menunjukkan mereka untuk menyelaraskan hal-hal.
- Input adalah String, daftar / array char
- Output dicetak ke stdout atau ke file.
- Input bagus: panjangnya minimal 1 karakter, dan paling banyak konstanta cukup kecil sehingga tidak menimbulkan masalah, tetapi Anda tidak dapat menggunakan konstanta itu dalam program Anda; isi string hanya karakter yang bagus ([a-zA-Z0-9]), yang disandikan sesuai keinginan Anda.
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang. Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa yang bukan kode. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa pun'.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, tambahkan penjelasan untuk jawaban Anda jika menurut Anda diperlukan.
ProgrammingPuzzlesAndCodeGolf
- panjang ekor akhir lebih dari 1 membuat saya tersandung.
print
di dalam lambda
.