Si tiene un niño pequeño en su casa, es posible que haya encontrado letras de espuma de baño. Estos pueden humedecerse y adherirse a superficies planas como azulejos y al costado del baño para formar palabras y mensajes.
La gama de palabras y mensajes es algo limitado si sólo tiene un juego sin embargo, ya que sólo recibe 36 caracteres: letras mayúsculas A a la Z, y los dígitos 0-9: ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
. Sin embargo, puede ser astuto y abusar de algunas letras y dígitos para formar copias adicionales de otras letras:
3: E
1: I
7: L (when rotated)
M: W (when rotated)
0: O
2: S (when flipped)
5: S
W: M (when rotated)
2: Z
5: Z (when flipped)
O: 0
6: 9 (when rotated)
L: 7 (when rotated)
9: 6 (when rotated)
Tenga en cuenta que estos no son todos bidireccionales, ya que tiende a ser más fácil leer un dígito como parte de una palabra que una letra como parte de un número.
Cada conjunto también viene en una gama de colores, donde cada letra se colorea en secuencia. Por ejemplo, si su conjunto tiene 3 colores, rojo, amarillo y azul, su conjunto sería como:
- Rojo:
ADGJMPSVY147
- Amarillo:
BEHKNQTWZ258
- Azul:
CFILORUX0369
Su tarea, por lo tanto, es tomar tres parámetros (de cualquier manera adecuada) que indiquen una palabra o frase, la cantidad de colores que se utilizarán y la cantidad de conjuntos que tiene, para luego generar una representación de la palabra o frase, en un conjunto de colores adecuados, haciendo uso de sustituciones si es necesario. Si no es posible crear la palabra o frase dada la cantidad de juegos, en su lugar, escriba "No", en los colores apropiados.
Ejemplos
En todos estos, el primer parámetro es la palabra o frase, el segundo es el número de colores y el tercero es el número de conjuntos disponibles.
["bath", 3, 1]
["programming", 3, 2]
["puzzles", 3, 1]
["code golf", 5, 1]
["willow tree", 1, 1]
["impossible phrase", 8, 1]
- solo hay 1 P en un conjunto y no hay sustituciones válidas
Notas
- Puede establecer un valor predeterminado de 1 conjunto si esto ayuda (por ejemplo, un valor de parámetro predeterminado de 1), pero debe admitir varios conjuntos si se solicita. El número de conjuntos que tiene siempre será un entero positivo distinto de cero.
- Si tiene varios conjuntos, todos están coloreados de la misma manera: si A es rojo en el primer conjunto, también será rojo en el segundo conjunto. Los colores se aplican por conjunto, no a todos los conjuntos en una invocación dada
- Debe admitir de 1 a 36 colores: 1 significa que todos los caracteres son del mismo color, 36 significa que todos son distintos. Solo habrá números enteros de colores.
- Puede usar cualquier color, siempre que sean visualmente distintos: si está enviando a la terminal, puede usar una combinación de primer plano y fondo como "color", aunque no debe usar el mismo color para primer plano y fondo
- Su salida debe usar los caracteres que realmente usa, no los caracteres de la entrada. Por ejemplo, si tuviera ["sauce", 1, 1] como entrada, podría salir
WIL7OM
con 7 y M girado 180 grados - Primero debe usar las letras correctas, luego sustituir:
MI7LOW
es incorrecto para ["sauce", 1, 1] - Puede usar cualquier sustitución para un personaje dado:
SO5
ySO2
con un 2 invertido, ambos son válidos para "SOS" - Las invocaciones múltiples de su código para la misma entrada no tienen que producir una salida idéntica
- La salida debe estar en mayúsculas, pero la entrada puede estar en cualquier combinación de mayúsculas y minúsculas
- Debería ser obvio, pero un espacio no tiene color
Reglas
- Este es el código de golf, pero con salida semigrafica (no estoy seguro de si puede hacer texto invertido en una terminal, pero estoy interesado en ver si Pyth tiene incorporado)
- Se aplican lagunas estándar
- No hay bonificaciones por funciones, pero vote por respuestas interesantes
- Incluya algunas capturas de pantalla de su salida en sus respuestas
Desafíos relacionados
- Alfabeto de mi hija : un inverso parcial de este desafío, que busca encontrar un conjunto mínimo de letras para escribir un rango de oraciones
- ¿Una letra cabe dentro de la otra? - sobre un tipo diferente de letras de espuma, pero con una alternativa similar al tema de letras
NOPE
?Respuestas:
HTML / JavaScript (con jQuery) / CSS - no competidor / no golfizado
Solo para que la pelota ruede y demuestre que no es imposible, aquí hay una implementación no competitiva y que no juega al golf que tiene un enfoque ingenuo para la tarea.
Primero crea una cadena de todos los caracteres posibles (
tempalph
), uniendo tantas copias del alfabeto como conjuntos. Luego itera a través de la frase, colocando cada letra de la frase en una variable de salida y eliminando la primera instancia de esa letratempalph
. Si no puede (la letra no existe), verifica si la letra es reemplazable con algo que queda en la cadena. Si eso también falla, genera una salida predefinida "NOPE". Suponiendo que no llega al caso "NOPE", devuelve la cadena de salida y la coloca en un DIV en la página.Luego recorre la cadena del alfabeto base y, si se ha usado una letra, le asigna una clase CSS apropiada, cada una de las cuales tiene un conjunto de colores predefinido.
Utiliza entradas HTML para la entrada, y las actualizaciones en keyup en ellas.
Pruébalo en JSFiddle
Ejemplo para
["BATH", 3, 1]
:JS:
HTML:
CSS:
fuente