Voici un art ASCII d'une intersection à 4 voies:
| | |
| |
| | |
| |
| | |
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
(Notez que les routes horizontales mesurent 3 rangées, tandis que les routes verticales ont 5 colonnes de large. C'est pour des raisons esthétiques, en raison de la police rectangulaire.)
Votre défi est de produire cet art ASCII. Cependant, comme vous le savez sûrement tous, toutes les intersections n'ont pas de route qui part dans toutes les directions. Cette intersection va NESW
, mais certaines intersections pourraient aller, par exemple NW
,:
| | |
| |
| | |
| |
| | |
-----+-----+
| |
- - -| |
| |
-----+-----+
Ou cela pourrait aller SWE
:
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
Ou il peut même aller E
dans une seule direction (même si vous pouvez difficilement appeler cela une intersection , mais essayez d'éviter d'être trop pédant):
+-----+-----
| |
| |- - -
| |
+-----+-----
Vous devez écrire un programme ou une fonction qui peut facilement générer n'importe laquelle de ces combinaisons. Plus précisément, votre défi consiste à écrire un programme ou une fonction qui prend une chaîne de directions, consistant NESW
en entrée et qui renvoie ou renvoie cet art ASCII d'une intersection avec des routes pointant dans ces directions. Ces instructions peuvent apparaître dans un ordre quelconque, mais l'entrée ne contiennent aucun caractère à l' exception N
, E
, S
ou W
. Si vous le souhaitez, vous pouvez demander que les entrées soient en minuscules à la place, mais vous devez le spécifier dans votre réponse. Vous pouvez également supposer que toutes les entrées contiendront au moins une direction.
Le dernier exemple avait des espaces de tête sur chaque ligne, car il n'y a pas de route vers l'ouest. Si vous n'avez pas de route vers l'ouest, ces espaces de tête sont facultatifs. Cette:
+-----+-----
| |
| |- - -
| |
+-----+-----
Serait également une sortie acceptable. De même, si N
ou S
est parti, les lignes vides à cet endroit sont facultatives. Une nouvelle ligne de fin est autorisée et les espaces de fin sont autorisés tant que la sortie est visuellement la même.
Vous pouvez prendre des entrées et des sorties dans n'importe quel format raisonnable, tel que STDIN / STDOUT, les arguments de ligne de commande, les fichiers, les arguments de fonction / valeurs de retour, etc.
Comme d'habitude, il s'agit de code-golf , alors essayez d'obtenir la réponse la plus courte possible dans la langue que vous utilisez!
Exemple d'E / S:
NESW:
| | |
| |
| | |
| |
| | |
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
NS:
| | |
| |
| | |
| |
| | |
+-----+
| |
| |
| |
+-----+
| | |
| |
| | |
| |
| | |
S:
+-----+
| |
| |
| |
+-----+
| | |
| |
| | |
| |
| | |
EW:
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
SE:
+-----+-----
| |
| |- - -
| |
+-----+-----
| | |
| |
| | |
| |
| | |
E
, par exemple)? Les lignes vides de début et de fin sont-elles autorisées s'il n'y a pas deN
ouS
?