Tugas Anda adalah membuat program yang mencetak "Salam, Planet!" tepatnya ke konsol. Tampaknya cukup sederhana, bukan? Nah, inilah triknya. Kode harus berupa palindrome, artinya dibaca dari kanan ke kiri sama seperti di kiri ke kanan. Celah standar TIDAK diperbolehkan.
code-golf
restricted-source
hello-world
palindrome
lirtosiast
sumber
sumber
Hello, world!
danHello World!
satu-satunya output yang diizinkan untuk program halo-dunia .Jawaban:
/// , 37 byte
sumber
TI-BASIC, 67 byte
Ini berfungsi karena baris terakhir dari sebuah program ditampilkan di layar, sedangkan string pertama pada dasarnya diperlakukan sebagai komentar.
Setiap huruf kecil disimpan sebagai 2 byte, dan karakter yang tersisa adalah 1 byte. Jika saya membengkokkan aturan dan mencetak dalam huruf kapital semua, itu akan menjadi 41 byte :
sumber
e
dani
(angka) untuk mengurangi jumlah byte lebih lanjut?Saya tahu ini agak terlambat (dan agak rewel), tapi ...
> <> (Ikan),
474547 Bytes (benar-benar4345, jika saya tidak menggunakan arah acak)Jawaban-jawaban ini sedikit berbeda satu sama lain; ada kemungkinan salah satu arah dari kode dieksekusi.
Jadi, dengan "mencetak ke konsol", saya berasumsi Anda bermaksud mencetak ke stdout. Ini menimbulkan kesalahan; kesalahan dilemparkan ke stderr SETELAH string dicetak ke stdout.
Untuk membuktikan bahwa ini bekerja dua arah, saya menggunakan direktur "arah acak", "x". Fish adalah bahasa dua dimensi, jadi, tidak peduli ke arah mana sutradara menunjuk, kode itu masih (pada akhirnya) akan dieksekusi.
Dengan asumsi bahwa sutradara pertama menunjuk ke kanan, karakter dimuat ke "tumpukan" dalam urutan terbalik, kemudian kebalikan dari kebalikan (atau teks normal) dicetak.
Dengan asumsi bahwa kedua direktur menunjuk ke kiri, karakter, sekali lagi, dimuat ke "tumpukan" dalam urutan terbalik (karena kode memuatnya ke belakang di sini, arah adalah ke kiri), kemudian kebalikan dari kebalikan (atau teks normal) dicetak.
Jika direktur acak menunjuk ke atas atau ke bawah, ini tidak masalah - fish tahu untuk mengulang ke bagian bawah atau di luar kode, menunjuk kembali ke pengacak. Dengan cara ini, ia akan terus mengulang dengan pengacak sampai menunjuk ke dalam, menuju kode untuk dieksekusi.
The
!|o|!
bit melakukan berikut, dari kedua belah pihak:!
lewati instruksi berikutnya (akan selalu terlewati|
)|
adalah reflektor; itu menunjuk ke dalam kembali ke araho
.o
mengeluarkan item saat ini dari stack ke konsol sebagai karakter dan menghilangkannya dari stack.Jadi, pada dasarnya, ini adalah trik "dua cermin di kamar mandi yang ditekan bersama", di mana saya menghasilkan sampai saya tidak bisa lagi.
Sekarang menggunakan emoji kucing.>o<
mengalihkan output ke dalam tanpa batas, masih melempar kesalahan, tapi saya bisa lolos dengan tidak menggunakan lompatan ke refleksi.Ternyata saya benar pertama kali - upaya kedua bukan palindromik , tetapi reflektif .
Fish (tanpa mencetak ke stderr), 64 Bytes (ew)
Bung ini sedikit lebih lama.
Ini memiliki fungsi panah acak yang sama (untuk membuktikan itu berfungsi dua arah) dan tidak mencetak ke stderr.
Perbedaannya di sini jelas; Saya benar-benar mencetak setiap item dalam tumpukan, lalu mengakhiri eksekusi dengan
;
.Itu
!;
tidak segera mengakhiri eksekusi, seperti!
melompati item berikutnya (end exec, dalam kasus ini) dan berlanjut sampai menyentuh sisi lain, yang bertindak sebagai;!
, di mana ia mengakhiri eksekusi sebelum melewatkan apa pun.Ini mengikuti pola arah acak yang sama dengan jawaban yang lebih pendek.
sumber
Bubblegum , 38 byte
sumber
Macaroni 0,0.2 , 52 byte
Solusi yang tidak menggunakan komentar. (Sebagian besar karena Macaroni tidak memiliki komentar ...)
sumber
CJam, 41 byte
Terima kasih untuk Dennis untuk off tiga byte.
sumber
Foo, 39 byte
Cobalah online.
sumber
!tenalP ,sgniteerG"Greetings, Planet!
menghemat beberapa byte.JavaScript, 56 byte
Ini dapat berjalan di browser apa pun.
sumber
print/tnirp
denganalert/trela
, itu bekerja di mesin lain juga.alert`Greetings, Planet!`//`!tenalP ,sgniteerG`trela
adalah 52 byteGolfScript, 41 byte
Lihat bu, jangan-jangan! Cobalah online di Web GolfScript .
Bagian kedua dari kode sumber menyimpan string dalam string kedua.
akan dicetak
sumber
C ++, 129 byte
Mencoba melakukan ini tanpa komentar menuntun saya ke mimpi buruk preprosesor yang dalam dan gelap tanpa jalan keluar yang bisa saya lihat. Alih-alih, saya hanya bertujuan untuk membuatnya sesingkat mungkin.
sumber
Python 3, 57 byte
Saya memperbaiki masalah dengan kurung.
Python 2, 53 byte
Saya menggunakan keuntungan dari kurangnya tanda kurung dan spasi yang diperlukan dalam Python 2, tetapi tidak ada perbedaan besar.
sumber
Jelly, tidak bersaing
25 byte Jawaban ini tidak bersaing, karena tantangan mendahului pembuatan Jelly.
Dengar, tidak ada komentar! Cobalah online!
Bagaimana itu bekerja
sumber
Terjebak , 41 Bytes
Cukup mirip dengan jawaban CJam, kecuali di Terjebak jika perintah cetak dikeluarkan, pencetakan tumpukan otomatis ditekan.
sumber
Mathematica, 52 byte
Juga menghasilkan
Null "!tenalP ,sgniteerG"[tnirP]
yang tidak bisa dicetak.sumber
Echo
div10.3
.Fission ,
4543 byteTerima kasih kepada jimmy23013 untuk menghemat 2 byte.
Cobalah online!
R
menginisialisasi atom yang bergerak ke kanan."
matikan mode string yang hanya mencetak string yang diinginkan ke STDOUT sebelum memukul;
, yang menghancurkan atom dan mengakhiri program. Paruh pertama tidak pernah dieksekusi.sumber
05AB1E , 16 byte
Kode:
Penjelasan:
Cobalah online!
sumber
STATA, 52 byte
di "Greetings, Planet!"//"!tenalP ,sgniteerG" id
Versi yang sedikit lebih panjang (53 byte) yang tidak menggunakan komentar adalah:
#d [something]
mengubah pembatas (awalnya carriage return) menjadi;
kecuali [sesuatu] adalahcr
, jadi perintah pertama mengubah pembatas;
, yang kedua mencetak string, dan yang ketiga (yang berlanjut sampai akhir) tampaknya tidak ada, meskipun saya tidak punya tahu kenapa. Saya akan menduga bahwa ini akan menimbulkan kesalahan (perintah tidak dikenal "! TenalP, sgniteerG" atau sesuatu), tetapi ternyata tidak.sumber
Japt , 29 byte
Bahasa pemrograman ini dibuat setelah pertanyaan diposting, tetapi tidak dibuat untuk pertanyaan ini.
Cobalah online!
Masing
?
- masing adalah karakter Unicode yang tidak dapat dicetak: U + 0082, U + 000F, U + 000F, dan U + 0082, masing-masing.Fakta menyenangkan: Jika Japt diterbitkan sebulan lebih cepat, itu akan memenangkan tantangan ini secara sah.
sumber
APL, 41 byte
Di APL, nilai terakhir dicetak dan karakter lampu (⍝) memulai komentar.
sumber
GolfScript , 41 byte
Cobalah online!
sumber
TCL, 80 Bytes
PENJELASAN: TCL mengeksekusi proc global
unknown
ketika menemukan panggilan ke perintah yang tidak ditentukan, baris pertama mendefinisikan ulang proc itu menjadi program "hello world" yang sederhana.Aturan mengutip TCL cukup halus, tanda kurung terbuka memulai kata yang dikutip yang meluas ke tanda kurung tutup yang cocok berikutnya , memungkinkan kata-kata bertingkat yang dikutip. Kawat gigi diperlakukan sebagai karakter normal. lima kata:
}"!dlroW olleH"
,stup{
,sgra
,nwonknu
dancorp
. Tidak ada perintah yang bernama yang}"!dlroW olleH"
didefinisikan, jadiundefined
proc dari baris pertama dipanggil sebagai gantinya.Pertanyaan serupa telah diposting di StackOverflow of kuno; yang sejak itu ditutup dan dihapus. Saya menggunakan solusi saya sebagai lidah di sampel TCL pipi dalam jawaban ini , dan sekarang saya mendapatkan komentar meminta penjelasan, jadi saya membuat ulang jawaban saya di sini.
sumber
Tong , 41 byte
Cobalah online!
sumber
Vitsy , 41 Bytes
Bahasa pemrograman ini dibuat setelah pertanyaan diposting, tetapi tidak dibuat untuk pertanyaan ini.
The
Z
karakter output segala sesuatu di tumpukan ke stdout.Cobalah online!
sumber
Membatalkan 98 - 49 byte
Kode di atas berisi dua karakter yang tidak patut dicetak dengan kode 17 (kontrol perangkat 1) diwakili oleh
<DC1>
.sumber
MSM , 73 byte
Paruh pertama tepat sebelum tengah
,
membangun string salam terbalik termasuk tambahanG
di bagian paling kanan. Bagian tengah,
menjatuhkannya dan sisanya adalah program "Halo / Ucapan / apa pun" kanonik. Karakter tambahan di kedua ujung diperlukan, karena pesan berisi a,
. Yang kiri dieksekusi dan menjatuhkans
. Keduanya,
dans
membutuhkan pengganti untuk titik-titik konkatasi kiri, makaG
s. Di,
sebelah kanan tidak dieksekusi, tetapi membangun ke string terakhir.sumber
CoffeeScript, 53 byte
Mirip dengan Ruby dan Lua dan hampir semua varian di sini.
sumber
Ruby, 43 byte
sumber
Bash,
5248 byteJuga bekerja di ksh, zsh, yash, dash. Tapi bukan tcsh.
sumber
Lua, 52 Bytes
Di terminal Lua, hanya 44 byte dengan
sumber
=
di terminal, jadi itu adalah 2 byte di sana. Saya pikir itu ada pada tahun 2015, tidak yakin ya.Bima Sakti 1.5.10 ,
434139 bytePenjelasan
Pemakaian
sumber