Definiuję cztery style skrzynek:
+-----+ ooooooo ^^^^^ *******
| 1 | o 2 o < 3 > * 4 *
| | o o < > * *
+-----+ ooooooo vvvvv *******
Napisz program lub funkcję, która podała liczbę całkowitą, a ciąg znajdzie jedno z powyższych pól w ciągu i zmieni swój styl na styl pola żądany przez użytkownika. Na przykład:
1
This is a test document.
It ********* has
no *purpose* other than
dem*onstrat*ion.
*********
Staje się:
This is a test document.
It +-------+ has
no |purpose| other than
dem|onstrat|ion.
+-------+
Możesz założyć, że dane wejściowe zawierają dokładnie jedno prawidłowe pole, co najmniej 3x3. Twój kod musi ignorować niekompletne / niepoprawne pola:
ooooooooooooooooooooooooooooooooo
o This is not a box. o This is. o
ooooooooooo ooooo ooooooooooooooo
^^^^ ######
<NOPE> #NOPE#
vVVv ######
Najkrótszy kod w bajtach wygrywa.
o This is. o
io This is no
(zo
oczywiście linie powyżej i poniżej).Odpowiedzi:
Julia,
995818713613 bajtówNieoznakowany z wyjaśnieniem:
W przeciwieństwie do pierwszego podejścia, kod ten będzie działał poprawnie tylko dla „prawidłowych” numerów typów - 1, 2, 3 lub 4. Jest podzielony na dwie części - szukacz pudełek i zamiennik pudełek. Kod znajdujący pole, funkcja
f(t)
, używa wyrażenia regularnego, aby zlokalizować wierzchołki, a dla prostszych pól (typy 2 i 4), dna.Pierwsze wyrażenie regularne to najprostszy sposób, w jaki udało mi się znaleźć blaty. Oto logika tego:
Kod jest używany w następujący sposób:
Drukowanie nie jest zawarte w funkcji, ponieważ format wyjściowy nie jest określony - zwracam tylko ciąg, możesz wydrukować go później, jak pokazano powyżej.
źródło