J'ai commencé à jouer au golf récemment et j'ai essayé d'écrire le plus petit vérificateur de tautogrammes.
Un tautogramme est une phrase dans laquelle tous les mots commencent par la même lettre, par exemple: Les fleurs fleurissent de France .
Étant donné une phrase en entrée, déterminez s'il s'agit d'un tautogramme.
Cas de test
Flowers flourish from France
True
This is not a Tautogram
False
Je suis venu avec ce code python (parce que c'est ma langue principale):
print(True if len(list(set([x.upper()[0] for x in __import__('sys').argv[1:]]))) == 1 else False)
Usage:
python3 tautogram.py Flowers flourish from France
# True
python3 tautogram.py This is not a Tautogram
# False
La phrase peut contenir des virgules et des points, mais pas d'autres caractères spéciaux, uniquement des lettres majuscules et minuscules et des espaces.
Sa taille est de 98 octets. Existe-t-il une solution plus petite dans n'importe quelle langue?
code-golf
string
decision-problem
Jaime Tenorio
la source
la source
tips
question limitée àPython
? Si c'est le cas, ces deux balises doivent être ajoutées.Réponses:
05AB1E , 5 octets
Essayez-le en ligne!
Est-ce que cela sur mobile excuse l'absence d'explication.
la source
Python 2 , 47 octets
Essayez-le en ligne!
Entré avec cela sur mobile. Peut probablement être joué au golf plus.
la source
Clojure , 80 octets
Essayez-le en ligne! . TIO ne prend pas en charge la bibliothèque de chaînes standard de Clojure, cependant, la première version générera une erreur "Impossible de trouver les minuscules".
Non golfé:
J'ai fait une version qui évite l'importation:
Mais c'est 112 octets .
la source
(define(f s)(apply char=?(map(λ(x)(char-upcase(car(string->list x))))(string-split s))))
(de f(s)(apply =(mapcar car(split(chop(lowc s))" "))))
PowerShell ,
575041 octetsEssayez-le en ligne!
Prend des entrées et
split
les place sur des espaces. Parcourt chaque mot et saisit la première lettre en prenant l's
ubstrin eng
commençant par la position0
et en recherchant le1
caractère. Ensuite,sort
s les lettres (insensible à la casse par défaut) avec le-u
drapeau nique pour extraire une seule copie de chaque lettre, et vérifie quecount
ces noms correspondent-eq
bien1
. La sortie est implicite.-9 octets grâce à mazzy.
la source
05AB1E (hérité) , 5 octets
Essayez-le en ligne!
la source
Brachylog , 5 octets
Essayez-le en ligne!
la source
Haskell , 71 octets
Essayez-le en ligne!
Haskell ,
6158 octets (utilisantData.Char.toLower
)Essayez-le en ligne!
la source
Perl 5 (
-p
), 20 octetsTIO
commentaires suivants en cas de mauvaise ponctuation (31 octets)
31 octets
sinon il y a une autre approche, également avec 31 octets:
31 octets autre
la source
$_=!/^\W*+(.).*(?=\b\w)(?!\1)/i
JavaScript (Node.js) , 54 octets
Essayez-le en ligne!
Ou 47 octets si chaque mot (mais le premier) est garanti d'être précédé d'un espace.
la source
\W
test
enregistre un autre octet.Japt
-¡
, 5 octetsEssayez-le
la source
C # (Visual C # Interactive Compiler) , 41 octets
Lève une exception si faux, rien si vrai.
Essayez-le en ligne!
la source
Perl 6 , 19 octets
Essayez-le en ligne!
la source
Java, (36 octets)
TIO
la source
(?> *)
, en utilisant un groupe atomique pour faire correspondre l'espace au début et pour éviter le bactracking. juste `*` ne fonctionne pas parce qu'après avoir échoué les matchs reviendront `*` pour correspondre à une chaîne vide