Comme tout le monde le sait , l'ajout inator-3000
à la fin de n'importe quel nom le rend beaucoup plus cool. Mais quoi d'autre peut rendre un mot plus cool?
Étant donné une chaîne ASCII en entrée, affichez la fraîcheur du mot.
Calcul de la fraîcheur
Il y a 4 éléments pour calculer la fraîcheur d'un mot.
- Le mot lui-même. Le score de base est le nombre de lettres majuscules multiplié par 1000
- Le numéro de fin. Un nombre à la fin du mot (tel que burninator- 3000 ) est ajouté au score de base, mais si le nombre est supérieur à 4 chiffres, ils sont trop gourmands et le nombre doit être ignoré.
- Le connecteur. Un espace avant le numéro de fin ajoute 1000, tandis qu'un trait d'union ajoute 2000, tout autre symbole, ou aucun symbole du tout, n'a aucun effet.
- Le suffixe. Si le mot se termine par
ator
, doublez le score final. S'il se termineinator
, triplez le score. Ce ne sont pas sensibles à la casse.
Ainsi, par exemple, Burninator-3000
peut être calculé comme suit:
1 Capital letter - Base Score: 1000
(1000(base) + 3000(number) + 2000(hyphen)) * 3(suffix) = 18000
Cas de test
Burninator-3000 -> 18000
Burnator3000 -> 8000
BurNinator 100 -> 9300
BuRnInAtOr-7253 -> 42759
burn -> 0
burn- -> 0
bUrn-1 -> 3001
inator-7 -> 6021
ator 56 -> 2112
burninators 1000 -> 2000
burn_1000 -> 1000
BURNINATOR-9999 -> 65997
burninator 99999 -> 3000
burninator_99999 -> 0
Code Golfinator-3000 -> 21000
inator ator hello world-1000 -> 3000
javaiscool_99999 -> 0
hypen-ated -> 0
1000 -> 1000
-1000 -> 3000
10000 -> 0
-10000 -> 2000
BURN1N470R-3000 -> 11000
Notation
Il s'agit de code-golf , donc le moins d'octets dans chaque langue gagne!
inator ator hello world-1000
(ou similaire)9028
et-7282
(Seuls les chiffres)burninator 99999
3000 pas 1000? L'espace ajoute 1000 et a triplé pour finir en inator.Réponses:
JavaScript (ES6),
138133128 octetsComment?
Le nombre de majuscules est donné par:
Tous les autres critères sont déduits du résultat de l'expression régulière suivante, qui est divisée en 4 variables:
Cas de test
Afficher l'extrait de code
la source
Vanille C, 447 octets
(Enveloppé pour plus de lisibilité)
... ou même ... humeur du vendredi!
(Je n'ai pas utilisé d'outils pour créer le code. En fait, j'ai vraiment de la chance d'avoir choisi les bonnes largeurs de colonne sans aucun calcul préalable. Et il compile même!)
Vanille C, 789 octets
Code d'origine:
Après la 1ère minimisation:
Cas de test
la source
C #,
322317 octetsEssayez-le en ligne!
Version complète / formatée:
La division de l'expression régulière dans sa propre méthode est désormais de 4 octets de plus (sauf si j'ai raté quelque chose) car seule une lambda est autorisée. Cela arrive à 321 octets:
la source
b=c=>d=>c.Groups[d].Value
sauverait-elle pas un peu?string m(string s,int n)=>Text.RegularExpressions.Regex.Match(s,"(.*?)([- ])?(\\d+)$").Groups[n].Value.ToLower();string t=m(s,1),c=m(s,2),n=m(s,3);
mais je crois que cela fait alors 3 octets de plus.Perl, 108 octets
107 octets code + 1 pour
-p
.Essayez-le en ligne!
la source
PHP> = 7.1, 165 octets
Cas de test
la source