Miernik golfowy © 2019
Hexdumps użyte z xxd
wyglądają mniej więcej tak:
00000000: 666f 6f20 6261 7220 7370 616d 2065 6767 foo bar spam egg
00000010: 730a s.
Twoim zadaniem jest przekonwertowanie zrzutu heksadecymalnego w tej formie na liczbę używanych bajtów.
Zasady:
- Zwykle luki zabronione.
- To jest golf golfowy , więc wygrywa najkrótsza ważna odpowiedź w bajtach.
- Możesz dodać nowy wiersz na końcu tekstu (
0a
). Oznacza to, że jeśli zrzut heksowy kończy się na nowej linii (0a
), to wejście może mieć zmniejszoną moc wyjściową o jeden. - Puste wejście (dosłownie nic: pusta lista / ciąg / itd.) Musi mieć wartość 0.
- Dane wejściowe można przyjmować w dowolnej formie
- Dane wejściowe będą prawidłowe ASCII bez znaków kontrolnych
- Dane wejściowe muszą zawierać cały zrzut heksowy
Przypadki testowe:
00000000: 4865 6c6c 6f2c 2077 6f72 6c64 2120 4865 Hello, world! He
00000010: 6c6c 6f2c 2077 6f72 6c64 210a llo, world!.
zwraca 28 lub 27
00000000: 0a .
zwraca 1 lub 0
00000000: 6368 616c 6c65 6e67 650a challenge.
zwraca 10 lub 9
00000000: 4865 6c6c 6f2c 2077 6f72 6c64 21 Hello, world!
zwraca 13
zwraca 0 (To dosłownie nic: pusta lista / ciąg znaków itp.)
Wyjaśnienia byłyby przydatne w przypadku niestandardowych języków.
code-golf
string
hexadecimal
gadzooks02
źródło
źródło
xxd
zostanie podany pusty ciąg, nic nie wyprowadza.objdump
demontaż lubnasm
listę odpowiedzi na kod maszynowy.) Chyba powinienem to opublikować w piaskownicy ...Odpowiedzi:
Retina 0.8.2 , 8 bajtów
Wypróbuj online! Wyjaśnienie:
Usuń pierwsze 51 znaków z każdej linii. (Linie mogą mieć tylko od 52 do 67 znaków, więc zawsze są one dopasowane raz na linię).
Policz pozostałe znaki, które nie są znakami nowej linii.
7 bajtów, jeśli puste dane wejściowe nie musiały być obsługiwane:
Wypróbuj online! Wyjaśnienie:
Usuń pierwsze 52 znaki z każdej linii. (Linie mogą mieć tylko od 52 do 67 znaków, więc zawsze są one dopasowane raz na linię).
Policz 1 więcej niż liczba pozostałych znaków (w tym nowych linii).
źródło
&`.{52}
.tcsh , 12 bajtów
Wypróbuj online!
źródło
V (vim) , 7 bajtów
Wypróbuj online!
Wyjaśnienie:
Hexdump:
źródło
Siatkówka , 7 bajtów
Zlicza to całkowitą liczbę ciągów jednowierszowych o długości 52. Możliwe, że można zrobić coś podobnego
%52,`.
, ale nie udało mi się znaleźć sposobu, aby to naprawić.Wypróbuj online!
źródło
&`.{52}
dla Retina 0.8.2.APL (Dyalog Extended) , 18 bajtów
Pełny program Monity o listę ciągów znaków (tj. List znaków).
Wypróbuj online!
⎕
skłonić49↑¨
weź pierwsze 49 znaków od każdego(
…)¨
Zastosuj następującą funkcję ukrytą dla każdego:⊢
argument⊆
posiekaj na serie postaci, które są≠
różni się od znaku dopełniającego (spacja)1↓
upuść pierwsze „słowo”∊
ε nlist (spłaszczyć)≢
zestawienie2÷⍨
podziel przez dwaźródło
Galaretka , 5 bajtów
Monadyczny link akceptujący listę wierszy, które dają liczbę całkowitą bajtów.
Wypróbuj online!
W jaki sposób?
źródło
C (gcc) ,
6455 bajtówWypróbuj online!
Ogolono 9 bajtów dzięki YSC!
Oto bardziej delikatna wersja zainspirowana rozwiązaniem JavaScript Arnauld, które prawdopodobnie zawodzi przy długich wejściach:
C (gcc) , 50 bajtów
Wypróbuj online!
źródło
return r
nal=r
main
), powinna istnieć możliwość wielokrotnego wywoływania tego.r;s[];f(l){while(*s=0,gets(s),l=strlen(s))r+=l-51;l=r;}
: 55 bajtów :)while()
ma taką samą liczbę bajtów jakfor(;;)
. Zatem;while()
jest o jeden bajt dłuższy niżfor(;;)
.Python 3,
4846 bajtówDane wejściowe są przekazywane do funkcji jako ciąg znaków. Funkcja zwiększa długość danych wejściowych (w tym znaki nowej linii), a następnie odejmuje 52 dla każdej linii.
Wypróbuj online
źródło
f=
można go przenieść do nagłówka jako `f =`, pozostawiając tylko lambda jako kod i oszczędzając dwa bajty: Wypróbuj online!f=
Jest nawykiem Podniosłem z serwera niezgody Pythona.Japt
-x
, 5 bajtówWprowadź jako tablicę wierszy.
Spróbuj
źródło
Perl 6 , 18 bajtów
Wypróbuj online!
Anonimowy Cokolwiek lambda, które pobiera listę wierszy i zwraca sumę liczby znaków, odejmując 51 dla każdego wiersza
źródło
05AB1E ,
86 bajtówWypróbuj online!
Wprowadź jako listę ciągów.
źródło
Język formuły IBM / Lotus Notes, 53 bajty
Formula nie ma TIO, więc oto zrzuty ekranów przypadków testowych:
Formuła znajduje się w polu obliczeniowym, które podaje wartość po „Zwraca”.
Wyjaśnienie
To dobra demonstracja sposobu, w jaki Formula będzie rekurencyjnie stosować funkcję do listy bez potrzeby tworzenia pętli. Formuła znajduje się w polu obliczeniowym w tej samej formie, co edytowalne pole wejściowe `i '.
@Left
i@Right
zezwól na użycie ogranicznika ciągu lub liczby znaków. Dlatego szukamy po prawej stronie:
a następnie na lewo od pierwszego wystąpienia dwóch spacji. Ponieważ Formula widzi nowy wiersz jako separator listy, zastosuje go do każdego wiersza na wejściu.@Explode
jest równoważnikiemsplit
funkcji Formula i domyślnie jest spacją,,
lub;
. Ponownie jest stosowany do każdej linii w polu, ale tym razem wyniki są łączone w jedną listę.@Length
zostaną następnie zastosowane do każdego członka listy. W każdym przypadku dzielimy jego wartość zwracaną przez 2.@Sum
całą listę i wyślij wynik.źródło
JavaScript (ES6), 34 bajty
Wypróbuj online!
Skomentował
źródło
Czerwony ,
8155 bajtówWypróbuj online!
Pobiera dane wejściowe jako listę ciągów znaków.
źródło
JavaScript,
3332 bajtyWypróbuj online!
Oszczędność 1 bajtu dzięki Arnauldowi.
źródło
Befunge-98 (FBBI) , 16 bajtów
Wypróbuj online!
źródło
Stax , 5 bajtów
Uruchom i debuguj
źródło
Zsh , 36 bajtów
Z domyślnymi flagami zsh:
Wypróbuj online!
${(f)1}
dzieli się$1
na nowe linie i odrzuca puste linie. Do$[ arithmetic expansion ]
chroni przed pustym przypadku, gdy pętla nigdy nie zachodzi$c
.Zsh , 28 bajtów
Z
-o extendedglob
:Wypróbuj online!
(f)
Podziel na nowe linie,${ #?(#c52)}
usuń wiodące 52 znaki,(F)
dołącz do nowych linii, aby liczenie odbywało się znakowo zamiast listowo,${# }
policz znaki.źródło
asm2bf , 135 bajtów
Wersja golfowa:
Skomentowana wersja:
źródło