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>
quelle
4A2B3D
beseitigt werden kann? Zum Beispiel hinzufügen0c
? Wenn nicht, wird erwartet, dass1A1Z
die Spuren BY existieren (aber leer sind)?12M4n10N11O
Beispiel, Ausgabe 14, ist dann falsch: Der längste Pfad beginnt bei M0 und endet bei C0 für eine Länge von 25.Antworten:
Perl,
231219203192189 Bytesbeinhaltet +1 für
-p
Weniger golfen:
Laufen
Speichern Sie den obigen Code in einer Datei (sagen wir
231.pl
). Eingabe in Form von(\d+\w)+ *\w
. Beispiel: Eingabe von Spur4A5B4c3C
und SpurA
:TestSuite
(nicht golfen)
@L=map{[/./g]}@L
Nachbearbeitung entfällt .if
mitmap
anstelle vonfor
.quelle
JavaScript (ES6),
298334 ByteErläuterung
Grundsätzlich behandelt diese Lösung die Strecke als Labyrinth. Es ermittelt, wo sich alle Kacheln befinden, die der Läufer erreichen kann, und gibt den größten Wert des gefundenen X-Index zurück.
Das erste, was es tut, ist die Eingabezeichenfolge in ein Array von Zeilen zu dekodieren. Anstatt Buchstaben zu verwenden, wird ein Großbuchstabe in einen
1
und ein Kleinbuchstabe in einen umgewandelt0
. Die resultierende Karte sieht ungefähr so aus:Danach erstellt es das erste Plättchen der Startspur a
2
(nur wenn es bereits vorhanden ist1
) und durchläuft jedes Plättchen, wobei benachbarte Plättchen auf a geprüft werden2
. Wenn a1
benachbart ist2
, wird es zu2
. Die obige Karte wird folgendermaßen aussehen, wenn der Läufer in der ersten Zeile gestartet ist:Der höchste X-Index für a
2
wird zum Ergebnis.Als ich die erste Version davon gemacht habe, habe ich ein kleines Versehen gemacht und es hat mich 36 Bytes gekostet, sie zu hacken, bis sie funktionierte, also gibt es wahrscheinlich eine Menge Verbesserungen, die daran vorgenommen werden könnten. *Seufzer*
Ungolfed
Prüfung
Bonus: Die Ausgabe enthält die analysierte Karte!
quelle