Sie erhalten zwei Eingaben: eine Zeichenfolge in lauflängencodiertem Format, die die Laufstrecke definiert, und einen Großbuchstaben, der die Fahrspur darstellt, von der aus Sie beginnen möchten. Beispielsweise erweitert sich die Zeichenfolge "3a4A6b5B" zu "aaaAAAAbbbbbbBBBBB". Sie verwenden dann die erweiterte Zeichenfolge, um eine Spur als solche zu erstellen:
A) aaaAAAA
B) bbbbbbBBBBB
Dies ist eine Strecke mit zwei Spuren. Kleinbuchstaben stehen für Luft. Sie können nicht auf Luft laufen! Großbuchstaben stehen für eine Straße, auf der Sie fahren können. Ihr Ziel für diese Herausforderung ist es, mit einem Großbuchstaben anzugeben, wie weit ein auf dieser Spur startender Rennfahrer laufen könnte. Rennfahrer dürfen die Spur wechseln, wenn sich ein Stück Straße direkt über oder unter ihnen befindet. Sie dürfen auch rückwärts rennen! Auf dieser bestimmten Spur ist die Ausgabe für jede Buchstabeneingabe 0 , da keine der Spuren auf Position 1 eine fahrbare Straße aufweist.
Beispiele:
Eingabe: "4A5B4c3C", "A"
Dieser Code wird zu einer Spur erweitert, die folgendermaßen aussieht:
A) AAAA
B) BBBBB
C) ccccCCC
Die Ausgabe für dieses Beispiel ist 7 , da ein Läufer, der auf Spur A beginnt, auf Spur B und dann auf Spur C absteigen und an der 7. Position enden kann.
Eingabe: "4A2B3D", "D"
Spur:
A) AAAA
B) BB
C)
D) DDD
Die Ausgabe ist 3 , weil ein Läufer, der auf Spur D startet, nicht auf Spur B oder A gelangen kann
Eingabe: "4A4a4A3b6B5C", "A"
Spur:
A) AAAAaaaaAAAA
B) bbbBBBBBB
C) CCCCC
Die Ausgabe ist 12 , da der Läufer auf A auf B umschalten und am Ende wieder auf A zurückkehren kann. Der maximale Abstand für "C" beträgt ebenfalls 12. Für "B" ist er 0.
Eingabe: "12M4n10N11O", "M"
Spur:
M) MMMMMMMMMMMM
N) nnnnNNNNNNNNNN
O) OOOOOOOOOOO
Einfaches Beispiel mit mehrstelligen Lauflängen. Die Ausgabe ist 14 .
Eingabe: "4A5B1b2B4c3C", "A"
Spur:
A) AAAA
B) BBBBBbBB
C) ccccCCC
Die Ausgabe ist 8 , weil der Läufer bei A zu B, dann zu C und dann zu B zurückkehren kann. (Vielen Dank an FryAmTheEggman für dieses Beispiel.)
Eingabe: 1a2A2a2B1c1C1d3D, B
Spur:
A)aAAaa
B)BB
C)cC
D)dDDD
Ausgang ist 4 . Der Läufer muss beide Pfade überprüfen, um zu sehen, was weiter geht. (Vielen Dank an user81655 für dieses Beispiel.)
Eingabe: "2A1b1B2C1D3E", "A"
Spur:
A) AA
B) bB
C) CC
D) D
E) EEE
Ausgang ist 3 . Sie müssen rückwärts laufen, um das am weitesten entfernte Ziel zu erreichen. (Nochmals vielen Dank an user81655 für dieses Beispiel.)
Anmerkungen:
- Wenn ein Titel an einer bestimmten Position keinen Buchstaben hat, gilt dies auch als Luft. Wenn also die Eingabe "Q" ist und keine Straße auf die Spur "Q" gelegt wurde, sollte die Ausgabe 0 sein .
- Es gibt zwei Eingabemöglichkeiten. Die erste ist eine lauflängencodierte Zeichenfolge. Der zweite ist ein Großbuchstabe (Sie können hierfür einen String oder einen char-Datentyp verwenden.) Zur besseren Lesbarkeit sollte zwischen diesen Eingaben ein angemessenes Trennzeichen (Leerzeichen, neue Zeile, Tabulator, Komma, Semikolon) stehen.
- Die lauflängencodierte Zeichenfolge listet Elemente immer in alphabetischer Reihenfolge auf
- Die größte Länge einer Fahrspur kann 1000 sein. Daher ist die größtmögliche Ausgabe 1000.
Spur Generator:
Zu Ehren unserer ersten Antwort hier ein Trackgenerator. Versuchen Sie, sich etwas auszudenken, um die aktuellen Antworten zu überarbeiten! (Hinweis: Nur weil der Generator keine Fehlermeldung anzeigt, ist Ihr Trackcode nicht unbedingt gültig. Die korrekte Form finden Sie in den obigen Beispielen.)
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>
4A2B3Dbeseitigt werden kann? Zum Beispiel hinzufügen 0c? Wenn nicht, wird erwartet, dass 1A1Zdie Spuren BY existieren (aber leer sind)?
12M4n10N11OBeispiel, Ausgabe 14, ist dann falsch: Der längste Pfad beginnt bei M0 und endet bei C0 für eine Länge von 25.