Kode di situs ini cepat habis. Kita perlu berinvestasi dalam string yang terbarukan. Jadi, Anda harus menulis sebuah program yang mengambil string dan mengubahnya menjadi kincir angin.
Tantangan
Mari kita ambil string gilingan angin sederhana sebagai contoh. Ambil talinya abc
. The poros adalah karakter pusat, dalam hal ini b
. Karena panjang string adalah 3 karakter, setiap output akan memiliki tinggi tepat tiga garis dan lebar tiga karakter. Ini adalah output Anda pada langkah 1. (Perhatikan spasi putih)
abc
Untuk mendapatkan langkah selanjutnya, putar setiap karakter di sekitar pivot searah jarum jam. Inilah langkah 2:
Sebuah b c
Ini langkah 3-8:
Sebuah b c
Sebuah b c
cba
c b Sebuah
c b Sebuah
c b Sebuah
Dan pada langkah kesembilan, muncul lingkaran penuh ke string asli:
abc
Perhatikan bahwa b
tinggal di tempat yang sama sepanjang waktu. Ini karena b
karakter pivot. Anda harus menulis program atau fungsi yang mengambil string sebagai input dan berulang kali mencetak urutan ini hingga program ditutup.
Klarifikasi
Semua string input akan memiliki jumlah karakter ganjil. (Sehingga setiap kincir angin akan memiliki poros)
Agar tantangannya sederhana, semua string hanya akan berisi karakter alfabet huruf besar dan kecil.
Outputnya harus
len(input_string)
karakter lebar dan tinggi.Tidak masalah langkah urutan mana yang Anda mulai, asalkan Anda terus berputar dan berputar selamanya.
Lebih Banyak Tes IO:
Karena posnya sudah cukup panjang, berikut ini tautan ke keluaran untuk "kincir angin":
Sidenote:
Karena ini seharusnya kincir angin, akan luar biasa jika Anda memasukkan beberapa kode boilerplate untuk menghidupkannya dengan penundaan waktu yang kecil atau input pengguna di antara setiap langkah. Namun, karena beberapa bahasa tidak memiliki builtin waktu, ini tidak wajib. Bagian yang bersaing dari kiriman Anda hanya dapat mencetak urutan secepat mungkin.
Jawaban:
MATL ,
353321 byteBerikut ini akan menghidupkan kincir angin ( 26 byte )
Demo online
Dalam versi ini, the
Xx
ditentukan untuk menghapus layar dan1Y.
adalah jeda 1 detik.Penjelasan
Ide dasarnya adalah kami ingin membuat dua versi input. Versi "ortogonal"
Dan versi "diagonal"
Kami mendorong dua versi ini ke tumpukan. Setiap kali melalui loop, kami mengubah urutan tumpukan dan memutar bagian atas searah jarum jam.
sumber
JavaScript (ES6), 291 byte
sumber
05AB1E ,
8853 byteKode:
Cobalah online! . Pastikan untuk menekan tombol kill tepat setelah Anda menjalankannya, karena itu masuk ke loop tak terbatas.
sumber
Ruby,
122119 byteVersi tidak dikoleksi dengan tidur, dalam program uji
Rotasi tidak terlalu meyakinkan pada ketinggian konsol penuh. Tetapi jika Anda mengurangi ketinggian hingga panjang string input, rotasi jauh lebih meyakinkan.
sumber
MATL ,
4744 byteCobalah online! (Tapi segera bunuh, loop tak terbatas)
Dengan jeda 1 detik: 56 byte
Cobalah online! (lagi, loop tak terbatas)
sumber
Python 3 , 193 byte
Tidak disatukan
Rekursif, 177 byte
(macet setelah beberapa detik)
Tidak disatukan
Solusi lain, 268 byte
Tidak disatukan
sumber
Pyth, 48 byte
Cobalah online! (Catatan: ini adalah versi yang tidak selamanya di-loop, karena akan membuat crash penerjemah.)
Tanpa malu-malu diterjemahkan dari solusi Python 3 oleh @ByHH .
Bagaimana itu bekerja:
sumber