Se le darán dos entradas: una cadena en formato codificado de longitud de recorrido que define la pista de atletismo y una letra mayúscula que representa el carril desde el que comenzar. Por ejemplo, la cadena "3a4A6b5B" se expande a "aaaAAAAbbbbbbBBBBB". Luego usa la cadena expandida para crear una pista, como tal:
A) aaaAAAA
B) bbbbbbBBBBB
Esta es una pista con dos carriles. Las letras minúsculas representan aire. ¡No puedes correr en el aire! Las letras mayúsculas representan el camino por el que puede correr. Su objetivo para este desafío es, dada una letra mayúscula, indicar hasta qué punto podría correr un corredor que comience en ese carril. Los corredores pueden cambiar de carril si hay una carretera directamente encima o debajo de ellos. ¡También se les permite correr hacia atrás! En esta pista en particular, la salida es 0 para cualquier entrada de letras, porque ninguna de las pistas tiene una carretera en la posición 1.
Ejemplos:
Entrada: "4A5B4c3C", "A"
Este código se expande a una pista que se ve así:
A) AAAA
B) BBBBB
C) ccccCCC
La salida para este ejemplo es 7 , porque un corredor que comienza en el carril A podría descender al carril B, y luego al carril C, y terminar en la séptima posición.
Entrada: "4A2B3D", "D"
Pista:
A) AAAA
B) BB
C)
D) DDD
La salida es 3 , porque un corredor que comienza en el carril D no tiene forma de llegar al carril B o A
Entrada: "4A4a4A3b6B5C", "A"
Pista:
A) AAAAaaaaAAAA
B) bbbBBBBBB
C) CCCCC
La salida es 12 , porque el corredor en A puede cambiar a B y luego regresar a A al final. La distancia máxima para "C" también es 12. Para "B" es 0.
Entrada: "12M4n10N11O", "M"
Pista:
M) MMMMMMMMMMMM
N) nnnnNNNNNNNNNN
O) OOOOOOOOOOO
Ejemplo simple con longitudes de ejecución de varios dígitos. La salida es 14 .
Entrada: "4A5B1b2B4c3C", "A"
Pista:
A) AAAA
B) BBBBBbBB
C) ccccCCC
La salida es 8 , porque el corredor en A puede bajar a B, luego bajar a C y luego volver a B. (Gracias a FryAmTheEggman por este ejemplo).
Entrada: "1a2A2a2B1c1C1d3D", "B"
Pista:
A)aAAaa
B)BB
C)cC
D)dDDD
La salida es 4 . El corredor tiene que verificar ambos caminos para ver cuál va más allá. (Gracias a user81655 por este ejemplo).
Entrada: "2A1b1B2C1D3E", "A"
Pista:
A) AA
B) bB
C) CC
D) D
E) EEE
La salida es 3 . Tienes que correr hacia atrás para llegar al destino más alejado. (Una vez más, gracias a user81655 por este ejemplo).
Notas:
- Si una pista no tiene una letra en una posición determinada, eso también cuenta como aire. Como tal, si la entrada es "Q" y no se ha colocado ninguna carretera en el carril "Q", la salida debería ser 0 .
- Hay dos piezas de entrada. El primero es una cadena codificada de longitud de ejecución. La segunda es una letra mayúscula (puede usar string o char datatype para esto). Para facilitar la lectura, debe haber un separador razonable entre estas entradas (espacio, nueva línea, tabulación, coma, punto y coma).
- La cadena codificada de longitud de ejecución siempre mostrará elementos en orden alfabético
- Lo más largo que puede ser la longitud total de un carril es 1000. Por lo tanto, la mayor salida posible es 1000.
Generador de pistas:
En honor a nuestra primera respuesta, aquí hay un generador de pistas. ¡Trata de encontrar algo para confundir las respuestas actuales! (Nota: el hecho de que el generador no muestre un mensaje de error no significa que su código de seguimiento sea necesariamente válido. Consulte los ejemplos anteriores para obtener la forma correcta).
function reset() {
var t = document.getElementById("track");
t.innerHTML = "";
for(var i = 0;i<26;i++) {
var c = String.fromCharCode(i+65);
t.innerHTML += "<div><span>"+c+") </span><span id='"+c+"'></span></div>";
}
}
function rand() {
var track = "";
for(var i = 0;i<26;i++) {
var blocks = Math.floor(Math.random()*4);
var start = Math.floor(Math.random()*2);
for(var j = 0;j<blocks;j++) {
var letter = String.fromCharCode(65+i+32*((start+j)%2));
var length = Math.floor(Math.random()*4)+1;
track += length+letter;
}
}
document.getElementById("code").value = track;
}
function gen() {
var s = document.getElementById("code").value;
var check = s.match(/(\d+[A-Za-z])+/);
if(check == null || check[0]!=s) {
alert("Invalid Track");
return false;
}
reset();
var n = s.match(/\d+/g);
var o = s.match(/[A-Za-z]/g);
for(var i = 0;i<n.length;i++) {
var c = o[i].toUpperCase();
document.getElementById(c).textContent += o[i].repeat(n[i]);
}
return true;
}
<body onload="reset()">
Track: <input type="text" id="code" size="75%" /><input type="submit" onclick="gen()" /><input type="button" value="Random Track" onclick="rand()" /><code id="track"/>
</body>
fuente
4A2B3D
podría eliminar la complicación de manejar la falta de C ? Por ejemplo, agregando0c
? Si no es así, ¿se espera que, por ejemplo,1A1Z
se den, se supone que existen carriles BY (pero están vacíos)?12M4n10N11O
ejemplo, salida 14, es entonces falso: el camino más largo comienza en M0 y termina en C0, por una longitud de 25.Respuestas:
Perl,
231219203192189 bytesincluye +1 para
-p
Menos golfizado:
Corriendo
Almacene el código anterior en un archivo (digamos
231.pl
). Entrada en forma de(\d+\w)+ *\w
. Ejemplo: entrada de pista4A5B4c3C
y carrilA
:Banco de pruebas
(no golfizado)
@L=map{[/./g]}@L
postprocesamiento.if
utilizando enmap
lugar defor
.fuente
JavaScript (ES6),
298334 bytesExplicación
Básicamente, esta solución trata la pista como un laberinto. Encuentra dónde están todos los mosaicos que es posible que alcance el corredor y devuelve el mayor valor del índice X que encontró.
Lo primero que hace es decodificar la cadena de entrada en una matriz de líneas. Sin embargo, en lugar de usar letras, convierte una letra mayúscula en
1
ay una letra minúscula en a0
. El mapa resultante se verá así:Después de esto, hace el primer mosaico de la pista de inicio a
2
(solo si ya lo está1
) y recorre cada mosaico comprobando los mosaicos adyacentes para a2
. Si a1
tiene un adyacente2
se convierte en a2
. El mapa anterior se convertirá en esto si el corredor comenzó en la primera línea:El índice X más alto para a se
2
convierte en el resultado.Hice una supervisión muy pequeña cuando hice la versión inicial de esto y me costó 36 bytes piratearlo hasta que funcionó, por lo que probablemente haya muchas mejoras que se podrían hacer. *suspiro*
Sin golf
Prueba
Bonificación: ¡La salida incluye el mapa analizado!
fuente