Sua tarefa é escrever um programa que produza a sequência exataProgramming Puzzles
(à direita da nova linha opcional), mas quando todos os espaços, tabulações e novas linhas são removidas, ela sai Code Golf
(à direita da nova linha opcional).
Sua contagem de bytes é a contagem do primeiro programa, com espaços ainda lá.
Notas
Os espaços
Code Golf
eProgramming Puzzles
serão removidos como parte da remoção, portanto, planeje adequadamente.Nas codificações em que 0x09, 0x0A e 0x20 não são tabulações, novas linhas ou espaços, respectivamente, esses caracteres serão removidos.
Se o seu código é
42 $@ rw$ @42
então isso deve gerar
Programming Puzzles
. Além disso, no mesmo idioma,42$@rw$@42
deve produzir
Code Golf
.
Isso é código-golfe , então o código mais curto em bytes vence! Boa sorte!
fonte
Code Golf
também será removido, e o que está dentroProgramming Puzzles
.Respostas:
Python 2 , 50 bytes
Experimente online!
Com todos os espaços removidos:
Experimente isso online!
Obrigado a Stephen S por 3 bytes e a Erik, o Outgolfer, por 1
fonte
" ">""
retornaTrue
, pois, lexicograficamente, um espaço é maior que a sequência vazia. No segundo caso,"">""
retornaFalse
, pois nada pode ser maior que ele próprio.True
eFalse
são realmente apenas1
e0
respectivamente, apenas nobool
tipo de dados em vez deint
oulong
. No primeiro caso, os espaços são preservados, portanto, o item no índice 1"Programming Puzzles"
, é retornado literalmente. No segundo caso, os espaços se foram, daí\x20
o item no índice 0"Code\x20Golf"
para preservar um espaço.Python 2 ,
4847 bytes-1 byte graças a Erik the Outgolfer
Experimente online!
Experimente online!
fonte
05AB1E , 15 bytes
Experimente online!
Explicação
fonte
C,
64625352 bytesExperimente Online!
Usa o fato de que as strings C terminam com um caractere nulo
fonte
CJam , 38 bytes
Experimente online! ou com espaços removidos
Explicação
Se os espaços estão no programa ou não, determina se a primeira string é verdadeira ou falsa.
fonte
:(
"Bncd\x19Fnke":)
é um código feliz (substitua\x19
).Geléia , 18 bytes
Experimente online!
Explicação
No programa, como está escrito, a primeira linha é uma função auxiliar que nunca é executada. A segunda linha (a última do programa) é o programa principal e é a representação compactada da sequência
"Programming Puzzles"
(que é impressa implicitamente).Se você remover a nova linha, tudo se tornará um programa grande.
“½ċṭ6Ỵ»
é a representação compactada da sequência"Code Golf"
.ḷ
avalia, mas ignora seu argumento da mão direita, deixando o mesmo valor de antes da execução; ele pode ser usado para avaliar funções para seus efeitos colaterais (algo que eu fiz antes), mas também pode ser usado, como aqui, para comentar efetivamente o código.Curiosamente, a lógica real aqui é mais curta que a entrada 05AB1E, mas o código como um todo sai mais tempo porque o compressor de string é menos bom em compactar essas strings em particular.
fonte
Geléia , 17 bytes
Experimente online!
Como funciona
Como na outra resposta Jelly,
Ñ1ɦ+£)G
e½ċṭ6Ỵ
codificar as cordas Programação Puzzles e Código Golf .“
inicia um literal de string e separa um string de outro, enquanto»
seleciona o tipo de literal (compactação baseada em dicionário), portanto, isso geraṂ
então leva o mínimo, produzindo o código Golf .No entanto, adicionando um espaço entre
½ċṭ6
eỴ
, obtemos uma segunda sequência completamente diferente, e o literal é avaliado comoComo o caird coinheringaahing é lexicograficamente maior que os Puzzles de programação ,
Ṃ
seleciona a primeira corda.fonte
“½ċṭ6Ỵ“Ñ1ɦ +£)G»Ṁ
Javascript,
464342 bytesfonte
\x20
na primeira cadeia por um espaço.;
?;
s às vezes não são necessários em JavaScript.\x20
por\40
para salvar um byte :-)Idioma Wolfram, 62 bytes
O espaço em
[[0 1]]
é multiplicação implícita, portanto é equivalente a[[0]]
. Sem espaço,01
é justo1
. As partes 0 e 1 desta expressão são as strings que queremos.Outra solução de validade questionável (44 bytes, 2 salvos por Kelly Lowder):
O
\.20
é substituído por um espaço imediatamente quando digitado em um ambiente Mathematica, portanto, não está claro se ele é removido junto com os outros espaços…fonte
\:0020
transformará em um espaço e, portanto, será removida, portanto, não tenho certeza se isso se qualifica. Também\.20
é mais curto. Por dois caracteres."Programming Puzzles"["Code"<>FromCharacterCode@32<>"Golf"][[01]]
vai funcionar.\.20
sugestão - como você achou que eu pensei que tinha limpado toda a documentação ...)\.20
erro de digitação. Parece funcionar apenas para códigos de caracteres de dois dígitos. Eu não acho que esteja na documentação.Excel - 56 bytes
Muito parecido com a maioria das outras respostas ... nada de especial aqui.
fonte
Haskell, 48 bytes
Define a função
f
que retorna a string correspondente.Para referência, a versão antiga é:
Haskell, 49/47 bytes
com espaços removidos
Duas correspondências de padrão simples.
(_)
corresponde a todos os padrões. Você pode melhorar a versão sem espaços em um byte, definindo o segundo padrão comof" "=
/f""=
, mas isso fornece um aviso "A correspondência de padrões é redundante".Solução alternativa com a mesma contagem de bytes:
fonte
Ohm ,
3332 bytesUsa a codificação CP437.
Experimente online! ou tente sem espaço em branco
Explicação
Com espaço em branco:
Sem espaço em branco:
fonte
Code Golf
ficou mais tempo quando comprimido. Eu acho que é por causa das capitais? De qualquer forma, ainda é mais curto do que escrevê-lo normalmente, porque não posso usar um espaço literal aqui.Japonês , 29 bytes
Com espaços:
Experimente online!
Sem espaços:
Experimente online!
Isso tira proveito do fato de que no Japt, um espaço fecha uma chamada de método. Com espaços, o código é aproximadamente equivalente a este código JavaScript:
Isso é avaliado como JavaScript e o resultado é enviado para STDOUT. Como a última expressão é
"Programming Puzzles"
, essa sequência é impressa.Sem espaços, o código é aproximadamente equivalente a:
(Se você ainda não descobriu, a
S
variável é um espaço único.) O.r()
método em uma string, se receber um argumento, remove todas as instâncias desse argumento da string. Como"Code Golf"
não contém"ProgrammingPuzzles"
, ele retorna"Code Golf"
inalterado, que é então enviado para STDOUT.fonte
Braquilog , 44 bytes
Experimente online!
Explicação
fonte
em ambos os lados para fixar :)Alice , 44 bytes
Experimente online!
Sem espaço em branco:
Experimente online!
Explicação
No primeiro programa, os dois espelhos
/
redirecionam o ponteiro de instruções para a segunda linha."selzzuP gnimmargorP"
empurra os pontos de código necessários em ordem de reverência,d
empurra a profundidade da pilha e&o
imprime quantos bytes.@
finaliza o programa.Sem o espaço em branco, o programa é todo em uma única linha. Nesse caso, o ponteiro de instruções não pode se mover no modo Ordinal; portanto, ele
/
se torna efetivamente não operacional (tecnicamente, o IP simplesmente não se move por uma etapa, o mesmo/
é executado novamente e o IP reflete novamente no modo Cardinal). ) Portanto, se retirarmos os do programa, fica assim:Para incluir o espaço
Code Golf
, usamos um ponto de exclamação e o diminuímost
. Depois que tivermos todos os pontos de código na pilha,#
pule o próximo comando, que é a segunda sequência inteira.d&o
depois imprime a pilha novamente e@
finaliza o programa.fonte
PHP, 44 bytes
operador ternário
PHP, 51 bytes
Comente
PHP, 57 bytes
interruptor de matriz
fonte
Pitão, 37 bytes
Experimente aqui.
Experimente aqui.
fonte
C #
88817063 bytesCom espaço em branco despojado:
Agradeço ao BrianJ por me mostrar como não há espaço entre um tipo de retorno de método e o nome do método, PeterTaylor por salvar
718 bytes e Patrick Huizinga por salvar 7 bytes.Mesmo método que todo mundo realmente,
tecnicamente isso pode ser considerado inválido porque o método não especifica um tipo de retorno para o método, mas deve haver um espaço em branco entre o tipo de retorno e o nome do método.fonte
@
, por isso, então você temvoid@a...
e evitar a "nenhum tipo de retorno" erro de compilação (também adiciona bytes, embora :().Length<1
salva um byte;\u0020
salva seis se contei corretamente; e você pode fazer uma resposta válida (e salvar alguns bytes ao mesmo tempo) enviando uma lambda em vez de uma função de nível superior.Func<string>a=()=>...
@
é usado principalmente se você precisar usar uma palavra reservada como nome de variável (o equivalente está[]
no VB.NET (e no MS SQL Server)).=>
vez dereturn
não precisar de espaços. (E mesmo se você usarreturn
, você podereturn(...)
).Lisp comum (SBCL), 52 bytes
Impressões
Programming Puzzles
Impressões
Code Golf
Ungolfed:
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
et
. Eu tive que terminar inequivocamente oformat
símbolo sem alterar comot
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".
fonte
,
é avaliada e emendada em" Não é,@
necessário para emendar?,
avalia a próxima expressão e inclui o resultado no modelo, enquanto,@
assume que a expressão será avaliada em uma lista e inclui diretamente o conteúdo dessa lista no modelo. Tradicionalmente, na comunidade lisp,,@
é chamada de "emenda", mas não tenho certeza de que seja a escolha mais óbvia. Vou tentar reformular um pouco.Java 8,
745048 bytesfonte
==
operador também deve funcionar,()=>""==""?"Code\u00A0Golf":"Programming Puzzles"
\u00A0
->\040
para uma economia de 2 bytes.Japonês , 32 bytes
Experimente online!
fonte
PowerShell , 56 bytes
Experimente online!
Bem básico, eu diria, mas faz o trabalho
fonte
R, 50 bytes
Eu acho que é o mesmo que esta resposta Javascript , e basicamente a mesma idéia que todas as outras.
fonte
> <> , 42 bytes
Com espaço em branco
Experimente online!
Sem espaço em branco
Experimente online!
fonte
dc , 50
Experimente online .
[ ]
define uma string -Z
mede seu comprimento. Se o comprimento for 19, ele conterá um espaço e a macro armazenada no registro m será chamada, que será impressaProgramming Puzzles
e encerrada. Caso contrário,Code Golf
é impresso.fonte
> <> ,
4745 bytesExperimente online!
Graças a randomra por -2 (dois inteligentes
!
para que eu possa usar apenas um>o<
.)O código grita "Flog! Flog! Flog!" e se assemelha a um peixe.
fonte
T-SQL,
96828167 bytesExperimente online | Sem espaços
Versão antiga (96 bytes):
fonte
iif(len(' x')=2
print
. Eu usei um em+
vez disso e funcionou.Perl 5 ,
4341 bytesExperimente online!
Usa o fato de
' '
verdadeiro em perl e''
falso. A$"
variável é configurada para um espaço por padrão.Obrigado a @NahuelFouilleul por remover dois bytes.
fonte
"Code$\"Golf"
é mais curto eCode.$".Golf
tambémGolfScript , 38 bytes
Experimente online!
fonte
Befunge , 76 bytes
Experimente online!
Não é a solução mais compacta, mas escrever código Befunge sem espaço em branco é bastante difícil.
No início, ele compara um caractere de espaço com 0. Se for maior, vai para a linha inferior. Caso contrário, o que acontece quando você substitui o espaço por nada, ele permanece na primeira linha.
fonte
,
s fazem?>:#,_
que poderia poupar-lhe um monte de bytes