Biorąc pod uwagę dwie liczby całkowite, A i B, wyjście A, jeśli AB (A minus B) jest w AB (A do B), w przeciwnym razie wyjście B.
„A minus B” jest standardowym odejmowaniem.
„A do B” to zakres liczb całkowitych rozpoczynających się od A i kończących się na B, w tym zarówno A, jak i B. Na przykład:
1 to 4: 1, 2, 3, 4
-2 to 5: -2, -1, 0, 1, 2, 3, 4, 5
3 to -1: 3, 2, 1, 0, -1
7 to 7: 7
Najkrótszy kod w bajtach wygrywa.
Przypadki testowe
A B Output
1 4 4
-2 5 5
3 -1 -1
7 7 7
90 30 90
90 -30 -30
-90 30 30
-90 -30 -90
-2 -2 -2
-2 -1 -2
-2 0 -2
-2 1 1
-2 2 2
-1 -2 -2
-1 -1 -1
-1 0 -1
-1 1 1
-1 2 2
0 -2 -2
0 -1 -1
0 0 0
0 1 1
0 2 2
1 -2 -2
1 -1 -1
1 0 1
1 1 1
1 2 2
2 -2 -2
2 -1 -1
2 0 2
2 1 2
2 2 2
źródło
PHP, 58 bajtów
źródło
$b
Zadanie nie wymaga nawiasów.JavaScript (ES6), 24 bajty
Przypadki testowe
źródło
Python 2, 37 bajtów
Wywołaj jako
f(B, A)
.źródło
Python2,
555251 bajtówWypróbuj online!
Obsługuje każdy przypadek testowy, o którym wspominał OP (w momencie publikowania tego), jak sugeruje TIO.
źródło
JavaScript ES6,
4037 bajtówWyjaśniono:
Zaoszczędź 3 bajty dzięki Arnauldowi.
źródło
Mathematica, 16 bajtów
Funkcja czysta przyjmująca dwa argumenty w przeciwnej kolejności niż OP (na przykład
If[2#^2>1##,##]&[B,A]
). Port odpowiedzi Python na xnor .źródło
R,
493028 bajtówWykorzystuje logikę @ xnor do ustalenia, czy ab jest w a: b.
źródło
pryr::f(match(a-b,a:b,b))
Clojure,
7141 bajtów-30 bajtów przy użyciu
<=
imin
/max
zamiastrange
s.Sprawdza, czy
(a - b)
jest w zakresie oda
dob
, odpowiednio wysyłając zwrot.źródło
PHP (7.1), 55 bajtów
używa nowej składni destrukcyjnej tablicy:
Uruchom z
-r
, podaj liczby jako argumenty wiersza poleceń.źródło
PowerShell ,
373532 bajtówWypróbuj online!
Dosłowne tłumaczenie problemu na PowerShell za pomocą
-notin
operatora. Zaoszczędzono trzy bajty, używając wielu przypisań i enkapsulacji. Działa to, ponieważ-
ma wyższy priorytet operatora niż-notin
, a( )
część kodu jest wykonywana jako pierwsza i zwracana jako tablica@($a,$b)
. Jednak, ponieważ jest to$a,$b
raczej niż$b,$a
, musimy użyć-notin
flip / flop wynik wyjściowy.źródło
Partia, 107 bajtów
źródło
Pyth - 9 bajtów
Miałem nadzieję, że użyję bardziej niejawnych danych wejściowych ... :(
Wypróbuj online tutaj .
źródło
Röda , 30 bajtów
Wypróbuj online!
Wykorzystuje wzór użyty w odpowiedzi xnor.
Inne rozwiązanie (37 bajtów):
Wypróbuj online!
źródło
> <> , 21 bajtów
Wykorzystuje @ XNOR za podstęp . Używamy,
-v B A
aby wstępnie wypełnić stos. (-v A B
ma +1 bajt).Wypróbuj online!
Wyjaśnienie
źródło
Rubinowy ,
2722 bajtówWypróbuj online!
Nic innowacyjnego tutaj. Prosta matematyka:
można zapisać jako
to znaczy: jeśli A-2B ma taki sam znak jak B, jesteśmy w zasięgu.
źródło
SpecBAS - 38 bajtów
IIF
jest inline-IF-THEN-ELSE, aby wydrukować poprawną wartość.źródło
Haskell, 21 bajtów
Wypróbuj online!
Czytelny
Wyjaśnienie
Używa wzoru @ xnor, aby sprawdzić, czy ab jest w zakresie. Nic poza tym.
źródło
Haskell, 58 bajtów
Niedawno znów zakochałem się w strzałach. Niestety wymagają od nas pracy z krotkami zamiast funkcji binarnych. I oczywiście Haskell nie ma
range
funkcji symetrycznej .źródło
PHP 7 - 45 bajtów
źródło
Oktawa, 55 bajtów
Prawdopodobnie można to jeszcze bardziej zoptymalizować. Wyjaśnię później.
źródło
Nim, 60 bajtów
Wypróbuj online!
Dość standardowe, jeśli chodzi o odpowiedzi, nie ma w tym żadnej wielkiej sztuczki.
źródło
Swift -
383022 bajtówZaoszczędź 8 bajtów dzięki @Matt
Wypróbuj w IBM Swift Sandbox online!
Lub 21 bajtów:
(dzięki formule @xnor ) i zaoszczędzono 8 bajtów dzięki @Matt
Swift nie jest najlepszym językiem do gry w golfa (jest bardzo sztywny), więc jeśli zobaczysz inną okazję do gry w golfa, całkowicie zmienię odpowiedź.
źródło
Java 7,
846058 bajtówJava 8, 37 bajtów
Wyjaśnienie:
Kod testowy: wypróbuj tutaj.
źródło
Ti-Basic (TI-84 Plus CE),
26 2423 bajtówTI-Basic to tokenizowany język; wszystkie użyte tokeny są jednobajtowe .
Prompt
monituje o dwie liczby.A-B≥A and A-B≤B
sprawdza, czy AB znajduje się między A i B (włącznie); zwraca 1, jeśli prawda i zero, jeśli fałsz, które są przechowywane wAns
.Ponieważ zwracamy A, jeśli AB jest między A i B, mnożymy A przez Ans, który będzie A, jeśli mamy zwrócić A, a 0 w przeciwnym razie.
Następnie dodajemy
Bnot(Ans
do tego. Jeśli Ans wynosił 1 (prawda),not(
otrzymujemy 0, więc nasza suma wynosi A. Jeśli Ans wynosił 0 (fałsz),not(
otrzymujemy 1, który mnożymy przez B i dodajemy do 0, aby uzyskać B.Ostatnia ocena w TI-Basic jest domyślnie zwracana.
-2 bajty dzięki Scott Milner
źródło
Y
i po prostu używającAns
w czwartym wierszu.Pyt , 32 bajty
Pobiera A i B ze standardowego wejścia jako dwa osobne wejścia
Wyjaśnienie:
AABB -> ABBA -> ABAB -> ABABB -> ABBBA -> ABBBAA -> ABAABB -> ABABBA -> ABABC -> ABCBA -> ABCAB -> ABC [A, ..., B] -> ABD -> ABDD - > ADDB -> ADBD -> AD {B * (1-D)} -> {B * (1-D)} AD -> {B * (1-D)} + {A * D}
gdzie: C = BA i D = C∈ [A, ..., B] (1 jeśli prawda, 0 jeśli fałsz)
źródło
Ohm , 10 bajtów (CP437)
Jest to prawdopodobnie bardziej golfistyczny sposób, ale ściśle wpisana natura Ruby sprawia, że jest to trudne.
źródło
Perl 6 ,
31 2924 bajtówSpróbuj
Spróbuj
Spróbuj
źródło