Prawie każdy język ma wbudowaną funkcję, która może rozdzielać łańcuch w danej pozycji. Jednak gdy tylko w tagu znajdą się tagi html, wbudowana funkcja nie będzie działać poprawnie.
Twoim zadaniem jest napisanie programu lub funkcji, która dzieli ciąg na n-ty znak, ale nie liczy znaków tagów HTML i wyświetli prawidłowy HTML. Program musi zachować formatowanie. Miejsca poza znacznikami html mogą być liczone lub nie być zliczane, jak chcesz, ale muszą zostać zachowane. Możesz jednak zamienić wiele kolejnych spacji w jedną spację.
Wejście:
- ciąg
- pozycja do podziału w (na podstawie 0)
Można je traktować jako argumenty programu lub funkcji lub można je odczytać ze standardowego wejścia.
Dane wyjściowe: podzielony ciąg znaków, który można zwrócić lub zapisać na standardowym wyjściu.
Dane wejściowe będą poprawne w formacie HTML, nie będą zawierać żadnych elementów (takich jak
). Tagi otwierane po limicie znaków należy pominąć w danych wyjściowych (patrz ostatni przykład).
Przykład:
Wejście:, <i>test</i>
3
Wyjście:<i>tes</i>
Wejście:, <strong><i>more</i> <span style="color: red">complicated</span></strong>
7
Wyjście:<strong><i>more</i> <span style="color: red">co</span></strong>
Wejście:, no html
2
Wyjście:no
Wejście:, <b>no</b> <i>html root</i>
5
Wyjście:<b>no</b> <i>ht</i>
Wejście:, <b>no img</b><img src="test.png" />more text
6
Wyjście:<b>no img</b>
Możesz użyć dowolnego języka i standardowej biblioteki danego języka. To jest kod golfowy, wygrywa najkrótszy program. Baw się dobrze!
<
i>
zamiast<>
, więc nie (<
lub też>
nie będzie).<i>ab</i><b>cd</b> 1
?<i>a</i>
?<i>a</i><b></b>
(Co ma sens, jeśli weźmiesz pod uwagę, żeb
może to byćdiv
lubimg
.)Odpowiedzi:
Ta odpowiedź nie jest już aktualna w przypadku najnowszej reguły.
JavaScript ( ES6 )
9491Nie golfowany:
źródło
Rebol - 252 znaków
Niegolfowany z komentarzami:
Przykłady w konsoli Rebol:
źródło
Ruby ... Bardzo nieokrzesany z pętlami
źródło
(IE) JS - 135
function f(t,n){b=document.body;b.innerHTML=t;r=b.createTextRange();r.moveStart("character",n);r.select();r.execCommand('cut');return b.innerHTML}
Teraz czuję się brudny. Ale musisz zacząć usuwać wszystkie te znaki ...Zrzeczenie się:
źródło