Você está encarregado de escrever dois programas. O programa A não deve imprimir nada em todas as entradas, exceto quando o programa B é inserido, caso em que deve ser impresso 1
. O programa B deve imprimir 1
em todas as entradas, exceto quando o programa A for inserido, caso em que não deverá imprimir nada.
Pontuação:
- +1 para cada personagem dos dois programas.
- Menor pontuação ganha.
Respostas:
GTB , 25
Executado a partir de uma calculadora TI-84
Programa
A
Programa
B
Explicação
`_
Insira uma string@_eq;"
Verifique se é igual ao código-fonte (#
é automaticamente removido com letras minúsculas)$w;&
Nesse caso, exiba 1 (caso contrário, nada) [B
pois é$#w;&
- se não, exiba 1 (caso contrário, nada)]fonte
Bash - 32 caracteres
Script A - 16 caracteres
Script B - 16 caracteres
Uso
fonte
Ruby, 54
UMA
B
exemplos:
fonte
J (62)
Desde que você não proibiu isso ...
Armazene os programas como
A
eB
respectivamente.Programa A (30):
Programa B (32):
Como funciona (o Programa B, A é semelhante):
1!:1[3
: leia stdin1!:1<'A'
: ler arquivoA
-:
: veja se são iguais-.
: negar o resultado#~
: replica o resultado por si só (portanto,1
resulta em um1
e0
resulta em zero0
s, ou seja, nada)echo
: resultadoexit
: exit (o intérprete J não sai por padrão quando chega ao final do arquivo)fonte
Haskell - SEM fonte de carregamento - 478
644caracteresIsso pressupõe que getContents SEMPRE termina com uma nova linha e, portanto, elimina o caractere final sem verificar, porque não tenho vontade de escapar dele
UMA
B
Funciona como uma solução padrão, mas trocando - por * para obter o outro programa (evitando esses caracteres em outro lugar).
O teste a seguir é impresso conforme o esperado (substituindo main = interact $ por a = eb =)
-
fonte
Python 2.7 - 82
Arquivo A (literalmente nomeado apenas
a
):Arquivo B (literalmente nomeado apenas
b
):fonte
.py
- isso funciona?python a
.touch a
, criará um arquivo vazio se você tiver permissões. Para o divertimento extra cruel que você mesmo pode fazertouch \~
o que cria um arquivo chamado com um único til (~
) - depois ver como alguém foolhardedly tenta removê-lo;)Ruby, 166 caracteres, sem fonte de leitura
UMA:
B:
Verifique se o editor de texto não salva com uma nova linha à direita.
Uso (exemplo):
Cada programa constrói a fonte do outro programa usando um HEREdoc e transformações de string e depois compara o resultado com a entrada.
fonte
p
é um método ruby interno que imprime os argumentos passados para ele e depois retorna esses argumentos, tornando-o útil para resultados com golfe. Quando chamado sem argumentos, ele retorna nulo. O argumento togets
é um delimitador, portanto, a passagemp
resulta em um delimitador nulo, o que significa que ele lê STDIN até chegar ao EOF. A expressão heredoc é<<2
, portanto, termina em (e não inclui) os 2 no final do arquivo.2
como delimitador de heredoc é um pouco tradicional de ofuscação. Pode ser quase qualquer string.Haskell - 138
Não é realmente uma boa resposta, mas queria que os dois programas usassem a mesma fonte. Poderia salvar alguns caracteres renomeando o arquivo, mas isso não será uma solução vencedora, então não acho que valha a pena.
Compile esta fonte como ambos
A
eB
.Teste:
fonte
A
e copiarA
paraB
?Node.js - 142 caracteres
Script
|
(também conhecido como Script A) - 80 caracteresScript
&
(também conhecido como Script B) - 62 caracteresUso
Descrição
O Script B lê o conteúdo do Script A e o avalia após trocar os nomes dos arquivos e o
and
operador para umor
.Eu nomeei os arquivos
&
e,|
assim, posso executar uma única substituição no Script B.fonte
Python 3 - 102 caracteres
Imprime 1 se a entrada for igual ao programa 2, caso contrário nada:
Imprime 1 se a entrada não for igual ao programa 1, caso contrário, nada:
fonte
bash / grep - 59 caracteres
51 caracteres se contarmos apenas a string do programa real.
fonte
R (62 caracteres)
produz:
Meta comentário: R é relativamente ruim no código de golfe, pois não há atalho para
function
...fonte