Zadanie: przekonwertować stronę HTML w górę!
Gdy strony HTML są wcięte, mogą wyglądać następująco:
<div>
<div>
<div>
</div>
<div>
<div>
</div>
</div>
</div>
</div>
Ale szczerze mówiąc, góra jest bardziej reprezentatywna dla tej struktury.
Możemy go przepisać jako:
/\
/\/ \
/ \
/ \
Najbardziej zewnętrzne ukośniki po lewej i prawej stronie odpowiadają zewnętrznemu div - każda para znaczników HTML powinna być reprezentowana jak /
dla znacznika początkowego i \
znacznika końcowego - wewnątrz wszystkie znaczniki są „wyższe”, o tej samej strukturze.
Wkład:
- Nie będzie
<!DOCTYPE>
- Nie będzie tagów samozamykających się np.
<img />
Lub<br />
- W tagach mogą znajdować się atrybuty lub treść
- Mogą występować spacje lub tabulatory - twój program powinien je zignorować
- Nie będzie spacji między
<
lub</
a nazwą znacznika - Wszystkie dane wejściowe będą prawidłowe HTML
Wyjście - góra reprezentująca tagi jak wyżej.
Więcej przypadków testowych:
Wkład:
<div id="123"> HI </div><a><span></span></a>
Wydajność:
/\
/\/ \
Wkład:
<body id="<"></body>
Wydajność:
/\
</ div>
? lub możemy założyć, że ukośnik zawsze sąsiaduje zdiv
<
lub</
(aż do nazwy znacznika) - jednak nadal mogą być spacje dla atrybutów np.<div id="aDiv">
>
tak dalej<a >b</a >
.)Odpowiedzi:
HTML + CSS + JavaScript, 39 + 141 + 20 = 200 bajtów
Wysyła wizualnie do strony internetowej. Aby to działało ze specjalnymi elementami, takimi jak
<body>
, wszystkie litery na wejściu są zastępowane.HTML + CSS + JavaScript, 10 + 103 + 20 = 133 bajty
Rozwiązanie, które działa, jeśli w tagach nie ma treści.
źródło
JavaScript + JQuery,
275246 bajtówZaoszczędź 29 bajtów dzięki Rickowi Hitchcockowi
Całkiem naiwne rozwiązanie problemu. Analizuje HTML za pomocą JQuery
$(string)
, a następnie rekurencyjnie buduje boczną górę w formacie:Następnie obraca powstały ciąg przeciwnie do ruchu wskazówek zegara i ostrzega o wyniku.
Pokaż fragment kodu
źródło
j=(a,b,c,i)=>{s=(c=' '.repeat(b))+'/\n';for(i
...for(c=0;c<s.length;c++)
dofor(c=0;s[c];c++)
for(i=0;i<a.children.length;i++)
nafor(i=0;a.children[i];i++)
HTML + JavaScript (ES6), 8 + 192 = 200 bajtów
JS
HTML
Pokaż fragment kodu
Mniej golfa
źródło
id=E
elementu HTML, ponieważ polegasz na nim, aby kod działał?05AB1E ,
382623 bajtówWypróbuj online!
Nadal gram w golfa. Zakłada się, że w HTML zawsze będziesz używać 4 spacji do wcięcia i nie działa na „nie ładnym” HTML. Nie wiesz, jak obsłużyć część „treść”, jeśli jest niepoprawna, edytuj pytanie, aby pokazać przykład z węzłem, który ma treść.
źródło
Węgiel drzewny , 28 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
h
Zmienna służy do śledzenia tego, czy jesteśmy wewnątrz cudzysłowów.Pętla nad ciągiem w odwrotnej kolejności.
Włącz znak currenc.
Jeśli tak,
"
przełącz flagę cytowania.Jeśli tak,
<
a my nie znajdujemy się w cudzysłowie, to ...Jeśli następny znak (poprzedni w pętli, ponieważ zapętlamy w odwrotnej kolejności) to a
/
, to ...Przejdź w górę i narysuj
\
lewą stronę, w przeciwnym razie ...Narysuj
/
i przesuń w dół i w lewo.Zapamiętaj znak dla następnej iteracji pętli.
źródło