Pour cette raison, vous avez besoin d'un meilleur moyen de déterminer si une phrase est l'acronyme d'un mot. Vous pensez également qu'il serait utile de voir si la phrase et le mot en question sont des acronymes récursifs.
Ta tâche:
Soit un mot puis une phrase séparée par une ligne, sortie si la phrase est un acronyme et ensuite s'il s'agit d' un acronyme récursif . (La phrase contient ce qu'elle signifie)
- L'entrée composera des caractères alphabétiques ainsi que des espaces.
- Votre programme ne devrait pas être sensible à la casse.
Exemple d'entrée / sortie:
Cas 1:
Contribution:
Acronyms
Acronyms can really obviously narrow your message sensors
Sortie:
True
True
Cas 2:
Contribution:
FAQ
frequently asked questions
Sortie:
True
False
Cas 3:
Contribution:
foo
bar baz
Sortie:
False
False
Cas 4:
Contribution:
GNU
GNU is not Unix
Sortie:
False
False
Cas 5:
Contribution:
Aha
A huge Aha
Sortie:
True
True
Réponses:
Pyth,
1918Cette affiche le résultat dans un format assez bizarre, comme:
TrueFalse
.Vous pouvez l' essayer en ligne ou exécuter la suite de tests .
Explication:
la source
Python 3, 89
Sauvegardé un tas d'octets grâce à SOPython.
La partie la plus compliquée de cette solution est
h=tuple(a)==next(zip(*d))
.Cela décompresse la liste
d
en zip et appelle ensuitenext
pour renvoyer un tuple du premier élément de chaque itérable passé danszip
lequel est ensuite comparé un tuple de chaque lettre d'un (tuple(a)
).la source
[0]==l
par.startswith(l)
.CJam,
21 à20 octetsEssayez ce violon dans l’interprète CJam ou vérifiez tous les tests en même temps.
Comment ça marche
la source
Haskell,
81 à80 octetsLe format de sortie n'est pas strictement défini, je renvoie donc une paire de booléens, par exemple
p "Aha\na huge arm"
->(True,False)
.la source
<-
) - merci!Scala,
135110108 octetsSauvegardé quelques octets en utilisant des arguments en ligne de commande (merci à J Atkin pour le conseil), en mettant les booléens en tant que tupel, en utilisant
mkString
plutôt quenew String
et print au lieu de println.EDIT: a mal interprété la question et a dû réimplémenter la solution
la source
Python 3, 106 octets
Au moins, ça a battu Scala;)
la source
AppleScript,
302301297293 octetsAw, putain ouais. Pas même dérangé que je perds, c'est compétitif pour AppleScript.
Sorties en tant que:
Ou quelle que soit la réponse qui se trouve être.
la source
PHP, 120 octets
Ne pas être sensible à la casse fait beaucoup de poids (26 octets). A réussi tous les cas de test:
Affiche deux valeurs bool sous cette forme:
Lit deux arguments depuis la ligne de commande, comme:
Ungolfed
la source
Rubis,
7774 octetsla source
Ruby, 52 octets
Exemple:
la source
Matlab, 90 octets
Exemple (notez que Matlab affiche
true
/false
as1
/0
):la source
JavaScript ES6,
9592 octetsEntrez les deux chaînes en tant que paramètres. Affiche un tableau avec deux valeurs: une pour chaque booléen.
la source
.indexOf
. Bon travail! Celar=eval(`/^${a}$/i`)
fonctionnerait peut - être à la place de votrer
configuration actuelle .eval
à unRegExp
raccourcisseur d'objets. Merci pour le conseil!GNU sed, 118 bytes
Nécessite un
-r
drapeau, inclus dans le score en tant que +1. Notez que j'utilise\b
une correspondance de limite de mot, même si je ne trouve pas cela documenté dans GNU sed. Ça marche pour moi ...Étendu:
la source
Groovy, 91 octets
Le format de sortie est
[bool, bool]
. Ceci est pris à partir des arguments de la ligne de commande.la source
Lua 5.3, 182 octets
la source
R, 93 octets
Usage:
la source
awk
137 octetsT="True";F="False"
pour simplifier la sortie.NR*NF<2{a=tolower($1)}
: définia
uniquement si la première ligne n'a qu'un seul champ.END{...}
: en supposant que deux lignes ...for(i=1;i<=NF;i++)b=b substr(tolower($i),1,1)
: construit un acronyme récursif.print(a==b?T:F)"\n"(a==tolower($1)?T:F)
: affiche le résultat des deux comparaisons,a==b
eta==tolower($1)
.Si quelqu'un sait comment optimiser la construction d'un acronyme récursif, n'hésitez pas à le suggérer.
la source
SpecBAS - 144 octets
La conversion des 2 entrées en majuscules enregistre les caractères par rapport à la conversion en minuscules. Peut maintenant avoir plusieurs affectations effectuées dans une seule
LET
déclaration, ce qui aide également. EtTEXT
sauve un personnage surPRINT
.Utilise 1/0 pour montrer vrai / faux (l'apostrophe déplace simplement la sortie vers la ligne suivante).
la source
Perl5, 90 octets
tricher un peu: 0 = tout faux, 1 = un vrai, 2 = tous les deux. Je ne suis pas un golfeur, mais je suis contrarié, mais Perl manque lors de la navigation!
la source
JavaScript (ES6) 93
Testez l'exécution de l'extrait de code ci-dessous dans tout navigateur compatible EcmaScript 6.
la source
JavaScript (ES6),
899695 octetsShucks ... Je pensais avoir tout réglé, mais apparemment, je me suis trompé.
Ceci définit une fonction anonyme qui prend en entrée deux chaînes, et retourne un tableau de deux éléments booléens. Le premier élément est calculé en comparant la première chaîne en minuscule au premier caractère de chaque mot de la deuxième chaîne. Le deuxième élément est calculé simplement en vérifiant si la deuxième chaîne contient le premier.
Voici une autre solution pour le deuxième élément; 2 octets plus courts, mais très peu de navigateurs le supportent:
la source
GNU: Gnus nettle unicorns
ReferenceError: l is not defined
(manquantl=
avanttoLowerCase
)'GNU','GNU is not unix'
(test 4) devrait être false, falsel=
tout en recherchant un bogue et j'ai oublié de le remettre. Merci de mentionner cela! L'autre cas de test doit également être corrigé.Pyke (sans titre lors de la publication), (non compétitif), 20 octets
Vous pouvez trouver le code source ici , la langue est complètement instable (premier test de test pour celui-ci) alors ne vous attendez pas à ce qu'il fonctionne à l'avenir (commit 8)
Ou 18 octets (stable)
Essayez-le ici!
la source