Pekerjaan Anda cukup sederhana, menulis program yang mencetak Hello, world!
, bahwa ketika dipelintir membuat program yang mencetak Twister!
.
Bagaimana string dipelintir
Algoritma memutar sangat sederhana. Setiap kolom digeser ke bawah oleh indeksnya (col 0 bergerak turun 0, col 1 bergerak 1, ...). Pergeseran kolom terbungkus ke atas. Ini terlihat seperti ini:
a
ba
cba
----
cba
cb
c
Dengan segala sesuatu di bawah garis yang membungkus ke atas. Contoh nyata:
Original:
\\\\\\\\\\\\
............
............
............
Twisted:
\...\...\...
.\...\...\..
..\...\...\.
...\...\...\
(Contoh lebih lanjut dan twister dalam bahasa favorit Anda ada di sini )
Mencetak gol
Program Anda harus persegi panjang empuk. Ini adalah kode-golf sehingga jumlah byte terendah menang!
Aturan
- Program pertama Anda harus mencetak
Hello, world!
. Hanya satu baris tambahan yang dibolehkan. - Program pertama dan kedua Anda harus dalam bahasa yang sama.
- Program kedua Anda harus mencetak
Twister!
. Hanya satu baris tambahan yang dibolehkan. - Program Anda harus memiliki setidaknya 2 baris dan 2 kolom.
½
dan mengambil akar kuadrat dari sebuah angka. Yang mana dari keduanya yang harus dianggap sebagai baris baru untuk tantangan ini?Jawaban:
Jelly ,
333129 byteAsli
Cobalah online.
Bengkok
Cobalah online!
Bagaimana itu bekerja
Di setiap program, setiap baris mendefinisikan tautan. Yang terakhir adalah tautan utama, dan dieksekusi ketika program dimulai. Karena tidak ada referensi ke tautan pertama, itu hanya diabaikan.
Untuk kedua program,
“ɗ⁻%OḶ$“¡¦ḟṠ»
buat daftar['Hello, world!', 'Twister!']
, menggunakan kompresi kamus statis Jelly .Satu-satunya perbedaan antara kode asli dan kode twisted adalah karakter terakhir dari tautan utama.
Ḣ
memilih string pertama dari daftar, danṪ
memilih yang terakhir.sumber
Python 2, 59 byte
Memutar:
Pada dasarnya, letakkan
Twister!
data dalam indeks ganjil string dan kemudian berubah dari menghapus dua (padding) karakter pertama untuk menghapus setiap karakter lainnya sebagai gantinya.sumber
print " Hello, world!" [2::]
Fission ,
215162565350 byteInilah awalnya:
Cobalah online!
Ketika dipelintir:
Cobalah online!
Penjelasan
The
Hello, world!
kode cukup sederhana:D
memunculkan satu atom, turun ke bawah.\
(cermin) membelokkannya ke kolom kedua."Hello, world!"
mencetak string yang diperlukan.1
adalah portal. Ini memindahkan atom ke yang berikutnya1
dalam urutan membaca, mempertahankan arahnya (itu yang berikutnyar
).;
yang menghancurkan atom dan mengakhiri program.Aliran kontrol untuk
Twister!
kode sedikit lebih ... terpelintir ...D
menumbuhkan atom.\
membelokkannya ke kanan, ke dalam1
.1
. Atom mengenaio
yang hanya mengubah massanya, tetapi kita dapat mengabaikannya. Kode membungkus sehingga atom menyentuh sama1
lagi, melompati dua baris. Sekali lagi, kita dapat mengabaikanl
, atom membungkus dan mengenai1
lagi. Sekarang tidak ada lagi1
kode sehingga atom melompati semua jalan kembali ke1
atas.\
, sekarang turun lagi."Twister!"
mencetak kode yang diperlukan.1
teleport atom sekali lagi, melewati yang pertama;
, tetapi ada yang lain;
menunggu untuk menghentikan program.sumber
Pembelahan , 35 byte
Pendekatan fisi # 3 (# 4 menghitung yang saya edit dari posting pertama saya).
Cobalah online!
Cobalah online!
Penjelasan
Yang ini sebenarnya adalah solusi Fisi paling sederhana. Di kedua program ada dua titik masuk:
R
membuat atom yang berjalan kanan dan atom yangL
berjalan kiri. Dalam kedua kasus tersebut,;
menghancurkan salah satu dari mereka.Sekarang dalam
Hello, world!
program, atom pertama mencetak setengah string dengan"Hello, "
, lalu\
dan/
(yang merupakan cermin) membelokkan atom ke baris kedua ke kiri."world!"
(Baca ke arah atom yang bergerak) mencetak sisa string.L
sekarang menjadi no-op dan;
menghancurkan atom ini juga, mengakhiri program.The
Twister!
Program ini pada dasarnya sama tapi diputar 180 derajat. Kali ini,L
atom bertahan, dan mulai mencetak"Twist"
. The\
dan/
lagi membelokkan itu ke jalur lain, sekarang akan benar."er!
mencetak sisa string,R
adalah no-op dan;
mengakhiri program.sumber
Fission, 53
Cobalah online!
dan memutar:
Cobalah online!
sumber
Japt,
676157 byteDisimpan 6 byte berkat @JAtkin, 4 byte berkat @Ian
Memutar:
Uji online: Asli , Twisted
Bagaimana itu bekerja
sumber
Twister!
dengan mengganti spasi dengan.
."T.w.i.s.t.e.r.!. . . . . "k".(newline)"H.e.l.l.o.,. .w.o.r.l.d.!"k".
Python, 398
414 380 456byte *Berhasil memperbarui sehingga sesuai dengan aturan, tapi saya masih ragu untuk menyebut ini kompetitif. Karena baris yang dikomentari diperlukan untuk menjalankannya, saya telah memasukkannya dalam jumlah byte
Solusi ini tidak mengikuti aturan, karena akan mencetak pesan kesalahan selain output yang diizinkan.Saya hanya ingin melihat apakah ini bisa dilakukan dengan python. Bisa, tetapi tidak cantik.
Saat dipelintir menjadi
sumber
rint '
setiap baris.C (gcc) , 87 byte
Terpilin
Cobalah online!
Bengkok
Cobalah online!
sumber
Brainfuck,
467367285 byteTerpilin
Cobalah online!
Bengkok
Cobalah online!
sumber