Ce défi se compose de deux parties. Le gagnant sera la solution avec le nombre d'octets total le plus bas. Le même langage doit être utilisé pour les deux défis.
Partie 1:
Écrivez une fonction ou un programme qui prend en entrée une phrase contenant uniquement des mots valides et génère une liste des caractères utilisés, le nombre de fois où chaque lettre est utilisée et le nombre de lettres dans chacun des mots de la phrase d'origine. La sortie de ce programme doit être une entrée valide pour le programme suivant (exactement comme elle est sortie)
J'ajouterai des exemples et des règles détaillées plus bas.
Partie 2:
Écrivez une fonction ou un programme qui prend la sortie du premier programme en entrée et utilise cette liste de mots anglais et recrée une phrase avec les informations de la sortie. La phrase ne doit pas nécessairement être la même que la phrase d'origine.
Plus d'information. règles et restrictions:
Partie 1:
- La première entrée peut être dans n'importe quel format approprié, avec ou sans guillemets, comme argument de fonction ou depuis STDIN, avec ou sans crochets, etc.
- La phrase d'entrée ne contiendra pas de ponctuation ou de caractères spéciaux, à l'exception d'un point / point à la fin. À l'exception du symbole de période, tous les caractères qui sont dans l'entrée seront dans la liste de mots.
- La première lettre de la phrase sera en majuscules, le reste en minuscules.
- La sortie de la partie 2 doit commencer par la même lettre majuscule que la phrase d'origine (il n'est donc pas recommandé de convertir l'entrée en minuscule (mais OK).
- La sortie peut être dans n'importe quel format approprié:
- Il doit être possible de copier-coller la sortie directement dans le prochain programme / fonction
- Aucune modification ne peut être effectuée lors du copier-coller, la sortie entière doit être copiée et collée dans son ensemble, pas en partie.
- Vous pouvez par exemple produire un histogramme de toutes les lettres de l'alphabet, ou seulement celles utilisées (en général, tout ce qui est nécessaire pour compléter la partie 2)
- Vous ne pouvez pas sortir une liste de caractères où plusieurs occurrences sont répétées. Par exemple,
The queue
ne peut pas produire une sortie:Teeehquu (3,5)
, il devrait être quelque chose comme:Tehqu, (1 3 1 1 2),(3 5)
.
Partie 2:
- Le programme / la fonction doit accepter l'entrée exactement comme dans la partie 1 (une exception, voir le commentaire ci-dessous pour prendre le nom de fichier en entrée).
- Si des crochets, des guillemets ou similaires sont nécessaires pour analyser l'entrée, ils doivent faire partie de la sortie de la partie 1.
- La liste de mots peut être trouvée ici.
- La liste de mots peut être enregistrée localement sous
w.txt
, ou récupérée à partir de l'URL. L'URL ne comptera que pour 5 octets, vous n'avez donc pas besoin d'un raccourcisseur d'URL. - Si le programme ne peut pas ouvrir un fichier sans lire le nom comme une entrée de STDIN (je crois que
c'est-ce fut le cas pour Pyth au moins), le nom du fichier peut être considéré comme un argument d'entrée séparée.
- La liste de mots peut être enregistrée localement sous
- La sortie doit être uniquement une phrase (liste de mots valides), se terminant par un point et une nouvelle ligne facultative.
- La sortie doit avoir des mots avec le même nombre de lettres que la phrase originale dans la partie 1 (dans le bon ordre)
- Toutes les lettres utilisées dans la phrase d'origine doivent être utilisées dans la nouvelle sortie.
- La phrase doit commencer par la même lettre majuscule que la phrase d'entrée d'origine et se terminer par un point.
Les deux parties:
- Aucune des parties ne devrait prendre plus de 2 minutes à exécuter (la sélection aléatoire de mots jusqu'à ce qu'une solution soit trouvée n'est pas acceptée).
Avec les règles énumérées ci-dessus, il devrait y avoir de bonnes chances que la même phrase soit reproduite, mais ce n'est pas une exigence.
Exemples:
Dans les exemples ci-dessous, quelques formats d'entrée et de sortie différents sont affichés. Beaucoup d'autres sont acceptés.
Partie 1:
Contribution:
Zulus win.
Type de sortie 1:
Z i l n s u w
1 1 1 1 1 2 1
5 3
Type de sortie 2:
(('Z',1),('i',1),('l',1),('n',1),('s',1),('u',2),('w',1)), (5,2)
Type de sortie 3:
'Zilnsuuw',[1,1,1,1,1,2,1],[5,2]
Partie 2:
Entrée: une copie exacte de la sortie de la partie 1. Sortie:
Zulus win.
Notez que d'autres combinaisons de mots sont acceptées tant qu'elles commencent par un Z
, et le premier mot a 5 lettres et le second a 3.
Le code le plus court en octets gagne.
f1
qui est collée dans f2
doit contenir toutes les données spécifiées dans le défi. Aucune donnée supplémentaire ne peut faire partie de la sortie de f1
. Aucune donnée ne peut être "stockée" pour f1
rendre les informations disponibles lors de l'appel depuis f2
. f1
ne peut prendre qu'une seule chaîne en entrée par appel.