Objetivo
A idéia é fornecer o código necessário para mapear um número inteiro de 32 bits de / para uma palavra pronunciável de no máximo 9 caracteres. Isso pode ser útil, por exemplo, para facilitar a lembrança de um número de série ou digitar um formulário.
É necessário o método para traduzir um número inteiro para a palavra correspondente e para converter novamente uma palavra para o número inteiro correspondente.
Regras
Deve haver um mapeamento individual entre números inteiros e palavras, e todo o conjunto de números inteiros de 32 bits (ou, de outra forma, qualquer número inteiro de 0 a 4294967295) deve ser mapeado. Embora, obviamente, nem todas as palavras sejam significativas, e a inserção de palavras que não são mapeadas para um número inteiro pode ter um comportamento não especificado.
Você é livre para decidir exatamente qual conjunto de palavras "pronunciáveis" é significativo e como o mapeamento é feito, mas as palavras devem pelo menos seguir estas regras:
- Somente as 26 letras básicas (A ... Z) devem ser usadas como caracteres. Acentos, revestimento, etc ... não devem ser usados para estender as combinações possíveis.
- Máximo de 9 caracteres por palavra.
- duas consoantes (BCDFGHJKLMNPQRSTVWXZ - 20 possibilidades) não devem ser colocadas próximas uma da outra (elas devem estar rodeadas de vogais).
- duas vogais (AEIOUY - 6 possibilidades) não devem ser colocadas próximas uma da outra (elas devem estar cercadas por consoantes).
Nota: o esquema mais simples no qual todas as palavras são construídas como CVCVCVCVC
( C
sendo uma consoante e V
uma vogal) fornece combinações 4147200000 e um número inteiro de 32 bits possui 4294967296 valores possíveis, portanto, não é suficiente. Você precisa expandir o número de combinações, permitindo palavras mais curtas ou permitindo VCVCVCVCV
combinações também.
Aplicam-se outras regras padrão e as brechas padrão são proibidas.
Entradas saídas
Para cada envio, dois códigos devem ser fornecidos:
- Um que recebe um número inteiro como argumento / entrada e retorna / imprime a palavra correspondente
- Uma que pega uma palavra como argumento / entrada e retorna / imprime o número inteiro correspondente
Como alternativa, você pode optar por enviar um único trecho de código que lida com as duas operações:
- Quando um número inteiro é fornecido como entrada, ele gera a palavra correspondente
- Quando recebe uma string como entrada, gera o número inteiro correspondente
Condição vencedora
Este é um código-golfe , a resposta que possui o menor número de bytes (ao somar os dois trechos de código, para soluções que optam por trechos separados) ganha.