Propósito
La idea es proporcionar el código necesario para asignar un número entero de 32 bits a / desde una palabra pronouncable de 9 caracteres como máximo. Eso podría ser útil, por ejemplo, para que un número de serie sea más fácil de recordar, o escriba un formulario.
Se requieren tanto el método para traducir un número entero a la palabra correspondiente como para volver a traducir una palabra al número entero correspondiente.
Reglas
Debe haber un mapeo uno a uno entre enteros y palabras, y todo el conjunto de enteros de 32 bits (o, dicho de otra manera, cualquier entero de 0 a 4294967295) debe ser mapeable. Aunque, obviamente, no todas las palabras serán significativas, y la introducción de palabras que no se asignan a un número entero puede tener un comportamiento no especificado.
Usted es libre de decidir exactamente qué conjunto de palabras "pronouncables" es significativo y cómo se realiza el mapeo, pero las palabras deben al menos seguir estas reglas:
- Solo las 26 letras básicas (A ... Z) deben usarse como caracteres. Los acentos, las carcasas, etc. no deben usarse para extender las posibles combinaciones.
- Máximo 9 caracteres por palabra.
- dos consonantes (BCDFGHJKLMNPQRSTVWXZ - 20 posibilidades) no deben colocarse una al lado de la otra (deben estar rodeadas de vocales).
- dos vocales (AEIOUY - 6 posibilidades) no deben colocarse una al lado de la otra (deben estar rodeadas de consonantes).
Nota: el esquema más simple donde tiene todas las palabras construidas como CVCVCVCVC
( C
siendo una consonante y V
una vocal) da 4147200000 combinaciones, y un entero de 32 bits tiene 4294967296 valores posibles, por lo que no es suficiente. Necesita expandir el número de combinaciones, ya sea permitiendo palabras más cortas o también permitiendo VCVCVCVCV
combinaciones.
Se aplican otras reglas estándar, y las lagunas estándar están prohibidas.
Salidas, entradas
Para cada envío, se deben proporcionar dos piezas de código:
- Uno que toma un número entero como argumento / entrada y devuelve / imprime la palabra correspondiente
- Una que toma una palabra como argumento / entrada y devuelve / imprime el entero correspondiente
Alternativamente, puede optar por enviar una sola pieza de código que maneja ambas operaciones:
- Cuando se le da un entero como entrada, emite la palabra correspondiente
- Cuando se le da una cadena como entrada, genera el entero correspondiente
Condición ganadora
Este es un código de golf , la respuesta que tiene la menor cantidad de bytes (al sumar ambas partes del código, para las soluciones que optan por las partes separadas del código) gana.