Izolowany znak to znak (inny niż nowy wiersz), który nie ma sąsiadującego znaku tego samego typu. Sąsiednie postacie mogą znajdować się po lewej stronie, po prawej stronie powyżej lub poniżej, ale nie po przekątnych. Na przykład w poniższym tekście H
jest izolowany:
Ybb
YH%
%%%%
Wszystkie pozostałe postacie nie są izolowane, ponieważ każda z nich sąsiaduje z co najmniej jedną inną postacią tego samego typu.
Twoim zadaniem jest napisanie programu, który pobiera ciąg znaków jako dane wejściowe i określa liczbę izolowanych znaków.
Punktacja
Twoja odpowiedź będzie oceniana na podstawie dwóch wskaźników. Pierwszy to liczba izolowanych znaków w twoim programie. Powinieneś dążyć do zminimalizowania tego. Drugi będzie liczbą bajtów w twoim programie. Powinieneś to również zminimalizować. Rozmiar programu będzie działał jako wyłącznik remisu dla pierwszego kryterium.
Dodatkowe zasady
Powinieneś wspierać wprowadzanie zakresu drukowanego zakresu ascii oraz wszelkie znaki, których używasz w swoim programie.
Możesz rozważyć podział linii jako znak nowej linii lub znak nowej linii, po której następuje przejście do nowej linii.
Możesz przyjmować dane wejściowe w dowolnym rozsądnym formacie. Obejmuje to listę linii.
Przypadki testowe
Ybb
YH%
%%%%
Aaaab
uuu
yyybbb
A
qqWWaaww
źródło
Y
poniżej.restricted-source
wyzwanie i całkowite wykluczenie izolowanych postaci.Odpowiedzi:
Python 2 , 0 (
350344314309301298291 bajtów)Wypróbuj online!
-7 bajtów, dzięki Jo King
źródło
Wyczyść , 0 (
439... 415 bajtów)-11 dzięki Ørjan Johansen
Wreszcie wyzwanie, w którym mogę zdobyć 0 za pomocą Clean!
(i zwykle źle radzi sobie z układami źródłowymi!)
Wypróbuj online!
Link TIO używa
module main
ze względu na sposób, w jaki Clean jest implementowany w TIO, alemodule d
będzie działał, jeśli nazwiesz plikd.icl
zamiastmain.icl
tak jak TIO.Wyjaśniono jedną ze starych linii (nowa wersja to ta sama rzecz w innej kolejności):
źródło
let
zapisuje 11 bajtów.d
przydatnyJavaScript (ES6), 0 (154 bajtów)
Zaoszczędzono
24 bajty dzięki @ ØrjanJohansenPobiera dane wejściowe jako tablicę ciągów.
Wypróbuj online!
źródło
Galaretka , 0 (
41 2725 bajtów)Wypróbuj online!
Pobiera dane wejściowe jako listę linii. Pierwszy wiersz w kodzie nigdy nic nie robi i jest tam tylko po to, aby zminimalizować pojedyncze znaki.
źródło
MATL , 0 (54 bajty)
Wejście jest tablicą komórek strun, po jednym dla każdej linii:
{'line 1', 'line 2', 'and line 3'}
.Wypróbuj online! Lub sprawdź przypadki testowe i kod źródłowy .
źródło
Python 3 , 0 (323 bajty)
Wypróbuj online!
źródło
05AB1E , 0 (101 bajtów )
Wypróbuj online.
Jest to jeden z najbrzydszych i najdłuższych programów 05AB1E, jakie kiedykolwiek napisałem ..>.> To wyzwanie jest zwodniczo trudne w 05AB1E. Nie mam wątpliwości, że liczbę bajtów można przynajmniej zmniejszyć o połowę, a nawet trzy / cztery razy mniej, stosując inne podejście (lub nawet z podobnym podejściem), ale obecnie nie wiem, jak to zrobić. Cieszę się, że teraz działa. Jeśli ktoś inny opublikuje krótszą odpowiedź 05AB1E z pewnymi inteligentnymi sztuczkami, prawdopodobnie usunę tę odpowiedź ze wstydu ... xD
Wyjaśnienie:
źródło
Rubinowy , wynik 0,
237209 bajtówWypróbuj online!
źródło
JavaScript (Node.js) , 0 (279 bajtów)
Wypróbuj online!
Odbierz dane wejściowe jako tablicę wierszy.
źródło