Este desafío consta de dos partes. El ganador será la solución con el menor recuento total de bytes. Se debe usar el mismo lenguaje para ambos desafíos.
Parte 1:
Escriba una función o programa que tome una oración con solo palabras válidas como entrada, y genere una lista de los caracteres usados, el número de veces que se usa cada letra y el número de letras en cada una de las palabras en la oración original. La salida de este programa debe ser una entrada válida para el siguiente programa (exactamente como se emite)
Agregaré ejemplos y reglas detalladas más abajo.
Parte 2:
Escriba una función o programa que tome la salida del primer programa como entrada y use esta lista de palabras en inglés y recrea una oración con la información de la salida. La oración no tiene que ser la misma que la oración original.
Más información. reglas y restricciones:
Parte 1:
- La primera entrada puede estar en cualquier formato adecuado, con o sin comillas, como argumento de función o desde STDIN, con o sin corchetes, etc.
- La oración de entrada no contendrá signos de puntuación o caracteres especiales, excepto un punto / punto al final. Excepto por el símbolo de punto, todos los caracteres que están en la entrada estarán en la lista de palabras.
- La primera letra de la oración será mayúscula, el resto será minúscula.
- La salida de la parte 2 debe comenzar con la misma letra mayúscula que la oración original (por lo que no se recomienda convertir la entrada a minúsculas (pero está bien).
- La salida puede estar en cualquier formato adecuado:
- Debe ser posible copiar y pegar la salida directamente en el siguiente programa / función
- No se pueden realizar modificaciones al copiar y pegar, toda la salida se debe copiar y pegar como un todo, no en partes.
- Por ejemplo, puede generar un histograma de todas las letras del alfabeto, o solo las utilizadas (en general, lo que sea necesario para completar la parte 2)
- No puede generar una lista de caracteres donde se repiten múltiples ocurrencias. Por ejemplo,
The queue
no se puede producir una salida:Teeehquu (3,5)
, debería ser algo así como:Tehqu, (1 3 1 1 2),(3 5)
.
Parte 2:
- El programa / función debe aceptar la entrada exactamente como es de la parte 1 (una excepción, vea el comentario a continuación sobre tomar el nombre del archivo como entrada).
- Si se necesitan corchetes, comillas o similares para analizar la entrada, estos deben ser parte de la salida de la parte 1.
- La lista de palabras se puede encontrar aquí.
- La lista de palabras se puede guardar localmente como
w.txt
, o se puede obtener de la url. La url solo contará como 5 bytes, por lo que no necesita un acortador de url. - Si el programa no puede abrir un archivo sin necesidad de leer el nombre como una entrada de STDIN (creo que esto
esfue el caso de Pyth por lo menos), entonces el nombre del archivo puede ser tomado como un argumento de entrada separada.
- La lista de palabras se puede guardar localmente como
- La salida debe ser solo una oración (lista de palabras válidas), que termina con un punto y una nueva línea opcional.
- La salida debe tener palabras con el mismo número de letras que la oración original en la parte 1 (en el orden correcto)
- Todas las letras que se usaron en la oración original deben usarse en la nueva salida.
- La oración debe comenzar con la misma letra mayúscula que la oración de entrada original y terminar con un punto.
Ambas partes:
- Ninguna de las partes debe demorar más de 2 minutos en ejecutarse (no se acepta seleccionar palabras al azar hasta que se llegue a una solución).
Con las reglas enumeradas anteriormente, debe haber una posibilidad justa de que se reproduzca exactamente la misma oración, sin embargo, eso no es un requisito.
Ejemplos:
En los ejemplos a continuación, se muestran algunos formatos de entrada y salida diferentes. Muchos más son aceptados.
Parte 1:
Entrada:
Zulus win.
Salida tipo 1:
Z i l n s u w
1 1 1 1 1 2 1
5 3
Salida tipo 2:
(('Z',1),('i',1),('l',1),('n',1),('s',1),('u',2),('w',1)), (5,2)
Salida tipo 3:
'Zilnsuuw',[1,1,1,1,1,2,1],[5,2]
Parte 2:
Entrada: una copia exacta de la salida de la parte 1. Salida:
Zulus win.
Tenga en cuenta que se aceptan otras combinaciones de palabras siempre que comiencen con a Z
, y la primera palabra tiene 5 letras y la segunda tiene 3.
El código más corto en bytes gana.
f1
que se pega f2
debe contener todos los datos especificados en el desafío. Ningún dato adicional puede ser parte de la salida de f1
. No se pueden "almacenar" f1
datos para hacer que la información esté disponible cuando se la llama f2
. f1
solo puede tomar una cadena como entrada por llamada.