Biorąc nieujemną liczbą całkowitą wejściowe, napisać program, który konwertuje numer szesnastkowy i zwraca wartość truthy jeśli forma szesnastkowy numer zawiera tylko znaki A
poprzez F
a wartość falsey inaczej.
Przypadki testowe
10
==> True (A in hexadecimal)
100
==> False (64 in hexadecimal)
161
==> False (A1 in hexadecimal)
11259375
==> True (ABCDEF in hexadecimal)
0
==> False (0 in hexadecimal)
Premia: -40 bajtów, jeśli program drukuje Only letters
dla opisanego powyżej wyzwania, Only numbers
jeśli wersja szesnastkowa liczby zawiera tylko cyfry 0-9
i Mix
jeśli liczba szesnastkowa zawiera co najmniej jedną liczbę i co najmniej jedną literę.
To jest kod golfowy. Obowiązują standardowe zasady. Najkrótszy kod w bajtach wygrywa. Dozwolone są zarówno funkcje, jak i pełne programy.
NaN
MixOnlynumbersletters
ma 21 znakówOdpowiedzi:
Pyth, 43 - 40 = 3 bajty
Zestaw testowy
To osiąga bonus.
Only numbers
i naOnly letters
szczęście różnią się tylko 4 literami. Formatowanie w stylu printf jest używane z%
.System selekcji odbywa się zarówno przez przecięcie heksa z
G
, alfabetu, jak i odjęcieG
. Jeśli żadne z nich nie zakończy się fałszem, będzie to mieszanka, natomiast jeśli skrzyżowanie jest fałszem, to są liczby, a jeśli odejmowanie jest fałszem, to są litery.źródło
Pyth, 6 bajtów
Sprawdź to tutaj
źródło
Galaretka , 6 bajtów
Wypróbuj online!
Jak to działa
źródło
TeaScript , 11 bajtów
13 15 16Dość proste. Używa to TeaScript 2.0. Możesz pobrać tę wersję z Github
Wyjaśnienie
Wypróbuj online (nieco zmodyfikowana wersja, która działa w sieci)
źródło
Python, 24 bajty
Konwertuje wejściowy ciąg szesnastkowy (bez
0x
prefiksu) za pomocą'%x'%n
. Sprawdza, czy wszystkie znaki są większe niż'9'
(które litery), sprawdzając, czymin
jest powyżej'9'
.źródło
'9'
to 54. Więc jeśli potrafisz pisać...>54
, możesz zapisać bajt.MATL , 10
Przykłady
Wyjaśnienie
Bonusowe wyzwanie: 53−40 = 13
Przykłady
Wyjaśnienie
źródło
LabVIEW, 52-40 = 12 Prymitywów LabVIEW
Chwal wbudowane!
źródło
C,
464337 bajtówTeraz z większą rekurencją! (Dzięki Dennis):
Premia: jeszcze krótsza (33 bajty), ale zawodzi w przypadku
x = 0
:F()
przyjmujeint
i zwraca albo0
(fałsz) albo niezerową (prawda).Nawet nie próbowałem osiągnąć premii,
"MixOnly lettersnumbers"
sam pobieram 23 bajty, śledzenie nowego warunku wymagałoby 9 dodatkowych bajtów,printf()
to 8 bajtów, co daje 40, co niweluje wysiłek.Test główny:
źródło
?:
? Musiałem go zastąpić,||
aby go skompilować. Ponadto, można zapisać bajt wymieniając*
ze związkiem&
w ten sposób unikając()
s po lewej stronie (choć wtedy trzeba dodać spację)?a?:b
jest rozszerzeniem GNU, które ocenia,a
czya
jest prawdziwą wartością, w przeciwnym razieb
. Przydaje się do obsługi wskaźników zerowych, takich jaksend(message ?: "(no message)");
. Wiem, że nie jest przenośny, ale przenośność kodu nigdy nie stanowi problemu w golfie kodowym :)33
bajtów, robiąc to:F(x){x=(x%16>9)*(x<16?:F(x/16));}
powoduje to nadużycie błędu (GCC), w którym jeśli w funkcji nie ma zmiennej zwrotnej i ustawiony jest główny argument, w niektórych przypadkach automatycznie zwróci główny argument ( na podstawie tego, co zostało zrobione), a to jeden z tych przypadków! Wypróbuj online: bit.ly/2pR52UHPython 3,
3029 bajtów1 bajt pozbawiony dzięki sysreq i Python 3.
Prosty
lambda
i krojący.źródło
Perl 6 , 18 bajtów
stosowanie:
źródło
Mathematica, 32 bajty
Wyjaśnienie:
źródło
JavaScript, ES6, bez wyrażenia regularnego, 28 bajtów
Jest też ta 27-bajtowa wersja, ale zwraca wartość odwrotną.
źródło
F=n=>!n||n%16>9&F(n>>4)
F=n=>n%16>9&&n<16|F(n>>4)
wtedy.||
, ale myślę, że możesz uciec od używania&
zamiast&&
w tym przypadku.Julia, 18 bajtów
Jest to anonimowa funkcja, która przyjmuje liczbę całkowitą i zwraca wartość logiczną. Aby to nazwać, nadaj mu nazwę, np
f=n->...
.Dane wejściowe są konwertowane na ciąg szesnastkowy za pomocą
hex
, a następnie sprawdzamy, czy w całości składa się ze znaków alfabetycznychisalpha
.źródło
JavaScript ES6, 29
Bez premii
Przy nowej wartości -40 premia jest już bliżej ... ale za mało. Wynik bonusowy 70
71- 40 => 3031Testowy fragment kodu (wpisz liczbę w polu wprowadzania)
źródło
-n-1
=~n
prawda?~n == -1
podczas gdy-n-1 == NaN
GS2 , 6 bajtów
Kod źródłowy używa kodowania CP437. Wypróbuj online!
Jak to działa
źródło
Oktawa, 22 bajty
źródło
Java,
464438 bajtówDość prosty jednowierszowy, który konwertuje liczbę całkowitą na ciąg szesnastkowy i używa wyrażenia regularnego, aby ustalić, czy wszystkie znaki są literami.
-2 bajty dzięki @ Eng.Fouad.
źródło
"[a-f]+"
zaoszczędzi 2 bajty.+
-To marnotrawstwo bajt.matches
Zwraca true, jeśli cały ciąg może być dopasowany podanym wyrażeniem regularnym.[a-f]
bez znaku plus jest niepoprawny, ponieważ nie pasuje do całego łańcucha, ponieważ zawiera więcej niż jeden znak; zrobiłby to wtedy i tylko wtedy, gdy obecny jest jeden prawidłowy znak.CJam (
98 bajtów)Demo online
źródło
{Gb$N<!}
Ruby, 19 bajtów
Nie golfowany:
Stosowanie:
Z premią 70–40 = 30 bajtów
Stosowanie:
źródło
'%x'%n!~/\d/
jest krótsza kontrola dla pierwszego rozwiązania, a drugie rozwiązanie ma nieprzetworzoną liczbę bajtów wynoszącą 70, a nie 75.Perl, 69–40 = 29 bajtów
źródło
Cejlon, 55 bajtów
Prosto ... formatujemy
n
jako liczbę szesnastkową (która tworzy ciąg), wywołujemy każdy znak tego ciągu.digit
(który zwraca wartość true, jeśli jest cyfrą), następnie sprawdzamy, czy którykolwiek z nich jest prawdziwy, a następnie negujemy.Wersja z bonusem ma znacznie wyższy wynik 119 - 25 = 94 :
Nie jestem pewien, jak ktokolwiek mógłby zrobić wersję bonusową wystarczająco krótką, aby była lepsza niż wersja bez premii, nawet same ciągi mają razem długość 28. Może język, który sprawia, że naprawdę trudno jest uzyskać wartość true / falsey.
Oto sformatowana wersja:
źródło
Rdza, 70 bajtów
Ponieważ, wiesz,
JavaRust.W rzeczywistości jest dość elegancki:
Szkoda, że płyta funkcyjna definicji funkcji jest tak długa ....: P.
źródło
CJam, 44 bajty - 40 bonusów = 4 bajty
Wypróbuj tutaj ~
źródło
Poważnie, 12 bajtów
Hex Dump:
Wypróbuj online
Jest taki sam, jak inne odpowiedzi w języku stosu. Będzie to tylko 7 bajtów, jeśli jeszcze poważnie obsługiwane jest odejmowanie łańcucha.
EDYCJA: Poważnie obsługuje teraz odejmowanie ciągów i działa teraz następujące 7-bajtowe rozwiązanie:
Hex Dump:
Wypróbuj online
źródło
4╙,¡#S;ú∩S=
(lub,4ª
lub8τ
, wiele sposobów na przeliterowanie:16:
w dwóch bajtach: P)05AB1E , 2 bajty (niekonkurujące)
Kod:
Ha! To dwa bajty! Niestety niekonkuruje, ponieważ ten język jest datą na wyzwanie :(
Wyjaśnienie:
Wypróbuj online! lub Zweryfikuj wszystkie przypadki testowe!
źródło
hdÔ©1åi•4?ŸâτΛ•}®0åi•4?ŸàpÕTà•}®g2Qi•²
•} 36B` dla premii skutkującej ... 6 dodatkowymi! Bonusy Wooooo!Python 3, 28 bajtów
źródło
Common Lisp, 40 bajtów
Wypróbuj online!
źródło
SmileBASIC 3.2.1, 78 bajtów
źródło
81
.0-127
, więc twoja liczba bajtów wynosi81
.Japt, 12 bajtów
Wypróbuj online!
Jak to działa
źródło
!!UsG r"\\d
może zadziałać i zaoszczędzić bajtGema, 41 znaków
Gema nie ma wartości logicznej, więc po prostu wyprowadza „t” lub „f”.
Przykładowy przebieg:
źródło