Si vous avez un petit enfant dans votre maison, vous avez peut-être rencontré des lettres de bain en mousse. Ceux-ci peuvent être humidifiés et collés sur des surfaces planes telles que les carreaux et le côté du bain pour faire des mots et des messages.
La gamme si vous avez seulement des mots et des messages est quelque peu limité un jeu bien, puisque vous obtenez seulement 36 caractères: lettres majuscules AZ, et les chiffres 0-9: ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
. Cependant, vous pouvez être rusé et abuser de certaines lettres et chiffres pour former des copies supplémentaires d'autres lettres:
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)
Notez que ceux-ci ne sont pas tous bidirectionnels, car il a tendance à être plus facile de lire un chiffre comme partie d'un mot qu'une lettre comme partie d'un nombre.
Chaque ensemble est également disponible dans une gamme de couleurs, où chaque lettre est colorée en séquence. Par exemple, si votre ensemble a 3 couleurs, rouge, jaune et bleu, votre ensemble serait comme:
- Rouge:
ADGJMPSVY147
- Jaune:
BEHKNQTWZ258
- Bleu:
CFILORUX0369
Votre tâche consiste donc à prendre trois paramètres (de toute manière appropriée) indiquant un mot ou une phrase, le nombre de couleurs à utiliser et le nombre de jeux dont vous disposez, puis de produire une représentation du mot ou de la phrase, en un ensemble de couleurs appropriées, en utilisant des substitutions si nécessaire. S'il n'est pas possible de faire le mot ou la phrase étant donné le nombre de jeux, à la place, affichez "Non", dans les couleurs appropriées.
Exemples
Dans tous ces cas, le premier paramètre est le mot ou la phrase, le second est le nombre de couleurs et le troisième est le nombre de jeux disponibles.
["bath", 3, 1]
["programming", 3, 2]
["puzzles", 3, 1]
["code golf", 5, 1]
["willow tree", 1, 1]
["impossible phrase", 8, 1]
- il n'y a que 1 P dans un ensemble, et aucune substitution valide
Remarques
- Vous pouvez définir par défaut 1 jeu si cela vous aide (par exemple, une valeur de paramètre par défaut de 1), mais vous devez prendre en charge plusieurs jeux sur demande. Le nombre d'ensembles que vous avez sera toujours un entier positif non nul.
- Si vous avez plusieurs ensembles, ils sont tous colorés de la même manière: si A est rouge dans le premier ensemble, il sera également rouge dans le deuxième ensemble. Les couleurs sont appliquées par ensemble, pas à tous les ensembles dans une invocation donnée
- Vous devez prendre en charge 1 à 36 couleurs - 1 signifie que tous les personnages sont de la même couleur, 36 signifie qu'ils sont tous distincts. Il n'y aura que des nombres entiers de couleurs.
- Vous pouvez utiliser toutes les couleurs, tant qu'elles sont visuellement distinctes - si vous effectuez une sortie vers le terminal, vous pouvez utiliser une combinaison de premier plan et d'arrière-plan comme "couleur", bien que vous ne devez pas utiliser la même couleur pour le premier plan et l'arrière-plan.
- Votre sortie doit utiliser les caractères que vous utilisez réellement, pas les caractères de l'entrée. Par exemple, si vous aviez ["saule", 1, 1] en entrée, vous pourriez sortir
WIL7OM
avec 7 et M tournés de 180 degrés - Vous devez d'abord utiliser les bonnes lettres, puis les remplacer:
MI7LOW
est incorrect pour ["saule", 1, 1] - Vous pouvez utiliser n'importe quelle substitution pour un caractère donné:
SO5
etSO2
avec un 2 inversé sont tous deux valables pour "SOS" - Les appels multiples de votre code pour la même entrée n'ont pas à produire une sortie identique
- La sortie doit être en majuscules, mais l'entrée peut être dans n'importe quel mélange de majuscules et de minuscules
- Cela devrait être évident, mais un espace n'a pas de couleur
Règles
- Il s'agit de code golf, mais avec une sortie semi-graphique (je ne sais pas si vous pouvez faire du texte inversé dans un terminal, mais je suis intéressé de voir si Pyth a une fonction intégrée pour cela)
- Des échappatoires standard s'appliquent
- Il n'y a pas de bonus pour les fonctions, mais votez pour des réponses intéressantes
- Inclure des captures d'écran de votre sortie dans vos réponses
Défis liés
- Alphabet de ma fille - un inverse partiel de ce défi, en cherchant à trouver un ensemble minimal de lettres pour écrire une gamme de phrases
- Une lettre rentre-t-elle dans l'autre? - sur un type différent de lettres en mousse, mais avec une alternative similaire au thème des lettres
NOPE
?Réponses:
HTML / JavaScript (avec jQuery) / CSS - non compétitif / non golfé
Juste pour lancer la balle et montrer que ce n'est pas impossible, voici une implémentation non golfée et non compétitive qui adopte une approche naïve de la tâche.
Il crée d'abord une chaîne de tous les caractères possibles (
tempalph
), en joignant autant de copies de l'alphabet qu'il y a de jeux. Ensuite, il parcourt la phrase, en plaçant chaque lettre de la phrase dans une variable de sortie et en supprimant la première instance de cette lettretempalph
. Si ce n'est pas le cas (la lettre n'existe pas), il vérifie si la lettre est remplaçable par quelque chose qui reste dans la chaîne. Si cela échoue également, il produit une sortie "NOPE" prédéfinie. En supposant qu'il ne frappe pas le cas "NOPE", il retourne la chaîne de sortie et la place dans un DIV sur la page.Il parcourt ensuite la chaîne de l'alphabet de base et, si une lettre a été utilisée, lui attribue une classe CSS appropriée, dont chacune a un jeu de couleurs prédéfini.
Il utilise des entrées HTML pour la saisie et des mises à jour sur la saisie.
Essayez-le sur JSFiddle
Exemple pour
["BATH", 3, 1]
:JS:
HTML:
CSS:
la source