Neste desafio, você deve escrever um programa ou função, que aceita uma string como entrada e gera um dos dois valores possíveis. Vamos chamar um desses valores de verdade e um falso . Eles não precisam realmente ser truthy ou Falsas . Para que uma resposta seja válida, ela deve atender a quatro critérios adicionais
Quando você passa seu programa para ele, ele gera o valor verdadeiro .
Se você passar seu programa como entrada para qualquer resposta mais antiga, ele deve gerar a saída de verdade (do programa para o qual você está passando).
Se você passar uma resposta antiga para sua resposta como entrada, ela deve gerar a saída falsy (do seu programa).
Deve haver um número infinito de strings que avaliam a saída verdadeira em todas as respostas do desafio (incluindo sua nova resposta).
O que isso fará é criar lentamente uma cadeia de respostas, cada uma das quais pode determinar se outros programas na cadeia vêm antes ou depois dela.
O objetivo deste desafio é criar uma lista de restrições de origem que são aplicadas às respostas sucessivas, tornando cada uma mais desafiadora que a anterior.
Exemplo
Uma cadeia (escrita em Haskell) pode começar:
f _ = True
Como não existem programas mais antigos, os critérios não se aplicam a essa resposta, ela precisa apenas gerar um dos dois valores possíveis; nesse caso, sempre gera True
.
Depois disso, pode ser a resposta:
f x=or$zipWith(==)x$tail x
O que afirma que há um caractere duas vezes seguidas em algum lugar da string. A primeira resposta não possui essa propriedade, enquanto a segunda possui ( ==
). Portanto, esta é uma próxima resposta válida.
Regras especiais
Você pode usar qualquer idioma que desejar (que tenha uma implementação disponível gratuitamente) quantas vezes desejar.
Se você foi a última pessoa a responder, aguarde pelo menos 7 dias antes de postar uma nova resposta.
Seu programa pode não ler sua própria fonte.
Como a 4ª regra é extremamente difícil de verificar se há funções criptográficas envolvidas, essas funções não são permitidas.
Critério de pontuação
Cada vez que você adiciona uma resposta, obtém tantos pontos quanto o seu lugar na cadeia. Por exemplo, a 5ª resposta ganharia 5 pontos no escritor. O objetivo é conseguir o máximo de pontos possível. A última resposta marcará seu respondedor -∞ pontos. Provavelmente será mais divertido se você tentar maximizar sua própria pontuação em vez de "vencer" o desafio. Não aceitarei uma resposta.
Como isso é um encadeamento de respostas, convém classificar por
fonte
Respostas:
14. Conjunto X86 (gcc 6.3), 324 bytes
Experimente em ideone!
Nota: este irá devolver um erro de execução porque o código de saída não é zero. Executar isso no editor de ideone exibirá toda a saída padrão, independentemente da conclusão do programa.
"->Hi, Retina!"
"Bye Retina!"
Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.Para respostas futuras:
.
.->
.Hi, Retina!
."
.fonte
a
. Este programa contém uma
.9. Retina , 16 bytes
Experimente online!
Se você quiser experimentar seu próprio programa, basta anexá-lo ao campo de entrada, separado por dois feeds de linha. (Se o seu programa contiver dois feeds de linha, você precisará alterar o separador entre todos os programas e no cabeçalho TIO.)
Satisfaz:
.
e
a
>
caractere->
.Hi, Retina!
.Desculpe, mas você meio que me forçou a ficar com 16 ...
Sem requisitos redundantes:
.
->
.Hi, Retina!
.Explicação
Começar com
.
está bom, significa apenas que suprimimos a saída implícita de Retina (desde que a primeira linha tenha uma configuração, mas eu não queria um programa de duas linhas). Isso significa que precisamos de uma saída explícita, mas a opção é>
: estamos com sorte. A-
lata pode ir na frente porque não faz nada.Agora podemos acessar o próprio programa. A coisa mais simples a fazer é combinar uma string literal. Isso é garantido para aparecer em nosso programa, podemos garantir facilmente que ele não faz parte de nenhum programa existente e nos fornece um número como resultado. No entanto, ele poderia retornar um número maior que 1 (portanto, mais de dois valores diferentes). Evitamos isso com o
0
-limit, que apenas analisa a primeira correspondência e conta que, se existir. Portanto, isso0
garante que a saída seja apenas sempre0
ou1
(dependendo se a entrada contém a cadeia literal).Quanto à string literal ... bem, ainda precisamos incluir an
e
ea
... e precisamos que a string tenha pelo menos 11 caracteres, para que correspondamos aos requisitos de comprimento (chegando a um quadrado uniforme).Hi, Retina!
passa a satisfazer esses requisitos.fonte
13. Perl 5 , 64 bytes
Experimente online!
Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.Resumo para respostas futuras:
.
.->
.Hi, Retina!
."
.Script Ruby de verificação
fonte
a
. Este programa contém uma
.25, oitava , 196 bytes
Novo requisito: para evitar a discussão de guias versus espaços, as guias não podem mais ser usadas para indentação. Cada linha ainda precisa de uma guia, mas não pode ser o primeiro caractere da linha.
Verifique todos os programas online!
Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
.+
.!"#$.[\]
e o ponto de código do segundo caractere é menor que 60.Henry Jams?
como uma substring contínua.~
.C
Para respostas futuras:
.
, e também o 21º (regra palindrômica)."
, e o décimo segundo caractere (regra palindrômica).',1;6
e a guia).~
.->
,Hi, Retina!
eHenry Jams?
.|
,+
eC
..
e 2"
na primeira linha e!
na entradaHi, Retina!
. Esses caracteres não podem ser usados em nenhum outro lugar, além de nenhum uso de#$[\]
.Explicação:
Na verdade, era um pouco difícil manter isso em 196 bytes, pois agora há muitos bytes obrigatórios em cada linha.
A primeira linha é simplesmente um escalar que não é gerado, seguido por um comentário. A segunda linha é uma função anônima que recebe uma string
x
como entrada e faz as seguintes operações:É uma sorte que a operação de curto-circuito
&&
tenha precedência&
e que1&&find
não exija parênteses. Caso contrário, eu não conseguiria jogar isso até 196 bytes.fonte
5. Python 3 , 64 bytes
Experimente online! Verifica se o comprimento da entrada é um quadrado perfeito.
Isso havia sido atualizado quando 18 respostas estavam presentes para apoiar a entrada de várias linhas.
A atualização não prejudica a cadeia.
Satisfaz:
.
e
fonte
11. JavaScript (ES6), 36 bytes
Experimente online!
Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.Para respostas futuras:
.
.->
.Hi, Retina!
."
.fonte
23, Haskell alfabetizado , 196 bytes
Novo requisito: o recuo é excelente; portanto, cada linha precisa conter pelo menos um caractere de tabulação.
Experimente online!
Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
.+
.!"#$.[\]
e o ponto de código do segundo caractere é menor que 60.Henry Jams?
como uma substring contínua.~
.C
Para respostas futuras:
.
, e também o 21º (regra palindrômica)."
, e o décimo segundo caractere (regra palindrômica).',1;6
e a guia).~
.->
.Hi, Retina!
eHenry Jams?
.|
,+
eC
..
e 2"
na primeira linha e!
na entradaHi, Retina!
. Esses caracteres não podem ser usados em nenhum outro lugar, além de nenhum uso de#$[\]
.fonte
27. GolfScript , 144 bytes
Experimente online!
Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
.+
.!"#$.[\]
e o ponto de código do segundo caractere é menor que 60.Henry Jams?
como uma substring contínua.~
.C
Para respostas futuras:
.␣␣␣␣␣␣␣␣"␣"␣␣␣␣␣␣␣␣.
(você é livre para preencher os ␣s).',16;
, ou uma guia ou um de\x04\x0e\x13\x18\x1d
.->
,Hi, Retina!
eHenry Jams?
.|
,+
eC
.!".#$[\]
são proibidos, exceto onde necessário:!
emHi, Retina!
e os dois.
e dois"
na primeira linha são permitidos.tab
, (qualquer que seja) ,~
.fonte
12. V , 36 bytes
Experimente online!
Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.Para respostas futuras:
.
.->
.Hi, Retina!
."
.fonte
21. Alphuck , 676 bytes
Surpreendentemente, a maior parte do código não é preenchida.
Experimente online!
Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
.+
.!"#$.[\]
e o ponto de código do segundo caractere é menor que 60.Henry Jams?
como uma substring contínua.~
.Para respostas futuras:
.
, e também o 21º (regra palindrômica)."
, e o décimo segundo caractere (regra palindrômica).',1;6
e a guia).~
.->
.Hi, Retina!
eHenry Jams?
.|
e+
..
e 2"
na primeira linha e!
na entradaHi, Retina!
. Esses caracteres não podem ser usados em nenhum outro lugar, além de nenhum uso de#$[\]
.fonte
26. Brainfuck auto-modificável (SMBF), 256 bytes
O terceiro ao último caractere deve ser uma guia.
Imprime
\x00
para verdade e saídas\x00\x01
para falsey. Sempre termina com um erro devido a um suporte incomparável. Isso impede que qualquer entrada seja executada dinamicamente.Este programa funciona apenas no interpretador Python . NÃO FUNCIONA NO TIO. Isso ocorre porque o intérprete Python EOF é NUL.
Para usar o interpretador Python, cole esse código na linha em que
data
está definido. Isso precisava ser feito, porque o TIO não tem uma maneira fácil de digitar ou inserir bytes NUL; portanto, eu ainda uso o Ideone. Em seguida, remova o comentáriosys.stdin = MySTDIN("<[.<]")
e substitua a entrada personalizada por qualquer entrada em que você esteja testando.Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
.+
.!"#$.[\]
e o ponto de código do segundo caractere é menor que 60.Henry Jams?
como uma substring contínua.~
.C
Para respostas futuras:
.
, e também o 21º (regra palindrômica)."
, e o décimo segundo caractere (regra palindrômica).',1;6
e a guia).~
.->
,Hi, Retina!
eHenry Jams?
.|
,+
eC
..
e 2"
na primeira linha e!
na entradaHi, Retina!
. Esses caracteres não podem ser usados em nenhum outro lugar, além de nenhum uso de#$[\]
.fonte
28. Haskell alfabético , 256 bytes
Experimente online!
Test Driver
Satisfaz
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
.+
.!"#$.[\]
e o ponto de código do segundo caractere é menor que 60.Henry Jams?
como uma substring contínua.~
.C
>
no código e as chaves angulares devem ser equilibradasPara respostas futuras:
.␣␣␣␣␣␣␣␣"␣"␣␣␣␣␣␣␣␣.
(você é livre para preencher os ␣s).',16;
, ou uma guia ou um de\x04\x0e\x13\x18\x1d
.->
,Hi, Retina!
eHenry Jams?
.|
,+
eC
.!".
são proibidos, exceto onde necessário:!
emHi, Retina!
e os dois.
e dois"
na primeira linha são permitidos.#$[\]
pode não aparecer no programa.tab
, (qualquer que seja) ,~
.fonte
1
bem quando descomento essa linha (embora possa usar um; echo
porque não há nova linha na saída)29. PHP com
-r
256 bytesNão poder
$
fazer isso tornou isso bastante complicado, na minha solução original eu não entendi a regra, mas acho que tenho tudo coberto agora. Eu usei caracteres de alto byte~
eeval
para solucionar a falta de variáveis decentes para o PHP. Eu quase fiz o número mínimo de pontos de código exclusivos 96, mas achei que poderia dificultar um pouco demais alguns idiomas.Aqui está um despejo hexadecimal reversível para verificação também.
Experimente online!
Driver de teste
Satisfaz
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
.+
.!"#$.[\]
e o ponto de código do segundo caractere é menor que 60.Henry Jams?
como uma substring contínua.~
.C
>
no código e as chaves angulares devem ser equilibradas.Para respostas futuras:
.␣␣␣␣␣␣␣␣"␣"␣␣␣␣␣␣␣␣.
(você é livre para preencher os ␣s).',16;
, ou uma guia ou um de\x04\x0e\x13\x18\x1d
.->
,Hi, Retina!
eHenry Jams?
.|
,+
eC
.!".
são proibidos, exceto onde necessário:!
emHi, Retina!
e os dois.
e dois"
na primeira linha são permitidos.#$[\]
pode não aparecer no programa.tab
, (qualquer que seja) ,~
.fonte
30. > <> com
-v 0 -v 0
324 bytes1
é verdade, cadeia vazia é falseyExperimente online!
Satisfaz
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
.+
.!"#$.[\]
e o ponto de código do segundo caractere é menor que 60.Henry Jams?
como uma substring contínua.~
.C
>
no código e as chaves angulares devem ser equilibradas.Para respostas futuras:
.␣␣␣␣␣␣␣␣"␣"␣␣␣␣␣␣␣␣.
(você é livre para preencher os ␣s).',16;
, ou uma guia ou um de\x04\x0e\x13\x18\x1d
.->
,Hi, Retina!
eHenry Jams?
.|
,+
eC
.!".
são proibidos, exceto onde necessário:!
emHi, Retina!
e os dois.
e dois"
na primeira linha são permitidos.#$[\]
pode não aparecer no programa.tab
, (qualquer que seja) ,~
.fonte
1. Adicione ++ , 7 bytes
Experimente online!
É melhor adicionar o Add ++ antes que as coisas comecem a ficar difíceis. Isso é simplesmente uma tradução do primeiro exemplo para o Add ++.
D,f,@,1
define uma função que, independentemente do argumento fornecido, retorna1
.fonte
4. Empilhados , 10 bytes
Experimente online!
Verifica se a duração do programa é uniforme. Função anônima que retorna
1
para entradas "verdadeiras" e0
para entradas "falsas".Satisfaz:
.
e
fonte
f out
pelo que você deseja testar. Envolto em aspas simples, escapar uma única citação dobrando-lo24, SNOBOL4 (CSNOBOL4) , 256 bytes
Experimente online!
Imprime
1
para verdade e não produz nada para falsey.Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
.+
.!"#$.[\]
e o ponto de código do segundo caractere é menor que 60.Henry Jams?
como uma substring contínua.~
.C
Para respostas futuras:
.
, e também o 21º (regra palindrômica)."
, e o décimo segundo caractere (regra palindrômica).',1;6
e a guia).~
.->
,Hi, Retina!
eHenry Jams?
.|
,+
eC
..
e 2"
na primeira linha e!
na entradaHi, Retina!
. Esses caracteres não podem ser usados em nenhum outro lugar, além de nenhum uso de#$[\]
.fonte
2. Triangularidade , 17 bytes
Experimente online!
Verifica se o primeiro caractere é um ponto (
.
).fonte
.3
ou similar iria trabalhar8. R , 64 bytes
Experimente online!
Satisfaz:
.
e
a
>
caractere->
em uma de suas linhas.fonte
10. Somme , 64 bytes
Experimente online!
Verifique online!
Satisfaz:
.
e
a
>
caractere->
.Hi, Retina!
.Para respostas futuras:
.
->
.Hi, Retina!
.fonte
7. Sussurros , 66 bytes
Experimente online!
Saídas
True
ouFalse
. Observe a nova linha à direita.Satisfaz:
.
e
a
>
caracterefonte
∈
é um caractere de vários bytes e acredito que o envio do python esteja contando bytes.3. Gelatina , 5 bytes
Experimente online!
Verifica se a entrada contém um
e
caractere. Mudou de”
parae
porque isso parecia injusto para idiomas sem esse personagem. E, para verificar, aqui está um hexdump:Satisfaz:
.
e
fonte
18. Python 3 , 144 bytes
Experimente online!
Saída
True
se a entrada tiver pelo menos 28 linhas,False
caso contrário.Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
.+
.Para respostas futuras:
.
.->
.Hi, Retina!
."
, assim como o décimo segundo caractere (regra palíndrica).?
.|
.+
.fonte
16: Quarterstaff , 64
1 é verdade,
Experimente online!
a indentação não faz nada, a propósito.
Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
Para respostas futuras:
.
.->
.Hi, Retina!
."
, assim como o décimo segundo caractere (regra palíndrica).?
.|
fonte
a
, isto é devido à maneira como pyth recebe entrada. Parece que o OP cometeu um erro ao escrever ou analisar seu próprio código. Duas respostas anteriores também têm esse problema.15. Python 3, 64 bytes
Experimente online!
Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.Para respostas futuras:
.
.->
.Hi, Retina!
."
.?
.fonte
31. Oitava , 324 bytes
Novo requisito: todos os ASCII imprimíveis que não são proibidos anteriormente devem fazer parte do código. A lista completa é a seguinte:
!"%&'()*+,-./0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz{|}~
.Experimente online!
e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
.+
.!"#$.[\]
e o ponto de código do segundo caractere é menor que 60.Henry Jams?
como uma substring contínua.~
.C
>
no código e as chaves angulares devem ser equilibradas.!"%&'()*+,-./0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz{|}~
Para respostas futuras:
.␣␣␣␣␣␣␣␣"␣"␣␣␣␣␣␣␣␣.
(você é livre para preencher os ␣s).',16;
, ou uma guia ou um de\x04\x0e\x13\x18\x1d
.->
,Hi, Retina!
eHenry Jams?
.!".
são proibidos, exceto onde necessário:!
emHi, Retina!
e os dois.
e dois"
na primeira linha são permitidos.#$[\]
pode não aparecer no programa.tab
, (qualquer que seja) ,~
.!"%&'()*+,-./0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz{|}~
.fonte
6. Pitão , 16 bytes
Experimente aqui!
Verifica se a entrada contém um
a
. Saídas:[True, True, True, True, True, True, True, True, True, True, True, True, True]
para verdadeou
[False, False, False, False, False, False, False, False, False, False, False, False, False]
por falsidadeSatisfaz:
.
e
a
fonte
a
está na primeira linha. Pelo menos 2 respostas estão erradas porque isso não corresponde ao que diz o texto desta resposta (e as pessoas não estão testando suas respostas).20. Geléia , 100 bytes
Este código verifica se deve ou não
Henry Jams?
. Retorna1
por verdade,0
por falsidade.Experimente online!
Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
.+
.!"#$.[\]
e o ponto de código do segundo caractere é menor que 60.Henry Jams?
como uma substring contínua.Para respostas futuras:
.
, e também o 21º (regra palindrômica).->
.Hi, Retina!
."
, assim como o décimo segundo caractere (regra palíndrica).?
.|
.+
.!"#$.[\]
..
e 2"
na primeira linha e!
na entradaHi, Retina!
. Esses caracteres não podem ser usados em nenhum outro lugar, além de nenhum uso de#$[\]
.Henry Jams?
como uma subsequência contínua.fonte
22, oitava , 100 bytes
Resumo executivo: agora deve haver maiúsculas
C
no código.Experimente online!
Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
.+
.!"#$.[\]
e o ponto de código do segundo caractere é menor que 60.Henry Jams?
como uma substring contínua.~
.C
Para respostas futuras:
.
, e também o 21º (regra palindrômica)."
, e o décimo segundo caractere (regra palindrômica).',1;6
e a guia).~
.->
.Hi, Retina!
eHenry Jams?
.|
,+
eC
..
e 2"
na primeira linha e!
na entradaHi, Retina!
. Esses caracteres não podem ser usados em nenhum outro lugar, além de nenhum uso de#$[\]
.fonte
19, oitava , 196 bytes
Nota: Eu fiz uma edição no código, para corrigir um erro. A única mudança foi incluir a regra do palíndromo. Isso evita um falso positivo para a resposta 10.
A maioria dos requisitos até agora pode ser facilmente contornada usando comentários e seqüências de caracteres suprimidas, tornando trivial a adição de respostas. Achei que seria um pouco mais difícil ao proibir alguns personagens.
Experimente online!
Satisfaz:
.
.e
.a
.>
personagem.->
.Hi, Retina!
."
.?
.|
.+
.!"#$.[\]
e o ponto de código do segundo caractere é menor que 60.Para respostas futuras:
.
, e também o 21º (regra palindrômica).->
.Hi, Retina!
."
, assim como o décimo segundo caractere (regra palíndrica).?
.|
.+
.!"#$.[\]
..
e 2"
na primeira linha e!
na entradaHi, Retina!
. Esses caracteres não podem ser usados em nenhum outro lugar, além de nenhum uso de#$[\]
.fonte
This will probably be more fun if you try to maximize your own score rather than "win" the challenge.
.
antes que outra resposta seja entregue? como a primeira linha é palíndromo, ela deixa apenas 3 pontos, o que é quase impossível na maioria dos idiomas verbais OOP. Também 5"
e `` torna quase impossível para criar cordas de várias linhas