Você receberá duas partes de entrada: uma string no formato codificado de duração que define a pista de corrida e uma letra maiúscula representando a pista para começar. Por exemplo, a cadeia "3a4A6b5B" se expande para "aaaAAAAbbbbbbBBBBB". Você usa a sequência expandida para criar uma faixa, como tal:
A) aaaAAAA
B) bbbbbbBBBBB
Esta é uma pista com duas faixas. Letras minúsculas representam ar. Você não pode correr no ar! Letras maiúsculas representam a estrada na qual você pode correr. Seu objetivo para este desafio é, dada uma letra maiúscula, mostrar até que ponto um corredor que começa nessa pista pode correr. Os corredores podem mudar de faixa se houver um pedaço de estrada diretamente acima ou abaixo deles. Eles também podem correr para trás! Nesta faixa em particular, a saída é 0 para qualquer entrada de letra, porque nenhuma das faixas possui estrada executável na posição 1.
Exemplos:
Entrada: "4A5B4c3C", "A"
Esse código se expande para uma faixa que se parece com isso:
A) AAAA
B) BBBBB
C) ccccCCC
A saída para este exemplo é 7 , porque um corredor que começa na pista A pode mover-se para a pista B e depois para a pista C e terminar na 7ª posição.
Entrada: "4A2B3D", "D"
Faixa:
A) AAAA
B) BB
C)
D) DDD
A saída é 3 , porque um corredor que começa na pista D não tem como chegar à pista B ou A
Entrada: "4A4a4A3b6B5C", "A"
Faixa:
A) AAAAaaaaAAAA
B) bbbBBBBBB
C) CCCCC
A saída é 12 , porque o corredor em A pode passar para B e depois voltar para A no final. A distância máxima para "C" também é 12. Para "B" é 0.
Entrada: "12M4n10N11O", "M"
Faixa:
M) MMMMMMMMMMMM
N) nnnnNNNNNNNNNN
O) OOOOOOOOOOO
Exemplo simples com comprimentos de vários dígitos. A saída é 14 .
Entrada: "4A5B1b2B4c3C", "A"
Faixa:
A) AAAA
B) BBBBBbBB
C) ccccCCC
A saída é 8 , porque o corredor em A pode descer para B, depois para C e depois voltar para B. (Obrigado a FryAmTheEggman por este exemplo).
Entrada: "1a2A2a2B1c1C1d3D", "B"
Faixa:
A)aAAaa
B)BB
C)cC
D)dDDD
A saída é 4 . O corredor precisa verificar os dois caminhos para ver o que vai além. (Obrigado a user81655 por este exemplo.)
Entrada: "2A1b1B2C1D3E", "A"
Faixa:
A) AA
B) bB
C) CC
D) D
E) EEE
A saída é 3 . Você tem que correr para trás para chegar ao destino mais distante. (Mais uma vez, obrigado a user81655 por este exemplo.)
Notas:
- Se uma faixa não possui uma letra em uma determinada posição, isso também conta como ar. Assim, se a entrada for "Q" e nenhuma estrada for colocada na pista "Q", a saída deverá ser 0 .
- Existem duas partes de entrada. A primeira é uma string codificada no comprimento da execução. A segunda é uma letra maiúscula (você pode usar o tipo de dados string ou char para isso.) Para facilitar a leitura, deve haver um separador razoável entre essas entradas (espaço, nova linha, guia, vírgula, ponto e vírgula).
- A sequência codificada no comprimento da execução sempre listará os elementos em ordem alfabética
- Quanto mais longo o comprimento de uma faixa puder ser de 1000, portanto, a maior saída possível é 1000.
Gerador de Pistas:
Em homenagem à nossa primeira resposta, aqui está um gerador de faixas. Tente inventar algo para esconder as respostas atuais! (Observação: o fato de o gerador não exibir uma mensagem de erro não significa que seu código de faixa seja necessariamente válido. Veja os exemplos acima para obter o formulário correto.)
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
poderia ser removida? Por exemplo, adicionando 0c
? Caso contrário, é de se esperar que, digamos 1A1Z
, as faixas BY sejam assumidas como existentes (mas estão vazias)?
12M4n10N11O
exemplo, saída 14, é falso: o caminho mais longo começa em M0 e termina em C0, com um comprimento de 25.