Este es un tablero final de Settlers of Catan:
Antecedentes:
Las pequeñas cabañas representan los caminos (los pedazos largos) y los asentamientos (y ciudades). Codificamos la ubicación de estas piezas mediante el siguiente esquema: Desde la parte superior, tenemos una fila de vértices horizontales y bordes donde se puede colocar una carretera. Luego tenemos una columna de solo caminos, y así sucesivamente. Usando R para Rojo, O para Naranja y B para Azul, y _ para nada, el tablero ilustrado se codificaría como:
________RR_R_
__R_
__RR_R_RRR_____R_
B___R
_B_________B__OO_OOR_
B__B_R
BB_BBB_____B____RR_R_
OBB_O
OO__BB_BB__OOO_OO
O_O_
_O_OOO_O_____
Un tablero como este será su cadena de entrada. Cualquier letra [A-Z]
puede indicar un color de jugador, pero habrá como máximo cuatro colores (incluido el vacío). Las juntas están garantizadas de otra manera para ser válidas de acuerdo con las reglas de los colonos, lo que significa:
- Cada color tendrá a lo sumo dos redes de carreteras contiguas, que pueden ser separadas o no por asentamientos / ciudades de otros jugadores (edificios de vértices). Vea el asentamiento naranja separando el camino rojo en el lado derecho de la imagen de muestra.
- Se garantiza que cada red de carreteras tenga al menos un asentamiento.
- Se garantiza que todos los asentamientos y ciudades estarán al menos a dos bordes del otro asentamiento / ciudad más cercano (el suyo o no)
- Un jugador solo puede tener 15 caminos en el tablero de juego.
- Para los entusiastas de Catan: no hay distinción entre asentamientos y ciudades a los efectos de este problema, por lo que no distingo en la cadena de entrada.
Todo esto es para la especificación de la cadena de "entrada".
Camino más largo:
En los colonos, los jugadores obtienen dos puntos de victoria por tener el "camino más largo". Esto se define como: La ruta única contigua más larga (medida en carreteras) desde el punto de inicio hasta el punto final, que no está dividida por un asentamiento o ciudad de oponentes . Los ciclos están bien, siempre que pueda rastrear la ruta desde un punto de inicio en particular hasta un punto final en particular. Por lo tanto, un bucle de 6 carreteras más una ramificación de la carretera es de longitud 7, pero una con dos ramificaciones de la carretera de 6 en lados opuestos todavía solo vale 7.
En el mapa de ejemplo, el camino Rojo en el lado derecho solo vale 4, porque está bloqueado por un asentamiento Naranja en el lado derecho del tablero (es por eso que los asentamientos están incluidos). El azul tiene un camino de longitud 13, y el naranja tiene un camino de longitud 12. El camino superior del rojo solo vale 7, porque no se conecta a los dos caminos individuales al lado.
Salida:
Todos los jugadores que tienen un camino de la longitud más larga (podría ser más de uno si hay empates), seguido de un espacio en blanco y / o un recuento delimitado por subrayado en la base 10 de cuánto tiempo es ese camino.
Entonces la salida para el tablero de ejemplo sería:
B 13
La declaración del problema:
Puede escribir un programa o función , recibe la placa de entrada a través de STDIN o como un argumento de cadena a su función, que devuelve la salida descrita anteriormente como una cadena o la imprime en STDOUT (o la alternativa más cercana). Opcionalmente, puede incluir una nueva línea final en la salida.
Este es el código de golf , el programa más corto gana. Las lagunas estándar están prohibidas, por supuesto .
From the top, we have a row horizontal vertices and edges where a road can be placed. Then we have a column of only roads, and so forth.
Me tomó varios minutos entender qué significaba esto. Debe explicar más claramente que las filas horizontales también incluyen los asentamientos y las ubicaciones de los asentamientos.