Common Lisp (SBCL), 52 byte
(format`,t"~[Programming Puzzles~;Code~@TGolf~]"0 1)
Cetakan Programming Puzzles
(format`,t"~[ProgrammingPuzzles~;Code~@TGolf~]"01)
Cetakan Code Golf
Tidak Terkumpul:
(format t "~[Programming Puzzles~;Code Golf~]" 0 1)
Penjelasan:
Caranya pada dasarnya berasal dari cara #'format
kerjanya di Common Lisp.
Dalam CL, sebagian besar spasi putih dapat dihilangkan asalkan tidak ada ambiguitas tentang di mana token mulai atau berakhir. Trik pertama adalah memisahkan simbol format
dan t
. Saya harus mengakhiri format
simbol itu tanpa mengubah cara t
menafsirkannya. Untungnya, `di CL mengakhiri token sebelumnya sebelum diproses, dan ,
membatalkan efek` (`digunakan untuk mengimplementasikan templating, di mana ekspresi selanjutnya yang mengikuti" dikutip ", tetapi setiap sub-ekspresi yang diawali dengan a ,
dievaluasi dan hasilnya termasuk dalam templat, jadi `, hampir tidak ada op).
Argumen ketiga format
adalah string template. format
mirip dengan printf dalam C, tetapi memiliki arahan pemformatan yang lebih kuat dan gunakan ~ untuk menunjukkannya alih-alih%. ~ [dan ~] memungkinkan Anda memilih di antara beberapa opsi untuk dicetak, dengan ~; memisahkan mereka. Argumen tambahan disediakan untuk memformat- indeks numerik yang ingin Anda cetak. Untuk memastikan bahwa "" dalam Code Golf bertahan, saya menggunakan arahan tabulasi ~ T, yang digunakan untuk menyisipkan spasi putih, umumnya untuk menyelaraskan teks ke dalam kolom. ~ @ T adalah variasi yang hanya menyisipkan jumlah ruang tertentu, default ke 1.
Akhirnya, ada dua argumen untuk format- 0 dan 1. Sebelum spasi putih dihapus, 0 digunakan oleh ~ [~; ~] untuk memilih "Programming Puzzles" dan argumen format tambahan (angka 1) dihapus (saya tidak yakin bagaimana standar menjatuhkan argumen format ekstra, tapi ini berfungsi pada Steel Bank Common Lisp). Setelah spasi dihapus, hanya ada satu argumen (01) yang memilih "Code Golf" sebagai gantinya.
Code Golf
juga akan dihapus, bagaimana dengan yang ada diProgramming Puzzles
.