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>
źródło
4A2B3D
uda się usunąć komplikacje związane z obsługą brakującego C ? Na przykład dodając0c
? Jeśli nie, czy należy się spodziewać, kiedy1A1Z
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 25Odpowiedzi:
Perl,
231219203192189 bajtówzawiera +1 dla
-p
Mniej golfa:
Bieganie
Zapisz powyższy kod w pliku (powiedzmy
231.pl
). Dane wejściowe w postaci(\d+\w)+ *\w
. Przykład: wprowadzanie ścieżki4A5B4c3C
i pasaA
:TestSuite
(nie grał w golfa)
@L=map{[/./g]}@L
przetwarzanie końcowe.if
używającmap
zamiastfor
.źródło
JavaScript (ES6),
298334 bajtyWyjaśnienie
Zasadniczo to rozwiązanie traktuje tor jak labirynt. Sprawdza, gdzie znajdują się wszystkie kafelki, do których biegacz może dotrzeć, i zwraca największą wartość znalezionego indeksu X.
Pierwszą rzeczą, jaką robi, jest dekodowanie ciągu wejściowego na tablicę wierszy. Zamiast używać liter, zamienia wielką literę na
1
a małą literę na0
. Powstała mapa będzie wyglądać mniej więcej tak:Następnie tworzy pierwszy kafel ścieżki początkowej a
2
(tylko jeśli już jest1
) i przechodzi przez każdy kafel sprawdzając sąsiednie kafelki pod kątem a2
. Jeśli a1
ma sąsiadujący2
staje się2
. Powyższa mapa stanie się taka, jeśli biegacz zacznie od pierwszej linii:Najwyższy wskaźnik X dla a
2
staje się wynikiem.Zrobiłem bardzo niewielki niedopatrzenie, kiedy zrobiłem pierwszą wersję tego i kosztowało mnie 36 bajtów włamania się do niego, dopóki nie zadziałało, więc prawdopodobnie można wprowadzić wiele ulepszeń. *westchnienie*
Bez golfa
Test
Bonus: Dane wyjściowe obejmują przeanalizowaną mapę!
źródło