Ti verranno dati due pezzi di input: una stringa in formato codificato di lunghezza che definisce la pista da corsa e una lettera maiuscola che rappresenta la corsia da cui iniziare. Ad esempio, la stringa "3a4A6b5B" si espande in "aaaAAAAbbbbbbBBBBB". Quindi utilizzare la stringa espansa per creare una traccia, come tale:
A) aaaAAAA
B) bbbbbbBBBBB
Questa è una pista con due corsie. Le lettere minuscole rappresentano l'aria. Non puoi correre in onda! Le lettere maiuscole rappresentano la strada su cui puoi correre. Il tuo obiettivo per questa sfida è, dato una lettera maiuscola, produrre fino a che distanza potrebbe correre un corridore che inizia su quella corsia. I corridori sono autorizzati a cambiare corsia se c'è un pezzo di strada direttamente sopra o sotto di essi. Possono anche correre all'indietro! Su questa traccia particolare l'output è 0 per qualsiasi input di lettere, poiché nessuna delle tracce ha una strada percorribile in posizione 1.
Esempi:
Ingresso: "4A5B4c3C", "A"
Questo codice si espande in una traccia simile alla seguente:
A) AAAA
B) BBBBB
C) ccccCCC
L'output per questo esempio è 7 , perché un corridore che inizia sulla corsia A potrebbe spostarsi verso il basso sulla corsia B, quindi sulla corsia C e finire alla 7a posizione.
Ingresso: "4A2B3D", "D"
Traccia:
A) AAAA
B) BB
C)
D) DDD
L'output è 3 , perché un corridore che inizia sulla corsia D non ha modo di raggiungere la corsia B o A
Ingresso: "4A4a4A3b6B5C", "A"
Traccia:
A) AAAAaaaaAAAA
B) bbbBBBBBB
C) CCCCC
L'output è 12 , perché il corridore su A può passare a B, e quindi tornare ad A alla fine. Anche la distanza massima per "C" è 12. Per "B" è 0.
Ingresso: "12M4n10N11O", "M"
Traccia:
M) MMMMMMMMMMMM
N) nnnnNNNNNNNNNN
O) OOOOOOOOOOO
Esempio semplice con lunghezze di esecuzione a più cifre. L'output è 14 .
Ingresso: "4A5B1b2B4c3C", "A"
Traccia:
A) AAAA
B) BBBBBbBB
C) ccccCCC
L'output è 8 , perché il corridore in A può scendere in B, quindi in C, quindi tornare in B. (Grazie a FryAmTheEggman per questo esempio.)
Ingresso: "1a2A2a2B1c1C1d3D", "B"
Traccia:
A)aAAaa
B)BB
C)cC
D)dDDD
L'output è 4 . Il corridore deve controllare entrambi i percorsi, due vedono che va oltre. (Grazie a user81655 per questo esempio.)
Ingresso: "2A1b1B2C1D3E", "A"
Traccia:
A) AA
B) bB
C) CC
D) D
E) EEE
L'output è 3 . Devi correre all'indietro per raggiungere la destinazione più lontana. (Ancora una volta, grazie a user81655 per questo esempio.)
Appunti:
- Se una traccia non ha una lettera in una determinata posizione, anche questa conta come aria. Pertanto, se l'ingresso è "Q" e nessuna strada è stata posizionata sulla corsia "Q", l'uscita dovrebbe essere 0 .
- Ci sono due pezzi di input. La prima è una stringa codificata di lunghezza. La seconda è una lettera maiuscola (per questo puoi usare il tipo di dati stringa o carattere). Per leggibilità, dovrebbe esserci un ragionevole separatore tra questi input (spazio, nuova riga, tabulazione, virgola, punto e virgola).
- La stringa codificata per la lunghezza elencherà sempre gli elementi in ordine alfabetico
- Il più lungo può essere l'intera lunghezza di una corsia è 1000. Pertanto, la massima produzione possibile è 1000.
Generatore di tracce:
In onore della nostra prima risposta, ecco un generatore di tracce. Prova a trovare qualcosa per sconcertare le risposte attuali! (Nota: solo perché il generatore non mostra un messaggio di errore non significa che il codice della traccia sia necessariamente valido. Vedi gli esempi sopra per la forma corretta.)
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
potrebbe essere rimossa? Ad esempio, aggiungendo 0c
? In caso contrario, è previsto quando si dice che le 1A1Z
corsie BY si presume esistano (ma sono vuote)?
12M4n10N11O
esempio, output 14, è quindi falso: il percorso più lungo inizia in M0 e termina in C0, per una lunghezza di 25.