Objectif
L'idée est de fournir le code nécessaire pour mapper un entier 32 bits vers / depuis un mot prononçable de 9 caractères maximum. Cela pourrait être utile, par exemple, pour faciliter la mémorisation d'un numéro de série ou la saisie d'un formulaire.
La méthode de traduction d'un entier en mot correspondant et de traduction en arrière d'un mot en entier correspondant est requise.
Règles
Il doit y avoir un mappage un à un entre les entiers et les mots, et l'ensemble des entiers 32 bits (ou, autrement dit, tout entier compris entre 0 et 4294967295) doit être mappable. Bien que, évidemment, tous les mots ne soient pas significatifs, et la saisie de mots qui ne correspondent pas à un entier peut avoir un comportement non spécifié.
Vous êtes libre de décider exactement quel ensemble de mots "prononçables" est significatif et comment le mappage est effectué, mais les mots doivent au moins suivre ces règles:
- Seules les 26 lettres de base (A ... Z) doivent être utilisées comme caractères. Les accents, le boîtier, etc ... ne doivent pas être utilisés pour étendre les combinaisons possibles.
- 9 caractères maximum par mot.
- deux consonnes (BCDFGHJKLMNPQRSTVWXZ - 20 possibilités) ne doivent pas être placées l'une à côté de l'autre (elles doivent être entourées de voyelles).
- deux voyelles (AEIOUY - 6 possibilités) ne doivent pas être placées l'une à côté de l'autre (elles doivent être entourées de consonnes).
Remarque: le schéma le plus simple où tous les mots sont construits comme CVCVCVCVC
( C
étant une consonne et V
une voyelle) donne 4147200000 combinaisons, et un entier 32 bits a 4294967296 valeurs possibles, donc ce n'est pas suffisant. Vous devez augmenter le nombre de combinaisons, soit en autorisant des mots plus courts, soit en autorisant également des VCVCVCVCV
combinaisons.
D'autres règles standard s'appliquent et les failles standard sont interdites.
Entrées / Sorties
Pour chaque soumission, deux morceaux de code doivent être fournis:
- Celui qui prend un entier comme argument / entrée et retourne / imprime le mot correspondant
- Celui qui prend un mot comme argument / entrée et renvoie / imprime l'entier correspondant
Alternativement, vous pouvez choisir de soumettre un seul morceau de code qui gère les deux opérations:
- Lorsqu'il reçoit un entier en entrée, il génère le mot correspondant
- Lorsqu'une chaîne est donnée en entrée, elle génère l'entier correspondant
Condition gagnante
C'est un code-golf , la réponse qui a le moins d'octets (lors de la sommation des deux morceaux de code, pour les solutions optant pour les morceaux de code séparés) gagne.