M. Jones veut faire un aller-retour sur son vélo. Il veut visiter plusieurs villes dans un ordre arbitraire, mais son itinéraire ne doit pas le traverser lui-même, car il déteste être au même endroit deux fois pendant ses vacances. Comme il aime vraiment le vélo, la longueur de son parcours est complètement hors de propos, mais il n'aime pas conduire dans le paysage sans cible. L'itinéraire qu'il aime est d'une ville en ligne droite à l'autre, sans aucun détour.
Comme M. Jones est un golfeur passionné de code, il veut que vous trouviez un programme, qui prévoit un aller-retour pour lui, étant donné un ensemble de villes. L'entrée a la forme A (B|C)
. A
est le nom d'une ville, B
et C
sont ses coordonnées. Vous pouvez supposer que les coordonnées sont positives et inférieures à 1 000. Les ensembles de données pour les villes sont séparés par des lignes. Voici un exemple, à quoi pourrait ressembler un exemple d'entrée:
SomeTown (1 | 10) ACity (3 | 4) Partout (7 | 7) Accueil (5 | 1)
M. Jones n'est pas pédant, il veut juste avoir un programme utile. Ainsi, vous pouvez décider par vous-même à quoi ressemble la sortie, tant qu'elle répond à ces critères:
- Le résultat est une carte des villes, avec l'itinéraire tracé entre elles. Si quelque chose est correct, l'itinéraire ne doit pas se chevaucher et doit se terminer là où il a commencé
- Les coordonnées sont comme dans la programmation habituelle: (1 | 1) est dans le coin NW. Ajoutez une sorte de règle à la bordure des cartes pour en faciliter la lecture
- Les noms des villes doivent être écrits sur la carte, mais n'hésitez pas à utiliser des abréviations qui sont expliquées ailleurs sur la carte
- La carte peut être à la fois de l'art ASCII ou une image
- Gardez la sortie lisible
Une sortie pourrait ressembler à ceci:
1234567 1 D 2 * * 3 * * 4 B * 5 * * 6 * * 7 * C 8 * ** 9 * * 10A ** A: SomeTown B: ACity C: Partout D: Accueil
Le programme avec le plus petit nombre de caractères gagne. Je ne compte pas les paramètres dans le compilateur / interprète, s'ils sont nécessaires pour la compilation, mais veuillez ne pas abuser de cette règle. Les règles de golf habituelles s'appliquent.
Voici un autre cas d'essai. Votre sortie ne doit pas nécessairement correspondre à la mienne, ni choisir le même chemin que moi. La sortie est dessinée à la main et montre une sortie possible. Contribution:
maison (5 | 7) supermarché (13 | 12) parc (15 | 5) nouvelle place (9 | 16) maison d'amis (20 | 11) vieux château (14 | 21) bord de rivière (1 | 20) plage (10 | 1) cinéma (21 | 18) forêt (23 | 7) petite île (21 | 1) musée du code-golf (6 | 25) aéroport (18 | 25) salon de thé (24 | 14) restaurant (24 | 22) grand pont (3 | 12) Bâtiment SO (25 | 9)
Et ceci est un exemple de sortie:
1111111111222222 1234567890123456789012345 1 H * * K 2 * * * * 3 * * * * 4 * * ** * 5 * C * 6 * * 7 AJ 8 * * 9 * Q dix * * 11 * *** E * 12 PB *** * * 13 * * * * 14 * * * N 15 * * * * 16 * D * * 17 * * * * 18 * * I * 19 * * * * 20G * * * 21 * F * * 22 * ** * O 23 * ** * ** 24 * ** * * 25 L ** M ** Une maison B: supermarché C: parc D: nouvelle place E: la maison d'un ami F: vieux château G: au bord de la rivière H: plage I: cinéma J: forêt K: petite île L: musée du code-golf M: aéroport N: salon de thé O: restaurant P: grand pont Q: bâtiment SO
Je ne suis pas un locuteur natif anglais. N'hésitez pas à corriger ma langue et ma grammaire, si nécessaire.
Haskell, 633 caractères
Plutôt long pour le golf de code, mais produit une belle carte SVG:
Ou, si votre navigateur ne peut pas gérer SVG, un PNG de cette image:
viewBox
; aussi quelques coups de golf ici et là.la source
Python,
516476 octets(Remarque: je n'ai pas inclus les deux premières lignes dans le nombre d'octets, je les considère comme des "paramètres d'interpréteur". Mais je me suis facturé pour la longueur utf-8 du programme en octets.)
Sur votre deuxième exemple, je produis:
Oui, les glyphes Unicode!
la source
Python, 1074 octets
Ok, j'ai dépensé beaucoup trop d'octets (et de temps) pour trouver des chemins raisonnables pour travailler.
Fait de beaux chemins, cependant:
et
la source