Jones quiere hacer un viaje de ida y vuelta en su bicicleta. Quiere visitar varias ciudades en orden arbitrario, pero su ruta no debe cruzarse por sí misma, ya que odia estar en el mismo lugar dos veces en sus vacaciones. Como realmente ama el ciclismo, la duración de su ruta es completamente irrelevante, pero no le gusta conducir por el paisaje sin un objetivo. La ruta que le gusta es desde una ciudad en línea recta a otra, sin ningún desvío.
Como el Sr. Jones es un apasionado del golf de códigos, quiere que encuentres un programa que planee un viaje de ida y vuelta para él, dado un conjunto de ciudades. La entrada tiene la forma A (B|C)
. A
es el nombre de una ciudad B
y C
son sus coordenadas. Puede suponer que las coordenadas son positivas y menos de 1000. Los conjuntos de datos para las ciudades están separados por líneas. Aquí hay un ejemplo de cómo se vería una entrada de ejemplo:
SomeTown (1 | 10) Ciudad (3 | 4) Donde sea (7 | 7) Inicio (5 | 1)
El Sr. Jones no es pedante, solo quiere tener un programa útil. Por lo tanto, puede decidir por sí mismo cómo se ve la salida, siempre que cumpla con estos criterios:
- El resultado es un mapa de las ciudades, con la ruta dibujada entre ellas. Si algo es correcto, la ruta no debería solaparse y debería terminar donde comenzó
- Las coordenadas son como en la programación habitual: (1 | 1) está en la esquina NO. Agregue una especie de regla al borde de los mapas, para facilitar su lectura.
- Los nombres de las ciudades deben escribirse en el mapa, pero puede usar las abreviaturas que se explican en otro lugar del mapa
- El mapa puede ser tanto ASCII-art como una imagen
- Mantenga la salida legible
Una salida podría verse así:
1234567 1 D 2 * * 3 * * 4 B * 5 * * 6 * * 7 * C 8 * ** 9 * * 10 A** A: SomeTown B: ciudad C: donde sea D: inicio
El programa con el recuento de caracteres más pequeño gana. No cuento los parámetros para el compilador / intérprete, si son necesarios para la compilación, pero no abuses de esta regla. Se aplican las reglas habituales del código de golf.
Aquí hay otro caso de prueba. Su salida no tiene que coincidir con la mía, ni tiene que elegir el mismo camino que yo. La salida se dibuja a mano y muestra una salida posible. Entrada:
hogar (5 | 7) supermercado (13 | 12) parque (15 | 5) nueva plaza (9 | 16) casa de un amigo (20 | 11) antiguo castillo (14 | 21) a orillas del río (1 | 20) playa (10 | 1) cine (21 | 18) bosque (23 | 7) pequeña isla (21 | 1) museo del código-golf (6 | 25) aeropuerto (18 | 25) tienda de té (24 | 14) restaurante (24 | 22) gran puente (3 | 12) Edificio SO (25 | 9)
Y este es un ejemplo de salida:
1111111111222222 1234567890123456789012345 1 H * * K 2 * * * * 3 * * * * 4 * * ** * 5 * C * 6 * * 7 AJ 8 * * 9 * Q 10 * * 11 * *** E * 12 PB *** * * 13 * * * * 14 * * * N 15 * * * * 16 * D * * 17 * * * * 18 * * I * 19 * * * * 20G * * * 21 * F * * 22 * ** * O 23 * ** * ** 24 * ** * * 25 L ** M ** Una casa B: supermercado C: parque D: nueva plaza E: casa de un amigo F: antiguo castillo G: Riverside H: playa Yo: cine J: bosque K: pequeña isla L: museo del código-golf M: aeropuerto N: tienda de té O: restaurante P: gran puente Q: edificio SO
No soy hablante nativo de inglés. Siéntase libre de corregir mi idioma y gramática, si es necesario.