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>
4A2B3D
podría eliminar la complicación de manejar la falta de C ? Por ejemplo, agregando 0c
? 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.