Eh bien, il s'avère que le nom d' utilisateur de Doorknob sur GitHub, Reddit et d'autres sites est KeyboardFire . Ça me donne une idée...
La tâche
Vous travaillez chez KeyboardFire Inc., une entreprise qui fabrique des claviers spéciaux. Et, par "spécial", je veux dire que chaque fois que vous appuyez sur une touche, quelque chose dans votre maison s'allume! Avec la nouvelle série de poignées de clavier KeyboardFire, les objets qui s'allument sont des poignées de porte.
Cependant , en raison des réglementations gouvernementales stupides, vos utilisateurs doivent savoir quelles poignées de porte de leur maison s'allument.
Considérez cet art ASCII d'une partie d'un clavier QWERTY:
1|2|3|4|5|6|7|8|9|0
q|w|e|r|t|y|u|i|o|p
a|s|d|f|g|h|j|k|l
z|x|c|v|b|n|m
(Les |
symboles représentent les limites entre les clés.)
Nous pouvons traiter ce dessin ASCII exact comme un "graphique" de toutes sortes, où chaque caractère de la plage [a-z0-9]
a un index x (horizontal) et y (vertical), où (0,0)
est 1
. Par exemple, la lettre d
a les coordonnées (2,6)
(les tuyaux et les espaces sont inclus dans le calcul des coordonnées).
Pensons maintenant à la maison de chaque utilisateur. Chaque maison peut être dessinée de haut en bas comme un art ASCII 20x4 (dans ce monde où il est légal de vendre des claviers destructeurs, chaque maison est de la même taille). Nous pouvons utiliser D
's pour marquer la position de chaque poignée de porte dans la maison. Voici un exemple:
D D D D
D
D D
Nous appellerons cela la "carte de la maison". (Oui, c'est beaucoup de poignées de porte!)
Appuyez sur n'importe quelle touche pour allumer la poignée de porte la plus proche. Par exemple, si nous prenons les coordonnées précédentes de la lettre d
, la poignée de porte la plus proche (par la distance de Manhattan) est aux coordonnées (1,4)
. C'est la poignée de porte qui s'allume en feu lorsque la lettre d
est frappée. Si nous marquions la poignée de porte flamboyante avec un F
, le résultat serait:
D D D D
F
D D
Les spécifications
Votre programme prendra deux entrées:
- Une chaîne qui correspond au modèle
[a-z0-9]+
. - Une carte de la maison. Cela peut être une chaîne, une liste de chaînes ou quelque chose d'équivalent.
Vous devez parcourir chaque lettre de la chaîne et allumer la poignée de porte respective en feu (changer sa lettre en an F
). Si la poignée de porte la plus proche est déjà en feu, laissez-la telle quelle. S'il y a plus d'une poignée de porte qui pourrait être allumée en feu en utilisant cette méthode, vous pouvez allumer celle que vous voulez.
Une fois la chaîne entière traitée de cette manière, vous devez imprimer la carte de maison résultante.
Code-golf, donc le programme le plus court gagne. Les failles standard interdites comme d'habitude.
Exemple
Chaîne:
helloworld123
Plan de la maison:
D D D D
D
D D
Résultats possibles:
F F F D
F
D F
Ou:
F D F D
F
D F
Ou:
F F D D
F
F F
Ou:
F D D D
F
F F
EDIT: Euh ... y a-t-il une raison pour laquelle j'ai une réponse, même avec une prime de +50? Si vous trouvez les instructions compliquées / vagues, je serais heureux si vous avez posté dans les commentaires ou quelque chose ... ou si je fais quelque chose de mal ...
EDIT 2: Bounty expire dans moins d'un jour! Postez autre chose! S'il vous plaît! S'IL VOUS PLAÎT!!!! :(
d
les coordonnées de (2, 6) et non (2, 2)? 2) Pourquoi l'exemple a-t-il autant de réponses possibles? 3) Quand vous expliquez comment les choses vont s'allumer, pourquoi parlez-vous mêmed
? Pourquoi ne pas dire tout de suite que le fait d'appuyera
allumera une maison en feu? Led
fait-il aussi?