Un sauteur est une catégorie de pièce d'échecs de fée qui se déplace en "sautant". Un chevalier normal est un (1,2) -leaper, ce qui signifie que chaque mouvement implique de déplacer une distance de 1 carré dans une direction orthogonale et 2 carrés dans la direction perpendiculaire.
.o.o.
o...o
..N..
o...o
.o.o.
Il existe de nombreux sauteurs différents. Le (1,3) -leaper est appelé le Long Knight ou Camel. Son motif de déplacement ressemble à ceci:
..o.o..
.......
o.....o
...L...
o.....o
.......
..o.o..
Il y a aussi le (2,2) Alfil ...
o...o
.....
..A..
.....
o...o
... et même le (0,1) Wazir.
.o.
oWo
.o.
Défi
Étant donné une paire de nombres en entrée, sortez le diagramme de mouvement correspondant. Vous pouvez écrire un programme ou une fonction, avec une entrée fournie via STDIN / ligne de commande ou comme argument, et la sortie fournie par STDOUT ou la valeur de retour. C'est du code-golf .
Contribution
L'entrée sera une liste séparée par des virgules de deux entiers et une lettre majuscule. Les deux entiers seront dans la plage 0-7
(inclus) et dans l'ordre non décroissant. Retour à la ligne en option pour l'entrée et la sortie.
Voici les entrées pour les quatre exemples ci-dessus:
1,2,N
1,3,L
2,2,A
0,1,W
Production
La sortie sera une chaîne multiligne carrée. La lettre majuscule sera placée au centre pour représenter l'emplacement actuel de la pièce. Les emplacements de mouvement seront représentés par 4 ou 8 minusculeso
. Tous les autres espaces de la place seront remplis de points.
Si le modèle de mouvement est 0,0
, sortez uniquement la lettre majuscule.
À titre indicatif, si le deuxième entier (le plus grand) a la valeur N, alors le carré aura toujours une longueur de côté 2N + 1. Les o
s seront toujours sur le périmètre du carré.
Cas de test supplémentaires
1,1,F
o.o
.F.
o.o
5,7,Q
..o.........o..
...............
o.............o
...............
...............
...............
...............
.......Q.......
...............
...............
...............
...............
o.............o
...............
..o.........o..
0,0,J
J
Réponses:
Rubis, 107
Non testé dans le programme de test
la source
Pyth, 40 octets
J'apprends Pyth! Essayez-le .
Explication
la source
JavaScript (ES6),
163161145 octetsOù se
\n
trouve le nouveau caractère de ligne littéral. Fonctionne en générant le quadrant inférieur droit et en le reflétant le long des deux axes.Edit: sauvé 2 octets grâce à @ edc65.
(Je suis arrivé ici via une question en double qui a permis un résultat de tableau qui aurait été 19 octets plus court, mais ne garantissait pas un ordre non décroissant, ce qui a gaspillé 8 octets.)
la source
fill
et une nouvelle ligne littérale\n
est le nouveau caractère de ligne littérale" quand je le fais) mais merci pour l'autre conseil.JavaScript (ES6) 144
150Moins golfé
Tester
la source