Original: https://james-iry.blogspot.co.at/2009/05/brief-incomplete-and-mostly-wrong.html
Alain Colmerauer projetou a linguagem de programação lógica Prolog. Seu objetivo era criar uma linguagem de programação tão inteligente quanto uma criança de dois anos de idade. Para provar que ele havia atingido seu objetivo, ele apresentou um programa Prolog que responde "Não" com recursos para todas as perguntas.
Me pergunte qualquer coisa!
? -(Claro que não.) Sua tarefa é criar um programa mais inteligente que o programa de Alain Colmerauer. Isso não precisa estar no Prolog.
Específicos
Se a entrada terminar com
?
e tiver pelo menos um,
, retorne o texto do último,
até o anterior?
.Senão, se a entrada terminar com
?
retornoNo
.Senão, volte
Yes
.
Regras
- Sem brechas padrão.
- A entrada / saída será realizada através de nossos métodos padrão de entrada / saída.
- Seu programa precisa fazer pelo menos 1 consulta.
- Você deve enviar a consulta processada.
- Os
Yes
eNo
diferenciam maiúsculas de minúsculas nos exemplos. - Você está garantido que, se a entrada incluir a
?
, a entrada terá apenas um?
e sempre será o último caractere. - A entrada sempre será uma frase / frase. Esta frase / sentença nunca contêm apenas os personagens
,
e?
, por exemplo,
,?
e,?
não são entradas válidas. (Embora os envios possam implementá-lo de qualquer maneira, uma vez que a frase / frase é uma sequência vazia nesses casos.) - Além disso, a entrada nunca terminará com
,?
. - Se houver espaço em branco imediatamente após o último
,
ou imediatamente antes do?
, eles deverão ser incluídos na saída.
Exemplos
Hmm. -> Yes
Alright, -> Yes
Ask me anything! -> Yes
Ask me a question, please! -> Yes
Are you okay? -> No
No? -> No
Hey,does this program work? -> does this program work
Quotes in the following test cases should not be outputted.
They are used as a delimiter here.
Okay, so this does work ? -> " so this does work "
Please, add, a, test, case, containing, multiple, commas? -> " commas"
Pontuação
Isso é código-golfe , então a resposta mais curta em bytes vence.
?
, haverá apenas uma e sempre será o último caractere?You are guaranteed that if the input includes a ?, the input will only have one ? and it will always be the last character.
Portanto, esses casos de teste não são necessários.ends with ,?
uma entrada válida?Respostas:
05AB1E ,
2019 bytes-1 byte graças a @Grimy .
Experimente online ou verifique todos os casos de teste .
Explicação:
Veja esta dica 05AB1E (seção Como usar o dicionário? ) Para entender por que
”€–”
é"Not"
e”…Ü
é"Yes"
.fonte
Python 3 , 62 bytes
Experimente online!
A expressão é
~(','in s)*('?'in s)
avaliada como0
(ie'Yes'
) se a sequência não contém a'?'
, else-1
(ie'No'
) se a sequência não contiver a','
, e caso contrário-2
(ou seja, a última seção separada por vírgula da sequência, excluindo o último caractere).fonte
JavaScript (ES6),
5352 bytesExperimente online!
Comentado
fonte
Carvão ,
2322 bytesExperimente online! Link é a versão detalhada do código. Edit: Salvo 1 byte graças a @KevinCruijssen. Explicação:
A string contém algum
?
s?Ele contém algum
,
s?Divida a corda em se
,
pegue a última.Exclua o
?
e produza o resultado.Se não houver
,
s, então a saídaNo
.Se não houver
?
s, então a saídaYes
.fonte
Print(Join(Split(Pop(Split(q, ",")), "?"), w)
paraPrint(Minus(Pop(Split(q, ",")), "?");
Minus
fiz isso. Além disso, estava me sentindo satisfeito por salvar dois separadores.Perl 5 +
-plF/,|\?/
, 25 bytesExperimente online!
fonte
Pitão , 25 bytes
Experimente online!
fonte
Zsh , 51 bytes
Experimente online!
Um byte pode ser salvo se
ends with,?
e similares forem inválidos.fonte
Stax , 16 bytes
Execute e depure
fonte
Retina ,
3228 bytes-4 bytes com dicas de @Neil .
Experimente online.
Explicação:
fonte
K
palco da Retina 1 tem um condicional embutido? Eu não fiz. Provavelmente, você poderá economizar alguns bytes.K
e condicional&
para ser completamente honesto. Eu sei como usarK
com um regex para corresponder assim , mas como combiná-lo com o condicional para imitar um if-else ternário para oYes
/No
?&
, e foi isso que me surpreendeu, e você pode apenas combinar com uma string, ou melhor ainda, com um personagem, já que sabe que algum?
deve estar no final.Fórmula IBM / Lotus Notes, 79 bytes
Nenhum TIO para a Fórmula, então ...
fonte
Python 3 ,
9887 bytes-9 bytes graças a ElPedro
Experimente online!
Isso foi solidamente vencido por outras respostas, mas estou tentando jogar golfe em Python um pouco mais. Conselho é apreciado!
fonte
if
instruções embutidas para uma indexação de lista e, em seguida, reduzir as condições de usoin
, depois jogar tudo fora porque está muito próximo de um resposta existenteif x.count(",")
porif~x.find(",")
, economizando um byte.str.find
avalia-1
se a sequência não foi encontrada. Se você complementar isso com o operador unário, isso resultará em0
se e somente se a substring não estiver presente. Como alternativa, você pode substituí-loif","in x
por 4 bytes a menos.PHP , 58 bytes
Experimente online!
fonte
Vermelho , 78 bytes
Experimente online!
fonte
Perl 6 , 40 bytes
Experimente online!
fonte
Gema , 34 caracteres
Exemplo de execução:
Experimente online! / Experimente todos os casos de teste online!
fonte
Japonês , 23 bytes
Tente
fonte
C # (compilador interativo do Visual C #) , 72 bytes
Guardado 2 bytes graças a @someone
Experimente online!
fonte
SkipLast(1) -> Trim('?')
para -??? bytes, tanto quanto eu vejo (todas as minhas tentativas de calcular o resultado da diferença em números diferentes)Python 2 ,
666362 bytesExperimente online!
-3 depois de localizar o esclarecimento atualizado "a entrada terá apenas um? E sempre será o último caractere".
-1 com agradecimentos a @ChasBrown
Basicamente, uma porta da minha resposta do Lotus Notes . Curiosamente, o esclarecimento mencionado acima não ajuda o Notes a responder, porque
@Ends
é 4 bytes mais barato que@Contains
. Agora, se ao menos houvesse uma@In
função ...fonte
rfind
.Gelatina , 20 bytes
Experimente online!
fonte
C ++ (gcc) ,
120118 bytesMacro de função:
Experimente online!
-2 bytes graças a @ceilingcat
fonte