Niedawno postanowiłem pobrać oprogramowanie do dyktowania, aby pomóc w pisaniu. Jednak to nie działa zbyt dobrze, gdy koduję, ponieważ muszę przejść z wypowiadania słów na symbole iz powrotem. Gorzej, gdy piszę w ezoterycznym języku, który jest wszystkimi symbolami.
Aby korzystanie z programu dyktowania było bardziej spójne, postanowiłem przełączyć go na tryb postaci, w którym zamiast tego wypowiadam tylko nazwę każdej postaci. Problem rozwiązany! Chociaż opóźnia to nieco datę premiery mojej powieści ...
Zakładając, że im dłuższe imię postaci, tym dłużej trzeba mówić, ile czasu zajmie mi przeliterowanie niektórych moich programów / zdań?
Dane techniczne
Biorąc pod uwagę ciąg znaków składający się tylko z drukowalnego ASCII, zwróć sumę nazwy Unicode każdego znaku. Na przykład /
jest wywoływany SOLIDUS
z 7 znaków i A
ma LATIN CAPITAL LETTER A
22 znaki.
Ale pamiętajcie, muszę głośno powiedzieć waszym programom, aby je wykonały, więc ich wynik będzie zależał od tego, ile czasu zajmie mi ich wypowiedzenie, tj. Jako suma długości nazwy Unicode każdej postaci.
Przypadki testowe:
W formacie input => output
bez wejściowych / końcowych spacji na wejściu.
A => 22
/ => 7
Once upon a time... => 304
slurp.uninames>>.comb.sum.say => 530
JoKing => 124
!" #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ => 1591
Double-check your \s on the last test case ;) => 755
<say "<$_>~~.EVAL">~~.EVAL => 388
,[.,] => 58
19 => 19
Zasady:
- Dane wejściowe do programu będą składać się wyłącznie z drukowalnych znaków ASCII, to znaczy punktów kodowych od 32 (spacja) do 126 (tylda).
- Dla wygody, oto lista długości znaków, z którymi musisz sobie poradzić:
[5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,15,20,17,8,12,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,18,13,19,5]
- Dla wygody, oto lista długości znaków, z którymi musisz sobie poradzić:
- Oto program referencyjny, którego możesz użyć do oceny swojego programu.
- Peter Taylor wskazał, że program referencyjny normalizuje niektóre znaki Unicode . Powinien nadal działać w przypadku większości rozwiązań, ale w razie potrzeby możesz go poprawić
- Ponieważ mówisz, jak naprawdę wyglądają postacie, twoje rozwiązanie zostanie ocenione według wyświetlanych postaci , a nie bajtów. Jest to skierowane do języków z niestandardowymi kodowaniami.
- Możesz założyć, że zapamiętałem całą bibliotekę Unicode i mogę powiedzieć dowolne dziwne znaki, których używasz.
- Przepraszam Rogem, ale odpowiedzi muszą składać się z możliwych do wyświetlenia postaci. Niezadrukowalne są w porządku, muszę tylko móc głośno czytać postacie.
- Cokolwiek robisz, nie używaj go
ﯹ
w swoim programie.
źródło
ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
to będzie pełne imię mojego dziecka\x[2126]
jest liczony jako\x[3a9]
.Odpowiedzi:
Java 8, wynik
846838822816-8 słabo dzięki @tsh zastępując
_1
wꀊ
.-22 wynik dzięki @ ASCII tylko zastępując
ꀊ
zˇ
i$
zௐ
.Wypróbuj online.
Wyjaśnienie:
ௐ
Iˇ
są używane zamiasts
ic
chciałbym normalnie używać, ponieważ małe litery są 20 (tjLATIN SMALL LETTER S
), aleௐ
(TAMIL OM
) jest 8 iˇ
(CARON
) wynosi 5.źródło
push compressed integer 87235805968599116032550323044578484972930006625267106917841
: Pꀊ
zamiast_1
zaoszczędzić niektóre punkty.Ω
(OHM SIGN
) ma 8 znaków. Również haha, nie wiedziałem, że to nie jest poprawne, po prostu założyłem, że jest poprawne w C # i Peter_1
też użył ( program do wyszukiwania krótkich nazw zmiennych , nie można użyć znaku pola)Perl 6 , wynik 337
Wypróbuj online!
źródło
.&[~]
zamiast tego.join
jest fajną sztuczką. Nigdy nie pamiętam, jakie operatory redukcji można zastosować tą metodąJapt v2.0a1
-x
, wynik926908875865829791789Pobiera dane wejściowe jako tablicę znaków.
Wypróbuj lub uruchom wszystkie przypadki testowe na TIO
(
APOSTROPHE
jest pomijany w szóstym przypadku testowym w TIO, ponieważ Japt nie obsługuje pojedynczych i podwójnych cudzysłowów w tym samym ciągu wejściowym)Wyjaśnienie
Budowanie łańcucha
(Wyniki obejmują kroki i dodatkowe znaki potrzebne do cofnięcia każdej modyfikacji)
>=23
i łączenie z ocenionym ciągiem 1832 .m
ik
pojedynczą, wielką literą 963 .5
była postacią z najniższą wartością codepoint (53
), więc zacząłem od 52, która uzyskała wynik 75651
dał najlepszy wynik 738Ostatni łańcuch zawiera więc znaki w następujących punktach kodowych:
źródło
05AB1E , wynik 963
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
Zobacz moją wskazówkę 05AB1E (sekcje Jak kompresować duże liczby całkowite? I Jak kompresować listy liczb całkowitych? ), Aby zrozumieć, dlaczego tak
•Fδà‚<0?9½mΣ@×ƶC₁vc-™uΔ_ε'•21в
jest[5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,0,19,15,20,17,8,12,2,18,13,19,5]
.źródło
C # (interaktywny kompilator Visual C #) (wynik
1627 1116 1096 1037 1019902)Nie korzysta z wbudowanej bazy danych: tylko specjalna obudowa na litery i tabela odnośników.
Zestaw testów online .
Nie może zdobyć punktacji, ponieważ większość znaków nie znajduje się w zakresie, w tym zmienne
CARON
iOHM SIGN
symbole zodiaku używane do kodowania tabeli odnośników.Dzięki ASCII tylko za wiele sugestii.
źródło
R; Wynik:
333015861443Trudne również w R z powodu braku wbudowanych.
Cóż, kod jest teraz w większości @ Giuseppe, ale to w porządku. Byłem w stanie dokonać niewielkiej edycji gry w golfa, zastępując * znakiem ~, a s kropką.
Dzięki @Nick Kennedy za sprowadzenie tego do 1443 za pomocą
tajemnej magii„zakodowanej w UTF8 wersji sekwencji liczb”Wypróbuj online
źródło
utf8ToInt
jest bardzo pomocnym poleceniem do gry w golfa :-) Nie jestem na PPCG od około miesiąca, więc miło jest widzieć nowych ludzi grających w golfa w R!Python 3 , wynik 993
Wypróbuj online!
Poniżej 1000, wszystkie wskazówki są nadal mile widziane.
-16 dzięki Kirill L.
źródło
_
przezˇ
za 987.Perl 5
-pl
, wynik 723Wypróbuj online!
Wyjaśnienie
źródło
Attache , 1934
Wypróbuj online!
Prosta kompresja i indeksowanie.
źródło
C # (interaktywny kompilator Visual C #) , wynik:
40073988375935512551Czuję się przygnieciony rozwiązaniem Petera Taylora powyżej. Dzięki Peterowi Taylorowi za wskazanie prostej tabeli odnośników było lepsze niż moje poprzednie rozwiązanie słownikowe.
Wypróbuj online!
źródło
_1=>_1.Select(_2=>new int[]{5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,15,20,17,8,12,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,18,13,19,5}[_2-32]).Sum()
oceny : wyniki 2786.