Napisz możliwie najkrótszy kod, który zwróci wartość true, jeśli dwie podane wartości całkowite są równe lub ich suma lub różnica bezwzględna wynosi 5.
Przykładowe przypadki testowe:
4 1 => True
10 10 => True
1 3 => False
6 2 => False
1 6 => True
-256 -251 => True
6 1 => True
-5 5 => False
Najkrótsza, jaką mogłem wymyślić w python2, ma 56 znaków:
x=input();y=input();print all([x-y,x+y-5,abs(x-y)-5])<1
-9, dzięki @ElPedro. Pobiera dane wejściowe w formacie x, y:
x,y=input();print all([x-y,x+y-5,abs(x-y)-5])<1
code-golf
decision-problem
Vikrant Biswas
źródło
źródło
Odpowiedzi:
Python 2 , 30 bajtów
Wypróbuj online!
Jeden bajt zapisany przez Arnaulda
Trzy bajty zapisane przez alephalpha
źródło
JavaScript (ES6), 28 bajtów
Pobiera dane wejściowe jako0 lub 1 .
(a)(b)
. ZwracaWypróbuj online!
źródło
Dyalog APL , 9 bajtów
Wypróbuj online!
Przeliterowano:
źródło
kod maszynowy x86, 39 bajtów
montaż
Wypróbuj online!
źródło
J ,
1211 bajtów1 bajt zapisany dzięki Adámowi
Wypróbuj online!
Wyjaśnienie
Jest to równoważne z:
Można to podzielić na następujący łańcuch wideł:
Lub wizualizowane za pomocą
5!:4<'f'
:Adnotacja:
źródło
e.
e.
było=+.5 e.|@-,+
. Może zapomniałeś, że5e.
jest nieprawidłowy token w J?+
zamiast+.
R , 40 bajtów (lub 34)
Wypróbuj online!
Dla użytkowników innych niż R:
-1:1*5
rozwija się do[-5, 0, 5]
%in%
operator wykonuje elementy z lewej i kontroli (element mądry), jeżeli takie istnieją w wektorze po prawejBezpośredni port rozwiązania @ ArBo ma
3534 bajtów, więc jeśli chcesz, wybierz tę odpowiedź:źródło
function(x,y)x%in%c(y--1:1*5,5-y)
function(x,y)(x-y)%in%(-1:1*5)
i upuścić go dalej do 24 bajtów, upuszczając notację funkcji doscan()
wprowadzenia:diff(scan())%in%(-1:1*5)
Wypróbuj online! . Jednak wciąż bardzo ta sama metoda.pryr::f
, co zdarza się w obu przypadkach. To, czy potrafi poprawnie wykryć argumenty, jest całkowicie trafione lub przegapione, ale wydaje się, że łączy te dwie funkcje. np.pryr::f(x%in%c(y--1:1*5,5-y))
Wypróbuj online! . Daje odpowiednio 36 i 29 bajtów.Python 2 ,
2931 bajtówWypróbuj online!
Ponieważ po raz pierwszy nie udało mi się dokładnie przeczytać zadania, aby je naprawić, musiałem wymyślić zupełnie inne podejście, co niestety nie jest tak zwięzłe.
źródło
Kod maszynowy 8086,
2220 bajtówNie golfowany:
Wprowadź liczby w AX i BX i zwraca Zero Flag (ZF = 1), jeśli wynik jest prawdziwy. W razie potrzeby możesz również określić, który warunek był spełniony, wykonując następujące czynności:
Jeśli różnica między liczbami wynosi 0, wiemy, że są one równe. W przeciwnym razie, jeśli wynik jest ujemny, najpierw go zaneguj, a następnie sprawdź 5. Jeśli nadal nie jest to prawda, dodaj i sprawdź 5.
Przykładowy program testowy DOS na PC. Pobierz tutaj ( ESD.COM ).
Wyjście programu testowego:
źródło
Galaretka , 7 bajtów
Wypróbuj online!
Jak to działa
źródło
Python 2, 38 bajtów
-2 bajty dzięki @DjMcMayhem
Wypróbuj online!
źródło
5
s ior
sJava (JDK) , 30 bajtów
Wypróbuj online!
źródło
Wolfram Language (Mathematica) , 22 bajty
Pobiera dane wejściowe jako
[a][b]
.Wypróbuj online!
źródło
PowerShell ,
484440 bajtówWypróbuj online! lub Zweryfikuj wszystkie przypadki testowe
Pobiera dane wejściowe
$a
i$b
. Sprawdza, czy$b
jest-in
grupa ($a-5
,5-$a
5+$a
lub$a
), który sprawdza wszystkie możliwe kombinacje$a
,$b
i5
.-4 bajty dzięki mazzy.
-4 bajty dzięki KGlasier.
źródło
($a-$b)
jest-$x
:)5
i$b
wokół można odciąć kilka bajtów (czyliparam($a,$b)$b-in($a-5),(5-$a),($a+5),$a
) Wypróbuj go tutaj$a+5
na5+$a
celu zmusić go do oddania odpowiednio przy podejmowaniu wejścia wiersza polecenia, ale poza tym super. Dzięki!Pascal (FPC) ,
2670 bajtówEdycja: + zmienne wejściowe.
Wypróbuj online!
Wypróbuj online!
Mam nadzieję, że moja odpowiedź jest zgodna ze wszystkimi zasadami golfa kodowego. W każdym razie było fajnie.
źródło
C # (.NET Core) ,
43,48,47, 33 bajtówEDYCJA: Próbowałem użyć% i najwyraźniej zapomniałem jak%. Dzięki Arnauldowi za zwrócenie na to uwagi!
EDYCJA 2: AdmBorkBork z golfem -1-bajtowym przestawia nawiasy, aby usiąść obok zwrotu, więc nie jest potrzebne dodatkowe miejsce!
EDYCJA 3: Dzięki dana dla golfa -14 bajtów za jednokreskowy skrót powrotu i curry funkcji (Ty Embodiment of Ignorance za połączenie z TIO).
C # (.NET Core) , 33 bajty
Wypróbuj online!
źródło
C (gcc) , 33 bajty
Wypróbuj online!
Wypróbowałem podejście, którego nie widziałem nikt inny. Zwracane wyrażenie jest równoważne z
a+b==5||((-6<a-b||a-b<6)&&(a-b)%5==0)
.źródło
Scala, 43 bajty
Wypróbuj online!
źródło
||
do|
? Wiem, że jest to możliwe w Javie, C #, Pythonie lub JavaScript, ale nie jestem pewien co do Scali.Perl 6 , 24 bajtów
-1 bajt dzięki Grimy
Wypróbuj online!
To używa Any Junction, ale technicznie
^
może również działać.Wyjaśnienie:
źródło
{$^a-$^b==5|0|-5|5-2*$b}
C (gcc) ,
4134 bajtówWypróbuj online!
źródło
f
powracaa
? Tylko jakieś niezdefiniowane zachowanie?05AB1E ,
1312 bajtówWypróbuj online!
Pobiera dane wejściowe jako listę liczb całkowitych, oszczędzając jeden bajt. Dzięki @ Wisław!
Alternatywna 12 bajtowa odpowiedź
Wypróbuj online!
Ten pobiera dane w osobnych wierszach.
źródło
|
?OI`αª5¢IË~Ā
. Dane wejściowe to lista liczb całkowitych.OIÆÄ)5QIËM
jest 10.05AB1E , 10 bajtów
Wypróbuj online!
Próbowałem to zrobić, używając operacji tylko na stosie, ale było to dłuższe.
źródło
0
taka jak dla[5, -5]
OIÆÄ‚5QIËM
), jest poprawne[5,-5]
.OsÆÄ‚5åsË~
. Wydaje się prawie identyczny z twoim. Wypróbuj online!Ruby , 34 bajty
Online Eval - Thanks @ ASCII-Only
źródło
.nil?
sprawdzenia, aby uzyskać dane wyjściowe w wymaganym formacie.->(a,b){[a+5,a-5,5-a,a].index(b).nil?}
, jest dłuższy niż obecny.Tcl , 53 bajty
Wypróbuj online!
źródło
Japt ,
1413 bajtówWypróbuj online!
źródło
Partia, 81 bajtów
Pobiera dane wejściowe jako argumenty wiersza polecenia i zwraca 1 w przypadku powodzenia, a nic w przypadku niepowodzenia. Batch nie może łatwo dokonywać rozróżnień, więc używam praw De Morgana, aby przekształcić je w koniunkcję.
źródło
Węgiel drzewny , 18 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Port rozwiązania @ ArBo w Python 2.
źródło
Japt,
1312 bajtówWypróbuj lub uruchom wszystkie przypadki testowe
źródło
[-5,5]
działa (powinien być falsey)Common Lisp, 48 bajtów
źródło
Brachylog , 8 bajtów
Pobiera dane wejściowe jako listę dwóch liczb (użyj
_
dla negatywów). Wypróbuj online!Wyjaśnienie
Prawie bezpośrednie tłumaczenie specyfikacji:
źródło
Retina 0.8.2 , 82 bajty
Wypróbuj online! Link zawiera przypadki testowe. Objaśnienie: Pierwsze dwa wiersze przekształcają dane wejściowe w jednoargumentowe. Ostatnia linia sprawdza następnie dowolne dozwolone mecze:
Obrócone w ostatniej kolumnie otrzymujemy:
źródło