Il existe un chiffre très simple qui remplace une lettre par sa position dans l'alphabet. Par exemple, abc
deviendrait 1 2 3
dans ce chiffre.
Ce défi est une version alternative de ce chiffre.
Le défi
Créez un programme qui accepte une entrée de caractères ASCII et génère une chaîne séparée par des espaces de:
entiers à
-26
travers26
lettres à
a
traversj
La sortie doit provenir de STDOUT ou de l'alternative la plus proche de votre langue.
Caractéristiques
Les majuscules doivent être annulées. Un capital
D
par exemple serait-4
, tandis qu'un minuscule led
serait4
.Les chiffres doivent être remplacés par leurs homologues alpha.
1
êtrea
, etc. Tous les zéros dans l'entrée serontj
.Tous les caractères non alphanumériques (à l'exception des espaces) doivent être ignorés.
Les espaces sont
0
.Les espaces adjacents dans la sortie doivent être réduits à un seul espace.
Input: You + Me Correct Output: -25 15 21 0 -13 5 Incorrect Output: -25 15 21 0 0 0 -13 5
Un seul espace de fin ou une nouvelle ligne est autorisé.
Exemples
Input: programming puzzles
Output: 16 18 15 7 18 1 13 13 9 14 7 0 16 21 26 26 12 5 19
Input: Code Golf
Output: -3 15 4 5 0 -7 15 12 6
Input: Programming Puzzles & Code Golf
Output: -16 18 15 7 18 1 13 13 9 14 7 0 -16 21 26 26 12 5 19 0 -3 15 4 5 0 -7 15 12 6
Input: C0d3 G0lf
Output: -3 j 4 c 0 -7 j 12 6
Input: abc_ABC
Output: 1 2 3 -1 -2 -3
Tableau d'affichage
Pour que votre score apparaisse sur le tableau, il doit être dans ce format:
# Language, Bytes
Les barrés ne devraient pas poser de problème.
la source
Réponses:
CJam,
585754515049 octetsJuste au moment où j'ai écrit l'explication, j'ai remarqué qu'une des versions alternatives de 50 octets peut être raccourcie d'un octet ...
Testez-le ici.
Solutions de 50 octets:
Explication
Ce doit être la première fois que le comportement modulo de CJam pour les valeurs négatives m'a été utile.
la source
JavaScript (ES6),
110107133120 octetsPrends ça, vieux moi!
Il y a potentiellement beaucoup plus de place pour le golf, en
particulier dans les regexes, non, ça a assez bien réussi. Version non golfée:Suggestions bienvenues!
la source
All non-alphanumeric characters should be ignored.
. Test: 'A $ b' devrait être-1 2
Pyth,
5049 octetsEssayez-le ici .
Edit: restructuration de la chaîne de nettoyage pour garantir que les traits de soulignement sont traités correctement. Il a même enregistré un octet aussi, yay!
Ce programme crée une chaîne de recherche, qui est utilisée pour nettoyer l'entrée. Ceci est ensuite mappé à l'index correspondant dans cette chaîne. Enfin, tout index supérieur à 26 est converti en le bon caractère ASCII.
Version précédente, qui utilisait l'
\W
expression régulière, à 50 octets:la source
Julia,
145136 bytesNon golfé:
Pour obtenir les chiffres sous forme de lettres, nous ajoutons 58 à la valeur ASCII et soustrayons 10 si le caractère actuel n'est pas 0. Cela garantit que 0 correspond à
j
et que les autres chiffres correspondent àa
-i
.La négation des lettres majuscules se fait à l'aide de
cmp
. Cela renverra -1 pour les lettres majuscules et 1 pour les minuscules.Essayez-le en ligne
la source
Perl 5,
120116113 113105 octetsNettoie d'abord les caractères indésirables et les espaces supplémentaires.
Descend ensuite le tableau ascii pour chaque personnage.
Tester
la source
s/ +/ /g
, le premier regex est faux parce que \ w correspond au caractère de soulignements/[^\w ]|_//g
C,
142138135Ungolfed un peu:
Réussit les tests donnés dans GCC 4.9.3 et Clang 3.5.2.
la source
> <> (poisson),
219209 octetsEssayez-le ici
Ceci est ma première réponse de golf de code! Enfin, j'ai pu utiliser le langage que je voulais utiliser pour un défi de golf de code, et cela semblait le parfait étant donné que les caractères sont automatiquement convertis en décimales.
Je m'attendais à ce que mon résultat soit beaucoup plus court, mais apparemment pas. Cependant, je n'ai pas trop joué à celui-ci. Il y a quelques endroits où le code pourrait être plus propre / plus logique, mais ne sauvera aucun octet car ils sont de toute façon dans des endroits où un espace est nécessaire. Il pourrait y avoir un moyen d'économiser quelques octets sur le dernier bit de la deuxième ligne, en le faisant aller dans la direction opposée et en mélangeant le 00 déjà là, je devrai jouer avec plus tard
Fondamentalement, cela vérifie si le caractère actuel est un espace, un nombre, une lettre majuscule ou minuscule, en vérifiant s'il se trouve dans la plage des valeurs les plus élevées / les plus basses de ce groupe. Si ce n'est pas le cas, il est jeté. S'il se trouve dans l'un de ceux-ci, il est converti en un nombre s'il s'agit d'une lettre et en une lettre s'il s'agit d'un nombre (ou plutôt, un nombre de 97 à 106 qui sont les valeurs des lettres aj). Ensuite, il vérifie si la valeur supérieure est inférieure à 28, auquel cas il s'agit d'un nombre et génère un nombre, sinon c'est une lettre et génère la lettre que le nombre représente, génère un espace, puis boucle jusqu'à ce que la pile soit vide.
la source
JavaScript (ES6), 108
122 124Modifier en utilisant l'expression rationnelle du commentaire de @ Max
Edit2 14 octets enregistrés grâce à ETHProductions
EcmaScript 6 uniquement pour les fonctions fléchées, il devrait donc fonctionner dans Firefox et le dernier Chrome.
Testez l'exécution de l'extrait ci-dessous
la source
[R](/ +/g,' ')[R](/./g,
à[R](/ +|./g,
. (Désolé d'avoirPyth, 57 octets
Démonstration en direct et cas de test.
la source
CJam, 52 octets
Essayez-le en ligne
L'élément clé de la solution est qu'elle utilise l'opérateur CJam
er
(translittération). Comme arguments à l'opérateur, il a besoin de la liste de tous les caractères et d'une liste des valeurs correspondantes.En tant qu'étape de prétraitement sur l'entrée, il supprime les caractères qui ne font pas partie de la table de traduction (caractères spéciaux) et réduit les espaces répétés à un seul espace.
Explication:
la source
Python 2,
191179177173 173172168160 octetsTester
la source
PHP, 116 octets
prend l'entrée de STDIN; courir avec
-nR
.panne
Vous pouvez remplacer le
@
par un crochet pour gérer les espaces dans la partie minuscule.Avecjabcdefghi0
pour les chiffres, vous pouvez également utiliser:
.la source
"#_|[^\w ]#"
au lieu de"#[^\w ]|_#"
.Hassium , 1156 octets
Réponse très longue
la source
You + Me
produit la sortie-25 15 21 0 0 -13 5
.Dec
colonne.)Jelly , 32 octets, défi de postdates de langue
Essayez-le en ligne!
Explication
Fonction d'aide
1Ŀ
(traduit chaque alphanumérique / espace dans l'entrée en un nombre)Fonction d'assistance
2£
(retourne la chaîne constante“jabcdefghi”
)Programme principal
la source
Rétine,
7470 octets (non concurrent)Notez l'espace de début sur la ligne 3, l'espace de fin sur la ligne 6 et la deuxième ligne vide.
Essayez-le en ligne!
Bien que le langage ait été créé avant le défi, je pense que certaines des fonctionnalités linguistiques que j'ai utilisées sont postérieures au défi, j'ai donc marqué cela comme non concurrentiel.
la source
Java 7,
257254 octetsEssayez-le ici.
Explication:
Exemple d'entrée et de sortie:
la source