Lisp comum (SBCL), 52 bytes
(format`,t"~[Programming Puzzles~;Code~@TGolf~]"0 1)
Impressões Programming Puzzles
(format`,t"~[ProgrammingPuzzles~;Code~@TGolf~]"01)
Impressões Code Golf
Ungolfed:
(format t "~[Programming Puzzles~;Code Golf~]" 0 1)
Explicação:
O truque vem basicamente de como #'format
funciona o Common Lisp.
No CL, a maioria dos espaços em branco pode ser omitida, desde que não haja ambiguidade sobre onde os tokens começam ou terminam. O primeiro truque foi separar os símbolos format
e t
. Eu tive que terminar inequivocamente o format
símbolo sem alterar como t
foi interpretado. Felizmente, `no CL termina o token anterior antes de ser processado e ,
cancela o efeito de` (`é usado para implementar o modelo, onde a próxima expressão a seguir é" citada ", mas qualquer subexpressão prefixada com a ,
é avaliada e o resultado incluído no modelo, então `, é quase um no-op).
O terceiro argumento para format
é a sequência do modelo. format
é semelhante ao printf em C, mas possui diretivas de formatação muito mais poderosas e usa ~ para indicá-las em vez de%. ~ [e ~] permitem selecionar entre várias opções para impressão, com ~; separando-os. Um argumento adicional é fornecido para formatar - o índice numérico do qual você deseja imprimir. Para garantir que o "" no Code Golf sobreviva, usei a diretiva de tabulação ~ T, usada para inserir espaços em branco, geralmente para alinhar o texto em colunas. ~ @ T é uma variação que apenas insere um determinado número de espaços, assumindo o padrão 1.
Finalmente, existem dois argumentos para formatar 0 e 1. Antes de remover o espaço em branco, o 0 é usado por ~ [~; ~] para selecionar "Quebra-cabeças de Programação" e o argumento de formato extra (o 1) é descartado (eu estou não tenho certeza do quão padrão é o descarte de argumentos de formato extra, mas isso funciona no Steel Bank Common Lisp). Após a remoção do espaço em branco, existe apenas um argumento (01) que seleciona "Code Golf".
Code Golf
também será removido, e o que está dentroProgramming Puzzles
.