Diberikan string persegi, hasilkan semua output untuk string pada setiap tahap pembukaan.
Tali harus membentangkan arah searah jarum jam seperempat putaran sekaligus.
Contohnya
Masukan :
A
Keluaran :
A
Catatan : Saya juga akan menerima input yang digandakan untuk kasus uji khusus ini hanya jika ini membantu mengurangi jumlah byte Anda.
Masukan :
DC
AB
Keluaran :
DC
AB
D
ABC
ABCD
Masukan :
GFE
HID
ABC
Keluaran :
GFE
HID
ABC
HG
IF
ABCDE
IH
ABCDEFG
I
ABCDEFGH
ABCDEFGHI
Masukan :
JIHG
KPOF
LMNE
ABCD
Keluaran :
JIHG
KPOF
LMNE
ABCD
LKJ
MPI
NOH
ABCDEFG
NML
OPK
ABCDEFGHIJ
ON
PM
ABCDEFGHIJKL
PO
ABCDEFGHIJKLMN
P
ABCDEFGHIJKLMNO
ABCDEFGHIJKLMNOP
Aturan
Ini adalah kode-golf sehingga kode terpendek dalam byte menang.
- Setiap format yang masuk akal dapat digunakan untuk I / O dengan asumsi itu konsisten.
- Spasi harus digunakan untuk mengisi garis atas output.
- Harus dapat menangani input semua karakter yang dapat dicetak (termasuk spasi:
\x20
-\x7e
):
! "# $% & '() * +, -. / 0123456789:;? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _` abcdefghijklmnopqrstuvwxyz {|} ~
- Ruang putih terkemuka / trailing diizinkan.
- Anda dapat mengasumsikan string akan selalu berbentuk kotak.
- Semua celah standar dilarang.
Inspirasi: Tuliskan sebuah program kuadrat yang menampilkan berapa kali ia telah "dibuka" .
["A","A"]
untuk"A"
, seperti program saya tidak (bukan["A"]
)? Tampaknya masuk akal bagi saya karena mereka hanya posisi awal dan akhir, dan Anda hanya mencoba membukanya sekali.Jawaban:
SOGL V0.12 ,
2120191817 byteCoba Di Sini! (
→
ditambahkan karena ini mengharapkan input pada stack)Penjelasan:
sumber
Python 2 ,
209 207 205 203 202 201 200196 byte-4 byte terima kasih kepada @Quelklef !
Cobalah online!
Python 2 ,
219 217 215 213 212 211207 byteCobalah online!
Yang pertama menampilkan sebagai daftar Strings, yang kedua menghasilkan sebagai ASCII-art.
sumber
[::-1][1:]
bisa[-2::-1]
, seperti dalam jawaban Lynn.Arang ,
4235 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Disimpan 7 byte kebanyakan dengan beralih dari array karakter ke string. Penjelasan:
Baca kotak input sebagai array string ke dalam variabel
q
.Meskipun string terakhir dalam array tidak kosong, hapus.
Cetak sisa array.
Putar sisa array dengan mengulangi setiap karakter dari string terakhir dan bergabung dengan
l
karakter th dari setiap string yang tersisa dalam array yang terbalik.Tambahkan string terakhir yang sebelumnya dihapus ke
u
, yang memiliki nilai terbuka, dan cetak.Keluarkan hasilnya dan bersihkan kanvas yang siap untuk iterasi berikutnya.
Perhatikan bahwa versi ini menampilkan unfurl akhir pada baris terpisah, jika ini tidak diinginkan maka untuk 38 byte:
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
←E⁺⟦⪫υω⟧⮌θ⮌κ
membalikkan susunan saat ini, menambahkan awal baris tidak terbentang, kemudian membalikkan karakter di setiap baris, lalu mencetak semuanya terbalik, sehingga menghasilkan hasil yang diinginkan.sumber
Rotate
danTrim
perintah meninggalkan kursor ...Haskell ,
127120 byteCobalah online!
Input adalah daftar baris, misalnya
["DC","AB"]
untuk kasus tes kedua, output daftar daftar baris:[["DC","AB"],[" D","ABC"],["ABCD"]]
. GunakanmapM (putStrLn . unlines)
untuk mencetak hasilnya dengan cantik.Sunting: Disimpan 7 byte dengan memperhatikan bahwa semakin pendek
transpose
saya menemukan beberapa saat berguna karena dapat dimodifikasi untuk membalikkan masing-masing secara langsung.sumber
05AB1E , 18 byte
Cobalah online!
Penjelasan
sumber
J, 62 byte
Cobalah online!
Saya yakin ini bisa banyak bermain golf. Ini mencetak spasi tambahan, tetapi hanya karena cara J memformat array yang terdapat dalam array yang di-output untuk memiliki bentuk yang sama.
Saya pikir begitu saya masuk dan berkomentar persis apa yang saya lakukan, saya mungkin mendapatkan ide yang lebih baik tentang cara bermain golf ini (setelah melakukannya sekarang, saya tidak benar-benar tahu ...). Untuk tujuan bermain golf, perlu dicatat
Penjelasan
Dalam ungolfing ini, saya akan membagi fungsi utama menjadi tiga.
Kami akan bekerja dengan test case kedua.
unfurl_reversed
Ini memberikan satu untaian terbuka sekali, tetapi secara terbalik. Semua ini dilakukan secara terbalik dan dalam urutan tertentu sehingga cara J secara otomatis memasang string dengan spasi agar sesuai dengan bentuk array yang ada di dalamnya akan memberikan jarak yang tepat.
|:@}:
adalah transpos dari pembatasan input|.@{:
adalah kebalikan dari ekor inputSaya pikir Anda dapat melihat apa yang ingin kami lakukan: kami ingin menambahkan kebalikan dari ekor ke bagian terakhir dari transpos dari kurung (itu seteguk, tetapi pada dasarnya melekat
CBA
pada akhirED
). Ini akan memberi kita satu langkah membuka, membalikkan.(}:@],{:@],[)
tidak hanya itu.Ini ditambahkan
CBA
keED
, lalu bergabung dengan array lainnya. Karena itu, output kami adalahwhitespace_filter
Pada dasarnya, tes ini untuk melihat apakah ada baris yang benar-benar spasi, dan menghapusnya jika benar. Itu tidak melakukan apa pun untuk iterasi pertama dari kasus uji.
Ini perlu (setidaknya sampai saya menemukan alternatif) karena kalau tidak kita akan akhirnya membuka spasi ke string output kami.
membabar
Unfurl pada dasarnya menggabungkan fungsi-fungsi lain dan kasus khusus input karakter tunggal.
Ketika kekuatan kata kerja (
^:
) diberikan kotak kosong (a:
), itu berlaku fungsi pada input sampai konvergen dan mengumpulkan hasil dalam array.(1 < #)
memeriksa apakah baris selalu lebih besar dari 1 (untuk input kasus khusus 1 baris).|."1
membalikkan setiap baris, sehingga membalikkan hasilwhitespace_filter @: unfurl
.sumber
Python 2 ,
143132 byteCobalah online!
Dalam setiap iterasi,
b
adalah “kepala” dari string (pertama n-1 baris), diputar 90 derajat: jikaa
adalah[" NML", " OPK", "ABCDEFGHIJ"]
kemudianb
adalah["ON", "PM", "KL"]
.Untuk membentangkan string sekali, kami menambahkan baris terakhir
b
kea[-1]
(memberi"ABCDEFGHIJKL"
) dan kemudian menghitung ulanga[:-1]
dengan menambahkan spasi ke sisa string dib
.Kami mengakhiri dengan mencoba keluar dari
b
ketika itu kosong.Python 2 , 132 byte
Cobalah online!
Gagasan yang sama, ditulis berbeda. Kami mengakhiri dengan mencoba
a.pop(-2)
ketikaa
hanya memiliki satu elemen.sumber
Perl 5 , 155 byte
Cobalah online!
Menyimpan beberapa byte tanpa benar-benar mengubah logika. Aliran di bawah ini pada dasarnya masih benar.
# Perl 5 , 163 byteCobalah online!
Bagaimana?
sumber