Définition
Un mot de dollar est un mot , où , quand chacune de ses lettres est donné une valeur de cent, de a = 1 à z = 26, et les lettres sont sommés, le résultat est 100. Voici un exemple sur CodeReview, et voici une liste des mots dollar que j'ai trouvé en ligne.
Contribution
La saisie sera alphabétique de az, dans les types de données texte de votre langue (les tableaux sont autorisés). Vous n'avez pas besoin de rendre compte de toute autre entrée - il n'y aura pas d'espaces, d'apostrophes ni de traits d'union. Vous pouvez prendre en minuscule, majuscule ou une combinaison. Les retours à la ligne sont autorisés.
Sortie
Indiquez une valeur de vérité si l'entrée est un mot dollar et une valeur de falsey si ce n'est pas le cas.
Cas de test
Vérité
buzzy
boycott
identifies
adiabatically
ttttt
Falsey:
zzz
zzzzzzz
abcdefghiljjjzz
tttt
basic
C'est du code-golf, donc la réponse la plus courte en octets gagne! Les lacunes et les règles standard s'appliquent. La cravate va à la première affiche.
Réponses:
GS2 , 6 octets
L'entrée doit être en majuscule.
Essayez-le en ligne!
Comment ça fonctionne
la source
Python,
3938 octetsEssayez-le en ligne!
-1 octet grâce à @JonathanAllan
la source
05AB1E , 8 octets
Code:
Utilise le codage CP-1252 . Essayez-le en ligne!
Explication:
la source
Tn
fonctionne aussi: PÇ4+OTn%0Q
C’était une autre idée que j’avais, mais c’est pire.Perl 6 , 21 octets
L'essayer
Alterner:
L'essayer
Notez que
Ⅽ
estROMAN NUMERAL ONE HUNDRED
U + 216D avec un unival de… 100,ce qui prend 3 octets à encoder.
Étendu:
la source
MATL , 8 octets
Utilise une entrée en minuscule.
Essayez-le en ligne!
Explication
Le code est aussi lisible que possible:
la source
JavaScript (ES6), 46 octets
Retours
0
ou1
.la source
reduce
et récursivité, ils sont sortis tous les deux de 2 octets de plus.reduce()
pendant les premières minutes de la période de grâce lorsque je l'ai posté pour la première fois.Haskell , 32 octets
Essayez-le en ligne!
L'idée est de faire une liste de caractères
a
dans le caractère donné pour chaque caractère de la liste et de vérifier que la longueur totale est de 100.Autres tentatives:
Dommage,
enumFromTo
c'est si long.la source
(100==).length.(enumFromTo 'a' =<<)
est une utilisation si propre du sans-pointC,
4543 octetsMerci à @Neil d'avoir économisé deux octets et d'avoir rendu la solution insensible à la casse!
Essayez-le en ligne!
la source
n=0
globalement, puis en sautant la première clause de la spécification de boucle, non? edit: ça ne fait rien - je suppose que cela ne fonctionnerait que pour le tout premier appel.&31
pourrait également rendre votre code insensible à la casse.n=!n
marche? Je comprends qu’il vérifie sin
est égal à zéro, car sur la base de certains tests, je vois des!0
retours1
;!15
retourne0
; et!-15
revient0
aussi bien. Mais pourquoi? Quel opérande est!
en C quand on l'utilise en tant que!integer
?!
est juste la logiquenot
. En C,0
signifiefalse
, et toute autre valeur entière signifietrue
. Alors!0 == 1
et!n == 0
pour tousn != 0
.0=false; 1=true
place, d'où ma confusion. Merci d'avoir répondu.Haskell , 32 octets
Cela fonctionne pour les entrées en minuscules. Pour les majuscules,
s/96/64/
. La prise en charge de cas mixtes ajouterait un tas d'octets.la source
Mathematica, 23 octets
Fonction pure prenant une chaîne (ou un tableau de lettres) en entrée, insensible à la casse, et retournant
True
ouFalse
. Ici,Tr
ajoute simplement les lettres-nombres ensemble; tout le reste est explicite.la source
Jelly ,
97? * 8 octetsProgramme complet, en indiquant 1 si l'entrée est un mot dollar ou 0 sinon.
Essayez-le en ligne!
Comment?
* Pourrait-il s'agir de 7 octets?
La seule raison pour laquelle cela a pris avec entrée
ɠ
était de garder³
comme 100 littéral plutôt que le 3 ème entrée de ligne de commande (1 er d'entrée du programme).Un moyen d'éviter cela serait, comme l'a souligné Dennis, de créer 100 en utilisant la forme littérale brute
ȷ2
qui est 10 2 . Cela conduit à un autre octet de 8O%32S=ȷ2
, mais c'est maintenant une fonction monadique non nommée (ainsi que fonctionnant comme un programme complet avec un troisième argument).Étant donné que, dans le golf, on peut créer des variables ou des fonctions auxiliaires qui restreignent le programme dans lequel ils peuvent résider (on ne peut pas réutiliser le nom dans le champ sans arrêter la fonction d'être réutilisable); également acceptable, auquel cas l'octet 7
O%32S=³
serait acceptable ici en tant que fonction non nommée.la source
O%32S=ȷ2
. Fonctionne pour les majuscules et les minuscules.O%32S⁼³
une entrée valide car il définit une fonction réutilisable non nommée, tant que le reste du programme dans lequel il se trouve n'utilise pas d'argument de ligne de commande pour la saisie?Alice , 23 octets
Essayez-le en ligne!
Les entrées doivent être en minuscules. Imprime
1
pour les mots d'un dollar et0
autrement.Explication
Il est temps de montrer la bande d'Alice et un flux de contrôle avancé. Bien qu'elle travaille assez bien avec les entiers et les chaînes individuellement, Alice ne dispose pas de fonctions intégrées pour a) déterminer la longueur d'une chaîne, b) convertir entre les caractères et leurs points de code. La raison en est que toutes les commandes d'Alice mappent des entiers en entiers ou des chaînes en chaînes. Mais les deux nécessiteraient de mapper des chaînes sur des nombres entiers ou vice versa, de sorte qu'elles ne s'intègrent dans aucun des modes d'Alice.
Cependant, en plus de sa pile, Alice dispose également d'une bande et les modes Cardinal et Ordinal interprètent les données de la bande de différentes manières.
Cette bande peut être utilisée pour les deux opérations ci-dessus: pour obtenir une longueur de chaîne, nous l'écrivons sur la bande en mode Ordinal, cherchons la terminaison -1 en mode Cardinal et récupérons la position de la tête de la bande. Pour convertir les caractères en leurs points de code, nous les lisons simplement sur la bande en mode Cardinal.
Les deux autres fonctionnalités importantes utilisées dans cette solution sont la pile de retour et un itérateur. Alice a une pile de retour qui est généralement remplie lorsque vous utilisez la commande jump
j
et sur laquelle vous pouvez extraire une adressek
. Cependant, il est également possible de placer l'adresse actuelle dans la pile de retour sans sauter n'importe où avecw
. Si nous combinonsw
avec la commande repeat&
, nous pouvons pousser l'adresse actuelle n fois. Maintenant, chaque fois que nous atteignonsk
, une copie est extraite de la pile de retour et nous effectuons une autre itération à partir dew
(en partant de la cellule suivante, car l’IP se déplace avant d’exécuter une autre commande). Quand la pile de retour devient vide,k
ne fait rien du tout et l'IP passe simplement à travers. D'où&w...k
apparaît un entier n puis s'exécute...
n + 1 fois, ce qui nous donne un moyen très concis d'exprimer unefor
boucle simple .Sur le code lui-même ...
la source
R,
5554 octets-1 octet grâce à BLT
renvoie une fonction qui effectue le calcul requis, qui retourne
TRUE
etFALSE
comme on pourrait s'y attendre.prend les entrées en minuscules; serait seulement un passage de
letters
àLETTERS
pour toutes les majusculesla source
function(x)sum(match(el(strsplit(x,"")),letters))==100
enregistre un octet.Ruby, 25 octets
Fonctionne en majuscule.
Je vois quelques entrées Ruby plus complexes, mais c'est aussi simple que cela.
s.sum
ajoute les codes ASCII de la chaîne d'entrée et en soustrait 64 fois la longueur de la chaîne.Exemple d'utilisation
la source
Java 8, 36 octets
Essayez-le en ligne!
Remarque: indépendant du cas.
la source
05AB1E , 9 octets
Essayez-le en ligne!
Explication
Comme 1 est la seule valeur de vérité dans 05AB1E, nous pouvons enregistrer un octet en utilisant la soustraction par rapport à 100 .
la source
Perl 5 , 30 octets
-1 octet grâce à @Neil (
31&
au lieu de-96+
).29 octets de code +
-p
drapeau.Essayez-le en ligne!
la source
31&ord
place?-96+
de telles choses .. Merci beaucoup pour ça! (mais je sens maintenant que je devrais revenir en arrière dans mes anciens messages et les remplacer tous les-96+
: x){$@+=31&ord for@_;$@==100}
(non testé)+=
, mais dans d’autres cas, vous pourriez gaspiller les économies réalisées entre parenthèses.your one language's text datatypes
. Les tableaux sont à peine du type de données texte de Perl ... (sinon, cela aurait économisé 1 octet)PowerShell ,
36 à30 octetsEssayez-le en ligne!
Les entrées sont un tableau, mais je me demande s’il existe une meilleure façon de gérer les caractères.
EDIT Vous avez manqué un espace facile mais @AdmBorkBork a bien voulu me le faire savoir: P aussi, il y avait en fait un meilleur moyen de gérer les personnages!
la source
[char]$_-96
, et vous n'avez pas besoin d'espace entre-eq
et et100
de vous abaisser à 33. Vous pouvez également le faire"$_"[0]
au lieu de[char]$_
, de vous abaisser à 32. Essayez-le en ligne!"
autour sont-ils$_
nécessaires? Il semble fonctionner sans le casting. Cela pourrait-il être dû au fait que l'entrée est déjà un tableau de chaînes?"
ne sont pas nécessaires dans ce cas particulier.Alice ,
2818 octetsMerci à @MartinEnder pour avoir joué au golf 10 octets
Essayez-le en ligne!
Cette soumission utilise une méthode différente de celle de @ MartinEnder.
Cette soumission
0x00
renvoie à la fausseté et0x01
à la vérité.Donc, voici une version qui sort
0
ou à la1
place: Essayez-le!Explication
L'explication ci-dessous concerne la version "visible". Les deux sont très similaires, sauf dans le premier programme, le dernier
o
ne convertit pas le0
ou1
en une chaîne (parce que nous sommes en mode cardinal), mais prend le nombre et affiche le caractère à ce point de code.Après cela, l’IP se termine sur le bord gauche
=
. Si la valeur supérieure de la pile est0
, l’IP continue avec son chemin, augmentant la somme totale de tous les caractères, une fois que cela est fait avec l’entrée (le haut de la pile sera1
), puis l’IP se tournera à droite (90 degrés dans le sens des aiguilles d'une montre).Une chose est importante à noter, la boucle sur la première ligne itérera une fois après la fin de la saisie. Ceci soustraira
97
(96
du'`
et-1
du manque d'entrée) du total.la source
Taxi , 1259 octets
Avec les sauts de ligne, cela ressemble à ceci:
Il accepte les majuscules ou les minuscules, car
Auctioneer School
il convertit le tout en majuscules.Chop Suey
le divise en caractères individuels.Charboil Grill
convertit les caractères en code ASCII.Nous ramassons un caractère à la fois, le convertissons en ASCII, soustrayons 65 et nous l’ajoutons au total cumulé.
Une fois qu'il n'y a plus de caractères, comparez le total à 100.
Retours
TRUE
pour les mots d'un dollar etFALSE
pour tout le reste.la source
IA-32 code machine, 21 octets
Hexdump:
Code d'assemblage:
Compte de 100 à 0. Si arrivé à 0, renvoie vrai (0xff); sinon faux (0x00).
la source
Dyalog APL,
17 à15 octetsUtilise le jeu de caractères Dyalog Classic.
la source
Python , 38 octets
Essayez-le en ligne!
Même longueur que la solution de ovs . Plutôt que de soustraire 96 à chaque
ord
valeur, cela vérifie si leord
total est égal100+96*len(s)
. Ceci est exprimé un octet plus court que4-96*~len(s)
, ce qui est égal4-96*(-len(s)-1)
.la source
lambda s:sum(s.encode(),96*~len(s))==4
fonctionnerait également.Ruby ,
35 à30 octetsEssayez-le en ligne!
la source
Retina ,
4723 octetsEssayez-le en ligne! Remarque: Les en-têtes en-tête sont entrés et divisés en mots; les résultats apparaissent sur des lignes séparées. Edit: sauvé beaucoup trop d'octets grâce à @MartinEnder.
la source
Octave, 18 octets
Soustrait
96
de la chaîne d'entréex
(minuscule) pour obtenir les valeurs numériques des lettres. Prend lesum
et le compare à100
. Renvoie une logique1
pour les cas véridiques et une logique0
pour les faux cas.Je pourrais économiser un octet s'il était correct de donner false pour "mots en dollars" et vrai pour "mots non en dollars".
la source
Japt ,
13 1210 octetsExplication:
Testez-le en ligne!
12 octets:
Essayez-le en ligne!
Une autre solution de 12 octets utilisant une technique différente
Essayez-le en ligne!
la source
m%H
au lieu dem-96
(cela fonctionnera maintenant dans les deux cas, bonus!), Et un sur le second avecL¥U¬x@;CaX Ä
m%H
C'était une bonne trouvaille.x@
C'était une bonne idée aussi!Ruby (2.4+), 38 octets
Prend la saisie en minuscule. Nécessite Ruby 2.4
Array#sum
pour qu'il ne fonctionne pas sur TIO.la source
String#bytes
plutôt que deString#chars
ne pas avoir à appelerc.ord
.sum
sur le tableau au lieu demap
/// ,
564210189185 octetsEssayez-le en ligne!
Imprime un 1 s'il s'agit d'un "mot dollar", sinon un "0"
La saisie est la suivante: (Faites défiler tout le chemin à droite)
Fonctionne en remplaçant chaque lettre par sa valeur en unaire, puis en remplaçant un unaire 100 par un 0. Il remplace alors quelle que soit la valeur du mot par un 1. Si la valeur du mot est 0, elle imprimera un 1 car à la fin de le code, il remplace un 0. Si la valeur du mot est autre chose, il imprimera simplement ce 0.
Le golf fonctionne en utilisant des occurrences communes dans le code en remplacement.
la source
Bash + utilitaires GNU, 47
Essayez-le en ligne .
la source