Note: Il y a quelques mots grossiers dans cette question.
Ce croquis classique de Monty Python (vous pouvez également préparer le script en ligne) pose un casse-tête implicite .
Diverses phrases sont décrites comme étant "ligneuses" ou "minces", et l'une d'entre elles comme étant "PVC".
Étant donné une phrase, répondez avec son type en fonction des listes suivantes:
woody
:
gone
sausage
seemly
prodding
vacuum
bound
vole
caribou
intercourse
pert
thighs
botty
erogenous zone
ocelot
wasp
yowling
tinny
:
litter bin
newspaper
antelope
recidivist
tit
simpkins
PVC
:
leap
Règles
- Si l'entrée appartient à l'une des listes ci-dessus, la sortie doit être
woody
,tinny
ouPVC
, en conséquence. - Toutes les entrées sont en minuscule.
- Tout comportement est acceptable pour les phrases non répertoriées ci-dessus.
- Le moins d'octets dans la réponse gagne.
code-golf
string
classification
AJFaraday
la source
la source
You may choose how to deal (or ignore) with casing in input and output.
Pour clarifier, cela signifie-t-il que nous pouvons nous attendre à ce que les entrées soient en majuscules?Réponses:
Stax ,
3025 octetsExécuter et déboguer
La représentation ascii commentée est la suivante. Je n'ai pas inventé cet algorithme. C'est une solution sans scrupule pour la solution python de Jonathan Allen .
Exécuter celui-ci
la source
can help you
est un peu déroutant mais est logiquement correct.Python 2 ,
9973656463 octetsEssayez-le en ligne!
Alternatives aussi avec 63 octets:
la source
Python 2 , 62 octets
Essayez-le en ligne!
Comment?
Cette soumission utilise le fait que la
hash
fonction est stable pour les chaînes en Python 2. Chaque entrée valide a une sortie valide. Le modulo répété brusquement forcé%97%78%28%15%2
revient1
pour tous les mots métalliques et PVC ainsi que0
pour les mots ligneux . En y ajoutant la valeur de('ea' in n)
, nous obtenons à la2
place de1
«saut» d'entrée. Voici un tableau de toutes les valeurs:Le type à renvoyer est maintenant extrait de la chaîne
'wtPoiVonCdn yy'
en prenant tous les trois caractères, en commençant par l'index calculé.la source
JavaScript (ES6), Chrome / Edge, 54 octets
Étant donné que le comportement des
parseInt()
entrées importantes avec une base de 36 dépend de la mise en œuvre , celui-ci ne fonctionne pas avec SpiderMonkey (Firefox).Essayez-le en ligne!
Comment?
La fonction de hachage renvoie 3 pour les mots minuscules, 1 pour le PVC et 0 , 4 , 5 ou 6 pour les mots de Woody. Les mots marqués d'un astérisque sont implicitement tronqués car l' espace est considéré comme un caractère non valide par parseInt () .
Version précédente,
5957 octetsEssayez-le en ligne!
Comment?
Vous trouverez ci-dessous les différentes étapes de la fonction pour chaque entrée. Le résultat du premier modulo est une approximation dans la précision des nombres JS et est mathématiquement invalide pour les rapports sexuels .
la source
Retina ,
393836 octetsEnregistré 1 octet en utilisant trois paires de substitution comme dans la réponse d'Adam.
Essayez-le en ligne!
J'ai eu la
.p.|is*t
regex du golfeur de regex de Peter Norvig .la source
Java 8,
818067 octetsRegex de la réponse Retina de @MatrinEnder .
Essayez-le en ligne.
Réponse originale:
8180 octetsEssayez-le en ligne.
Explication:
Explication supplémentaire:
woody
mots n'est présente dans cette chaîne ci-dessus, ni n'estle
deleap
.woody
mots n’aa
de troisième lettre, c’est donc utilisé pour arriverleap
àPVC
si ce n’est pas untinny
mot.woody
liste.la source
Haskell , 61 octets
Essayez-le en ligne!
Utilise cette logique trouvée à la main:
i
ou première lettrer
,a
oun
sonttinny
l
(leap
) estPVC
woody
Lynn a sauvegardé un octet en vérifiant
leap
sa première lettre.la source
"leap"
avec|a=='l'="PVC"
.QuadS ,
3432 octetsUtilise sans vergogne le système de Martin Ender , y compris la regex du regex golfer de Peter Norvig .
Essayez-le en ligne!
⊃⍵
choisir la première occurrence deea
"ea".p.|is?t
"p" entouré des lettres OU "i" et "t" avec un "s" optionnel entre eux$
fin de saisie… Mais en substituant les matchs à celui correspondant:
PVC
tinny
woody
La fonction APL Dyalog équivalente sur 43 octets est la suivante:
Essayez tous les cas en ligne!
la source
C (gcc) , 81 octets
Essayez-le en ligne!
La première chose à faire était de trouver une fonction de hachage permettant de séparer les mots dans leurs catégories. Après quelques manipulations à propos de moi, je suis tombé sur
(s[0] ^ (s[1] << 2)) & 0x7f
, où le 0x7f est bien sûr là pour le ramener à des niveaux imprimables ASCII. Cela a généré les informations suivantes (les tables sont triées, mais pas les chaînes résultantes):Les collisions de hachage importent peu, puisqu'elles sont confiées à la même catégorie. Il suffit de vérifier si le hachage résultant se trouve dans la chaîne de hachages Tinny ("HzYfPW"), car les hachages de Woody sont tous situés sous le hachage PVC (120). Si 120 ou plus, et pas un mot Tinny, ce doit être PVC. Si ce n'est pas un mot Tinny et que le hachage est inférieur à 120, alors ce doit être un bon mot, boisé.
la source
Code machine x86 32 bits, 39 octets
Hexdump:
La fonction de hachage est multipliée par un nombre "magique"
0x2c616f47
. Il n'y a que 6 chiffres pouvant être utilisés avec ce code.Tout d'abord, il écrit
PVC
dans la sortie. Ce sera écrasé, si nécessaire.Après hachage, il vérifie le mot PVC; le chèque est
al = ah
- je l'ai choisi parce que c'est une petite instruction de 2 octets. Ensuite, il écrit soitwood
outinn
, en fonction du signe du résultat haché. Ensuite, il écrity
.Code d'assemblage:
la source
Gelée ,
27 à26 octetsUn lien monadique acceptant et renvoyant des listes de caractères.
Essayez-le en ligne!
Comment?
la source
Haskell , 75 octets
-2 octets grâce à Laikoni.
Essayez-le en ligne!
RIP
enklact
.la source
f"leap"="PVC";f s|
est plus court quef s|s=="leap"="PVC"|
.Sale ,
735754 octetsEssayez-le en ligne!
A expliqué:
Pour une version plus ancienne similaire (je la mettrai à jour quand j'arrête de jouer au golf)
Le corps de celui-ci est composé de:
Si nous finissons par aller à gauche, alors nous avons:
Sinon, cela vérifie si la chaîne commence par l'un des "nar":
Nous vérifions ensuite si la deuxième lettre est "i":
Si tous tombent à travers, nous nous heurtons à
Si nous finissons par sauter, nous nous retournons à
la source
C # 97 octets
Je suis allé chercher un motif dans la longueur des cordes et ai constaté qu'elles sont uniques, à l'exception des longueurs 4 et 8. Donc, je les cas particuliers en regardant les premiers caractères. Oh bien, c'est toujours plus court que certaines réponses. :)
la source
string t(string w)=>
peut être justew=>
. Vous pouvez convertir'p'
et d'autres personnages à leurs représentations int, je pense. Vous pouvez supprimer le point-virgulePython , 59 octets
Essayez-le en ligne!
Utilise la réponse Python de l'indexation à partir d' ovs, mais une fonction de choix plus simple et plus courte:
Si la dixième lettre du mot,
w
avec emballage ((w*4)[9]
- où sew*4
répètew
quatre fois) est une lettre dans le mot d' étain (in"tin"
), le mot est grêles , sinon , si la troisième lettre (w[2]
) est un (<'b'
), le mot est PVC sinon le mot est boisé .... ce 59 fait le même travail:
la source
C, 107 octets
Essayez-le en ligne!
la source
Lot, 145 octets
Prend une entrée sur STDIN. Explication: Après avoir vérifié
leap
, les mots de grêles commencent soit par l' une des lettresa
,n
our
ou leur deuxième lettrei
.la source
CJam , 35 octets
Essayez-le en ligne!
J'ai complètement oublié que j'avais entamé une recherche brutale d'efforts pour hacher les cordes ligneuses et minces en deux classes. Je viens de trouver la fenêtre de la console où la recherche a été exécutée et il s'avère qu'elle a effectivement trouvé quelque chose ...
Explication
la source
Excel, 81 octets
Utilisation de la méthode 'anetisilire'.
la source
Japt ,
3634 octetsUtilise un RegEx de la solution Martin's Retina.
Essayez | Vérifier tous les cas de test
la source
JavaScript,
60, 50EDIT j'ai vu toutes les autres réponses regex. Je suppose que je suis juste aveugle. Quoi qu’il en soit, en voici un qui utilise la même expression rationnelle
En outre, maintenant, il bat l'autre réponse JS
Fragment:
Ancienne réponse
Je n'en ai pas encore vu avec regex, alors j'ai décidé d'essayer
Je ne sais pas si cela compte au moins 60 parce que je n’ai pas inclus de déclaration de retour. Ajoutera un extrait lorsque je serai sur mon ordinateur
Edit: extrait
la source