Otrzymasz dwa dane wejściowe: ciąg znaków w zakodowanym formacie określającym bieżnię i wielką literę reprezentującą linię, od której chcesz zacząć. Na przykład ciąg „3a4A6b5B” rozwija się do „aaaAAAAbbbbbbBBBBB”. Następnie użyj rozwiniętego ciągu, aby utworzyć ścieżkę jako taką:
A) aaaAAAA
B) bbbbbbBBBBB
To trasa z dwoma pasami. Małe litery oznaczają powietrze. Nie możesz biegać na antenie! Wielkie litery oznaczają drogę, po której można biegać. Twoim celem w tym wyzwaniu jest, biorąc pod uwagę dużą literę, wynik, jak daleko biegacz startujący na tej linii może uciec. Kierowcy mogą zmieniać pas, jeśli kawałek drogi znajduje się bezpośrednio nad nimi lub pod nimi. Mogą także biegać wstecz! Na tej konkretnej ścieżce wyjście wynosi 0 dla dowolnego wpisania litery, ponieważ żadna z ścieżek nie ma drogi przejezdnej w pozycji 1.
Przykłady:
Wejście: „4A5B4c3C”, „A”
Ten kod rozwija się do ścieżki, która wygląda następująco:
A) AAAA
B) BBBBB
C) ccccCCC
Wynik dla tego przykładu wynosi 7 , ponieważ biegacz rozpoczynający się na linii A mógłby zejść na linię B, a następnie na linię C i skończyć na 7. pozycji.
Wejście: „4A2B3D”, „D”
Tor:
A) AAAA
B) BB
C)
D) DDD
Wyjście to 3 , ponieważ biegacz rozpoczynający się na linii D nie ma możliwości przedostania się na linię B lub A.
Wejście: „4A4a4A3b6B5C”, „A”
Tor:
A) AAAAaaaaAAAA
B) bbbBBBBBB
C) CCCCC
Wyjście wynosi 12 , ponieważ biegacz na A może przełączyć się na B, a następnie powrócić do A na końcu. Maksymalna odległość dla „C” wynosi również 12. Dla „B” wynosi 0.
Wejście: „12M4n10N11O”, „M”
Tor:
M) MMMMMMMMMMMM
N) nnnnNNNNNNNNNN
O) OOOOOOOOOOO
Prosty przykład z wielocyfrowymi długościami. Wyjście wynosi 14 .
Wejście: „4A5B1b2B4c3C”, „A”
Tor:
A) AAAA
B) BBBBBbBB
C) ccccCCC
Wynik wynosi 8 , ponieważ biegacz w A może zejść do B, następnie do C, a następnie wrócić do B. (Dziękuję FryAmTheEggman za ten przykład).
Wejście: „1a2A2a2B1c1C1d3D”, „B”
Tor:
A)aAAaa
B)BB
C)cC
D)dDDD
Wyjście to 4 . Biegacz musi sprawdzić obie ścieżki dwa, aby zobaczyć, która idzie dalej. (Podziękowania dla user81655 za ten przykład.)
Wejście: „2A1b1B2C1D3E”, „A”
Tor:
A) AA
B) bB
C) CC
D) D
E) EEE
Wyjście to 3 . Musisz pobiec do tyłu, aby dotrzeć do najdalszego celu. (Jeszcze raz dziękuję użytkownikowi 81655 za ten przykład.)
Uwagi:
- Jeśli utwór nie ma litery w określonej pozycji, liczy się to również jako powietrze. W związku z tym, jeśli dane wejściowe to „Q” i żadna droga nie została ustawiona na pasie „Q”, dane wyjściowe powinny wynosić 0 .
- Istnieją dwa elementy danych wejściowych. Pierwszy to ciąg zakodowany w czasie wykonywania. Druga to duża litera (w tym celu można użyć typu danych ciąg lub char.) Aby zapewnić czytelność, należy wprowadzić rozsądny separator między tymi danymi wejściowymi (spacja, nowy wiersz, tabulator, przecinek, średnik).
- Łańcuch zakodowany w czasie przebiegu zawsze będzie wyświetlał elementy w kolejności alfabetycznej
- Najdłuższa długość całej linii może wynosić 1000. Dlatego największa możliwa wydajność to 1000.
Generator śladów:
Na cześć naszej pierwszej odpowiedzi, oto generator ścieżek. Spróbuj wymyślić coś, co zaskoczy obecne odpowiedzi! (Uwaga: fakt, że generator nie wyświetla komunikatu o błędzie, nie oznacza, że kod śledzenia jest koniecznie prawidłowy. Aby uzyskać prawidłową formę, zobacz powyższe przykłady).
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
uda się usunąć komplikacje związane z obsługą brakującego C ? Na przykład dodając 0c
? Jeśli nie, czy należy się spodziewać, kiedy 1A1Z
podano, że zakłada się, że pasy BY istnieją (ale są puste)?
12M4n10N11O
Przykład, wyjście 14 jest następnie fałszywa najdłuższe ścieżki zaczyna się i kończy w M0 w C0, na długości 25