Common Lisp (SBCL), 52 bajty
(format`,t"~[Programming Puzzles~;Code~@TGolf~]"0 1)
Wydruki Programming Puzzles
(format`,t"~[ProgrammingPuzzles~;Code~@TGolf~]"01)
Wydruki Code Golf
Nie golfowany:
(format t "~[Programming Puzzles~;Code Golf~]" 0 1)
Wyjaśnienie:
Trik polega w zasadzie na tym, jak #'formatdziała Common Lisp.
W CL większość białych znaków można pominąć, pod warunkiem, że nie ma dwuznaczności co do tego, gdzie tokeny zaczynają się lub kończą. Pierwszą sztuczką było oddzielenie symboli formati t. Musiałem jednoznacznie zakończyć formatsymbol bez zmiany sposobu tinterpretacji. Na szczęście `w CL kończy poprzedni token, zanim zostanie przetworzony, i ,anuluje efekt` (`służy do implementacji szablonów, gdzie następne wyrażenie po nim zostaje„ cytowane ”, ale każde podwyrażenie poprzedzone znakiem, jest oceniane i wynik zawarty w szablonie, więc `, to prawie brak możliwości).
Trzecim argumentem formatjest ciąg szablonu. formatjest podobny do printf w C, ale ma znacznie potężniejsze dyrektywy formatujące i używa ~, aby je wskazać zamiast%. ~ [i ~] pozwalają wybierać spośród wielu opcji drukowania, za pomocą ~; rozdzielając je. Podany jest dodatkowy argument dotyczący formatu - którego indeks liczbowy chcesz wydrukować. Aby zapewnić przetrwanie „” w Code Golf, użyłem dyrektywy tabelarycznej ~ T, która służy do wstawiania białych znaków, ogólnie do wyrównywania tekstu w kolumnach. ~ @ T to odmiana, która po prostu wstawia określoną liczbę spacji, domyślnie 1.
Wreszcie istnieją dwa argumenty do sformatowania - 0 i 1. Przed usunięciem białych znaków ~ jest używane przez ~ [~; ~] do wybrania „Programowania łamigłówek”, a dodatkowy argument formatujący (1) jest usuwany (jestem Nie jestem pewien, jak standardowe jest usuwanie argumentów dodatkowego formatu, ale działa to na Common Bank Lisp w Steel Bank). Po usunięciu białych znaków jest tylko jeden argument (01), który zamiast tego wybiera „Code Golf”.
Code Golfrównież zostanie usunięta, a co z tą wProgramming Puzzles.