introduction
Au pays de [Insérez un nom sympa ici], les gens n'achètent pas de choses avec de l'argent, car tout le monde est allergique au papier. Ils se payent des mots! Mais comment est-ce? Eh bien, ils donnent à chaque lettre des valeurs numériques:
a=1,b=2,c=3,etc.
(Avec quelques autres règles spéciales qui seront décrites plus loin)
Dans ce défi, votre tâche consistera à calculer la valeur des phrases.
Défi
Vous prendrez une entrée qui sera une phrase. Vous pouvez supposer que l'entrée n'a pas de nouvelles lignes ni d'espaces de fin. Le défi sera de calculer la valeur de la phrase, en utilisant ces règles:
a=1,b=2,c=3,etc.
- Une lettre majuscule vaut 1,5 fois sa lettre minuscule correspondante
H=h*1.5
Donc, le mot
cab
Ça vaudrait le coup c+a+b = 3+1+2 = 6
Mais le mot Cab
avec un c majuscule vaudrait(c*1.5)+a+b = 4.5+1+2 = 7.5
donc Si votre entrée de programme était "Cab" votre programme sortirait 7,5
- Tous les caractères non alphabétiques valent 1.
C'est le golf de code, donc la réponse la plus courte en octets l'emporte. Bonne chance!
7.0
au lieu de7
?Réponses:
Python 3,
716561 octetsPar une coïncidence extraordinaire,
(ord(s)-64)*1.5
est égal àord(s)*1.5-96
, nous n'avons donc qu'à écrire-96
une fois. Le reste est assez simple.Edit: rasé certains octets à l'aide de manigances d'exponentiation.
la source
Python 2,
120102 octetsÉditer:
Première soumission, pas trop golfique mais il faut commencer quelque part.
la source
for
dans les compréhensions.e
comme paramètre qui renvoie le résultat.Pyth,
2320 octetsDémonstration en direct et cas de test.
Explication
Beaucoup d'utilisations créatives des valeurs booléennes en tant qu'entiers ici.
Version 23 octets:
Démonstration en direct et cas de test.
la source
.
(tous les caractères non alphabétiques devraient valoir 1)Julia, 63 octets
Cela résume simplement un tableau construit via une compréhension qui boucle sur les caractères de la chaîne d'entrée et effectue une arithmétique sur leurs points de code.
Non golfé:
Merci à Glen O d'avoir corrigé l'approche.
la source
Bloqué ,
8543 octetsOuais ouais, je sais, Python est plus court ..: PJ'utilise la même logique que Tryth maintenant, pour la plupart.Explication:
la source
Python 2, 101 octets
la source
CJam, 30 octets
Comment cela fonctionne (wow, je n'en ai jamais fait!):
la source
F #, 168 octets
Pas encore vraiment joué au golf, mais un début:
Voici une version plus lisible:
la source
K, 30
.
Comment ça fonctionne:
.Q`a`A
génère deux listes de lettres minuscules et majuscules!:1+til 26
mappe chaque lettre de chaque liste de 1 à 26Multipliez la première liste par 1, la dernière par 1,5
Transformez-vous en un seul dictionnaire en utilisant
,/
Mappez les caractères de la chaîne d'entrée aux scores pertinents
Remplissez toutes les valeurs nulles avec 1
Somme
la source
JavaScript, 121 octets
appeler le fichier js avec le nœud (node index.js "Cab")
la source
MATLAB, 68 octets
Cela profite du fait que les caractères sont automatiquement transtypés en entiers et que les valeurs booléennes peuvent être additionnées sous forme d'entiers.
la source
Perl 5, 77 octets
Testé sur
v5.20.2
.la source
Javascript (ES6),
85828067 octetsJ'adore les défis rapides et faciles comme celui-ci. :)
Cela fonctionne en interprétant chaque caractère comme un nombre en base 36, en le multipliant par 1 ou 1,5 s'il est supérieur à 9 (
a-z
ouA-Z
), et en donnant 1 à la place sinon. Comme toujours, les suggestions sont les bienvenues!la source
toString(36)
.toString(36)
s'applique ici. Voulez-vous dire quelque chose commeparseInt(c,36)
? En fait, cela pourrait être plus court ...([c,...t])=>c?(parseInt(c,36)-9||2/3)*(c>'Z'||1.5)+f(t):0
Python 3:
8685 octetsla source
C # 81 octets
Appeler avec (LinqPad):
la source
PHP, 102 octets
Exemple d'utilisation:
Rien de spécial dans l'algorithme. Chaque caractère de l'argument du premier programme (
$argv[1]
) est vérifiéA
,Z
puisa
etz
et compté en conséquence.la source
PowerShell, 108 octets
Décemment compétitif, je suis un peu surpris. Pas trop minable pour ne pas avoir d'opérateur ternaire compact.
Code:
Expliqué:
la source
C, 85 octets
L'
!!
avantislower
etisupper
sont nécessaires, car les valeurs booléennes renvoyées par ces fonctions ne sont pas garanties d'être,0
et la1
vraie valeur était1024
en effet sur mon système!la source
Candy ,
2622 octets(~ "a" <{A # 64-2 / 3 * | A # 96-} h) ZMerci à @Tryth pour l'astuce de factorisation!
L'invocation est avec le drapeau -I, comme dans
candy -I "Cab" -e $prg
Le code dans sa forme longue est:
la source
Prolog (SWI), 101 octets
Code:
Expliqué:
Exemple:
la source
PHP, 75 octets
Exécuter en tant que pipe avec
-nr
ou l' essayer en ligne .la source