Original: https://james-iry.blogspot.co.at/2009/05/brief-incomplete-and-mostly-wrong.html
Alain Colmerauer a conçu le langage de programmation logique Prolog. Son objectif était de créer un langage de programmation aussi intelligent qu'un enfant de deux ans. Afin de prouver qu'il avait atteint son objectif, il a présenté un programme Prolog qui répond «Non» avec ingéniosité pour toutes les demandes.
Demande-moi n'importe quoi!
? -(Bien sûr qu'il ne l'a pas fait.) Votre tâche est de créer un programme plus intelligent que le programme d'Alain Colmerauer. Cela ne doit pas nécessairement être dans Prolog.
Détails
Si l'entrée se termine par
?
et en contient au moins un,
, renvoyez le texte du dernier,
jusqu'à l'avant-dernier?
.Sinon, si l'entrée se termine par un
?
retourNo
.Sinon, revenez
Yes
.
Règles
- Pas de failles standard.
- L'entrée / sortie sera prise via nos méthodes d'entrée / sortie standard.
- Votre programme doit prendre au moins 1 demande.
- Vous devez sortir la requête traitée.
- Les
Yes
etNo
sont sensibles à la casse dans les exemples. - Vous êtes assuré que si l'entrée comprend un
?
, l'entrée n'en aura qu'un?
et ce sera toujours le dernier caractère. - L'entrée sera toujours une phrase / phrase. Cette phrase / phrase ne contient jamais que les caractères
,
et?
, par exemple,
,?
et,?
ne sont pas entrées valides. (Bien que les soumissions puissent l'implémenter de toute façon, puisque la phrase / phrase est une chaîne vide dans ces cas.) - De plus, l'entrée ne se terminera jamais avec
,?
. - S'il y a des espaces immédiatement après le dernier
,
ou juste avant le?
, ils doivent être inclus dans la sortie.
Exemples
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"
Notation
C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
?
, il n'y en aura qu'un et ce sera toujours le dernier caractère?You are guaranteed that if the input includes a ?, the input will only have one ? and it will always be the last character.
Par conséquent, ces cas de test sont inutiles.ends with ,?
une entrée valide?Réponses:
05AB1E ,
2019 octets-1 octet grâce à @Grimy .
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
Voir cette astuce 05AB1E (section Comment utiliser le dictionnaire? ) Pour comprendre pourquoi
”€–”
est"Not"
et”…Ü
est"Yes"
.la source
Python 3 , 62 octets
Essayez-le en ligne!
L'expression est
~(','in s)*('?'in s)
évaluée0
(ie'Yes'
) si la chaîne ne contient pas a'?'
, else-1
(ie'No'
) si la chaîne ne contient pas a','
, et autrement-2
(ie la dernière section séparée par des virgules de la chaîne excluant le dernier caractère).la source
JavaScript (ES6),
5352 octetsEssayez-le en ligne!
Commenté
la source
Fusain ,
2322 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Edit: 1 octet enregistré grâce à @KevinCruijssen. Explication:
La chaîne contient-elle des
?
s?Contient-il des
,
s?Séparez la chaîne sur
,
s et prenez la dernière.Supprimez le
?
et affichez le résultat.S'il n'y a pas de
,
s, sortezNo
.S'il n'y a pas de
?
s, sortezYes
.la source
Print(Join(Split(Pop(Split(q, ",")), "?"), w)
àPrint(Minus(Pop(Split(q, ",")), "?");
Minus
cela. D'ailleurs, je me sentais content d'avoir sauvé deux séparateurs.Perl 5 +
-plF/,|\?/
, 25 octetsEssayez-le en ligne!
la source
Pyth , 25 octets
Essayez-le en ligne!
la source
Zsh , 51 octets
Essayez-le en ligne!
Un octet peut être enregistré si
ends with,?
et similaires ne sont pas valides.la source
Stax , 16 octets
Exécuter et déboguer
la source
Rétine ,
3228 octets-4 octets avec des conseils de @Neil .
Essayez-le en ligne.
Explication:
la source
K
scène de Retina 1 a un conditionnel intégré? Non. Cela pourrait probablement vous faire économiser quelques octets.K
conditionnel&
pour être complètement honnête. Je sais comment utiliserK
avec une expression régulière pour faire correspondre cela , mais comment le combiner avec le conditionnel pour imiter un if ternaire pour leYes
/No
?&
, ce qui m'a surpris, et vous pouvez simplement faire correspondre une chaîne, ou mieux encore, un caractère, car vous savez que tout?
doit être à la fin.Formule IBM / Lotus Notes, 79 octets
Pas de TIO pour Formula alors ...
la source
Python 3 ,
9887 octets-9 octets grâce à ElPedro
Essayez-le en ligne!
Cela a été solidement battu par d'autres réponses, mais j'essaie un peu plus de jouer au golf en Python. Les conseils sont appréciés!
la source
if
instructions en ligne à une liste d'indexation à la place, puis raccourcir les conditions à utiliserin
, puis tout jeter car il est trop proche d' un réponse existanteif x.count(",")
parif~x.find(",")
, en économisant un octet.str.find
évalue-1
si la chaîne n'est pas trouvée. Si vous complétez cela avec l'opérateur unaire, cela entraîne0
si et seulement si la sous-chaîne n'est pas présente. Alternativement, vous pouvez le remplacerif","in x
par 4 octets de moins.PHP , 58 octets
Essayez-le en ligne!
la source
Rouge , 78 octets
Essayez-le en ligne!
la source
Perl 6 , 40 octets
Essayez-le en ligne!
la source
Gema , 34 personnages
Exemple d'exécution:
Essayez-le en ligne! / Essayez tous les cas de test en ligne!
la source
Japt , 23 octets
Essayez-le
la source
C # (Visual C # Interactive Compiler) , 72 octets
Sauvegardé 2 octets grâce à @someone
Essayez-le en ligne!
la source
SkipLast(1) -> Trim('?')
pour -??? octets pour autant que je vois (toutes mes tentatives pour calculer la différence résultent en différents nombres)Python 2 ,
666362 octetsEssayez-le en ligne!
-3 après avoir repéré la clarification mise à jour "l'entrée n'aura qu'un seul? Et ce sera toujours le dernier caractère."
-1 avec merci à @ChasBrown
Fondamentalement, un port de ma réponse Lotus Notes . Curieusement, la clarification notée ci-dessus n'aide pas la réponse de Notes car elle
@Ends
est 4 octets moins chère que@Contains
. Maintenant, si seulement il y avait une@In
fonction ...la source
rfind
.Gelée , 20 octets
Essayez-le en ligne!
la source
C ++ (gcc) ,
120118 bytesMacro de type fonction:
Essayez-le en ligne!
-2 octets grâce à @ceilingcat
la source