Common Lisp (SBCL), 52 byte
(format`,t"~[Programming Puzzles~;Code~@TGolf~]"0 1)
stampe Programming Puzzles
(format`,t"~[ProgrammingPuzzles~;Code~@TGolf~]"01)
stampe Code Golf
Ungolfed:
(format t "~[Programming Puzzles~;Code Golf~]" 0 1)
spiegazione:
Il trucco deriva fondamentalmente da come #'format
funziona in Common Lisp.
In CL, la maggior parte degli spazi bianchi può essere omessa a condizione che non vi siano ambiguità su dove i token iniziano o finiscono. Il primo trucco consisteva nel separare i simboli format
e t
. Ho dovuto terminare in modo inequivocabile il format
simbolo senza cambiare il modo in cui è t
stato interpretato. Fortunatamente, `in CL termina il token precedente prima che venga elaborato e ,
annulla l'effetto di` (`viene utilizzato per implementare il modello, dove l'espressione successiva che lo segue viene" quotata ", ma ogni sottoespressione con il prefisso a ,
viene valutata e il risultato incluso nel modello, quindi `, è quasi un no-op).
Il terzo argomento format
è la stringa del modello. format
è simile a printf in C, ma ha direttive di formattazione molto più potenti e usa ~ per indicarle invece di%. ~ [e ~] consentono di selezionare tra più opzioni per la stampa, con ~; separandoli. Viene fornito un argomento aggiuntivo per formattare l'indice numerico di cui si desidera stampare. Per garantire che "" in Code Golf sopravviva, ho usato la direttiva tabulazione ~ T, che viene utilizzata per inserire spazi bianchi, generalmente per allineare il testo in colonne. ~ @ T è una variazione che inserisce solo un determinato numero di spazi, il valore predefinito è 1.
Infine, ci sono due argomenti per formattare 0 e 1. Prima che lo spazio bianco venga rimosso, lo 0 viene utilizzato da ~ [~; ~] per selezionare "Puzzle di programmazione" e l'argomento formato aggiuntivo (il 1) viene eliminato (Sto non sono sicuro di quanto siano standard gli argomenti di formattazione extra, ma questo funziona su Steel Bank Common Lisp). Dopo aver rimosso gli spazi bianchi, esiste solo un argomento (01) che seleziona "Code Golf".
Code Golf
rimosso anche lo spazio in , che dire di quello inProgramming Puzzles
.