Cel:
Biorąc pod uwagę dwie liczby naturalne (liczby całkowite od 0 do nieskończoności), wypisz liczbę, która nie jest sumą tych liczb, ale jest liczbą naturalną.
Przykładowe rozwiązania (TI-Basic):
A+B+1
not(A+B)
Nieprawidłowe rozwiązania:
A+B-1
(dla danych wejściowych0,0
zwraca-1
, co nie jest naturalne)"ABC"
(ABC
nie jest liczbą)
Uwagi:
Wynik zawsze musi być sumą dwóch liczb naturalnych (co w rzeczywistości jest po prostu liczbą naturalną)
-1
,undefined
,infinity
,NaN
I komunikaty o błędach nie są liczbami naturalnymi. Dla naszych celów0
jest to naturalne (choć nie wszyscy matematycy się z tym zgadzają).
code-golf
number
arithmetic
Julian Lachniet
źródło
źródło
Odpowiedzi:
RProgN ,
431 bajtPrzekreślone 4 to nadal 4; (
Najprostsze rozwiązanie, porównuje, czy A i B są równe. Przesuwa true, który RProgN widzi jako 1, jeśli są takie same, lub false, inaczej 0.
Przypadki testowe
Wypróbuj online!
źródło
Siatkówka , 3 bajty
Wypróbuj online!
(W pierwszym wierszu znajduje się spacja przed znakiem nowej linii. Stos wymiany nie jest zbyt dobry w pokazywaniu końcowych białych znaków).
Dane wejściowe to liczby dziesiętne, oddzielone spacją (np
12 34
.). Ten program po prostu zmienia spację na a1
, tworząc liczbę zbyt dużą, aby była sumą liczb wejściowych (koniecznie ma co najmniej 2 więcej cyfr niż każda z nich, a dodanie dwóch liczb daje wynik nie więcej niż 1 cyfrę więcej niż większy wkład).źródło
0 0
powinien również działać.010
jest uważany za liczbę całkowitą za pośrednictwem zasadniczo wszystkich parserów liczb całkowitych. Widzę potencjalny argument, który0 8
jest nieprawidłowy na podstawie, która018
jest uważana za nieprawidłową liczbę ósemkową przez niektóre parsery liczb całkowitych (chociaż inni uważają, że to dziesiętna liczba dziesiętna). Zauważ, że ten program jest całkiem zadowolony z obsługi wiodących zer na wejściu , traktując je jako dziesiętne; i napisałem programy, które generują zera wiodące dla innych pytań, bez ludzi widzących problem. Czy istnieje odpowiedni meta post na ten temat?.
1
jeśli nie chcesz samodzielnie zwracać zer wiodących.Python , 13 bajtów
Wypróbuj online! Pobiera dane wejściowe jako krotkę.
Użycie metody obiektowej dla funkcji pozwala uniknąć płyty kotłowej a
lambda
.Tu chodzi o to, aby na mapie
(0,0)
, aby1
i wszystko inne0
. Ponieważ0+0
daje tylko sumę0
liczb naturalnych, to zawsze pozwala uniknąć dopasowania sumy.Gdyby ktoś mógł tutaj wypisać wartość logiczną, co uważam za podejrzane, bajt mógłby zostać zapisany jako
To sprawdza, czy krotka wejściowa jest co najwyżej
(0,0)
, co jest prawdą tylko w przypadku(0,0)
. W PythonTrue==1
iFalse==0
. Co więcej, wyjście z kodu wyjściowego i potraktowanie go jak Boolena Pythona pozwoliłoby zaoszczędzić dwa bajty:Jeśli ciąg znaków we / wy jest dozwolony, a początkowe zera są prawidłowe, istnieje 8-bajtowe rozwiązanie
To konkatenuje
a1b
, które zawsze jest większe niża+b
.źródło
int.__eq__
na 10 bajtówMATL i in. 1 bajt
Akceptuje dwie liczby naturalne jako dane wejściowe i porównuje je. Jeśli są one równe, wynik jest,
1
a jeśli nie są równe, wynik jest0
. Jest to to samo podejście, co rozwiązanie @ ATaco.MATL
Galaretka (autor @ ais523)
Stacked (autor: @Conor O'Brien)
APL (Dyalog APL) (autor @ Adám)
J (autor @ Adám)
Właściwie (autor @Mego)
Niejawne (w @MD XF)
źródło
=
Rozwiązanie działa również w galarecie 1 bajt. Pomyślałem, że wspomnę o tym w komentarzach, ponieważ nie wydaje się warte tworzenia osobnej odpowiedzi na trywialne rozwiązanie.JavaScript, 10 bajtów
Pobiera 2 liczby przy użyciu składni curry, tak jak to:
źródło
Vim, 3 bajty / naciśnięcia klawiszy
Wypróbuj online!
Zauważ, że
<C-a>
tak naprawdę to ctrl-a , który reprezentuje bajt0x01
.Uwielbiam, kiedy vim (który nie jest nawet językiem programowania) może konkurować z językami golfa. :) Dane wejściowe są w tym formacie:
To po prostu zwiększa pierwszą liczbę o jeden (To jest
<C-a>
część), a następnie łączy reprezentacje ciągów dwóch liczb razem. O ile mogę stwierdzić, nigdy nie powinno to skutkować sumą.źródło
Brain-Flak , 8 bajtów
Wypróbuj online!
To najbardziej czytelna odpowiedź, jaką kiedykolwiek napisałem. :)
Wyjaśnienie:
Alternatywne rozwiązania (także 8 bajtów):
Istnieje wiele innych rozwiązań, które działają tylko z dodatnimi liczbami:
źródło
Galaretka , 2 bajty
+ Dodaje dwa dane wejściowe razem, a następnie „zwiększa odpowiedź o jeden
Wypróbuj online!
źródło
(a+b)+1
jednaka+(b+1)
ponieważ łańcuch dyad-monadafG
jest traktowany jakof(a, G(b))
. W tym przypadku jest to to samo, ale technicznie działa inaczej: PTI-Basic, 3 bajty
Alternatywne rozwiązania:
Interesujące jest to, że podałeś przykłady pytania w TI-Basic, ale zapomniałeś krótszego
A=B
(a może to do nas należało dowiedzieć się?)źródło
Prompt A,B:
do nich powoduje zwiększenie liczby bajtów do ośmiu bajtów.Brachylog , 2 bajty
Wypróbuj online!
Wyjaśnienie
To zawsze spowoduje
A+B+1
, jeśliInput = [A, B]
.źródło
Mathematica, 5 bajtów
Zwraca sumę dwóch argumentów plus 1. Na przykład
1+##&[2,5]
zwraca8
.(Uwaga dodatkowa:
Binomial
prawie działa, aleBinomial[1,0]=1
iBinomial[4,2]=6
są kontrprzykładami; myślę, że są to jedyne kontrprzykłady.)źródło
Pochhammer
wydaje się być lepszy niżBinomial
. O ile mogę stwierdzić, tylko1,0
zawodzi.KroneckerDelta
działa dla wszystkich danych wejściowych (co jest równoważne sprawdzeniu równości w niektórych esolangach). Ponownie zaimplementuj go jako krótszyBoole[#==#2]&
, ale zakładam, że szukałeś wbudowanego, który działa tak, jak jest.PHP, 17 bajtów
Uruchom tak:
Wyjaśnienie
To po prostu łączy argumenty. Pierwszy argument (nazwa skryptu) zawiera
-
. W rezultacie powstaje liczba ujemna, którą neguję znakiem minus. Następnie dodaję 1, na wypadek, gdyby pierwszy numer wejściowy to0
(0123 = 123).źródło
Perl 6 , 4 bajty
Lambda (utworzona przez cokolwiek curry ), która dodaje odwrotność logiczną (1 lub 0) pierwszego argumentu do drugiego argumentu.
Wypróbuj online!
źródło
Turtlèd , 12 bajtów
robi bardzo duże liczby
Wypróbuj online!
Wyjaśnienie:
W ten sposób wyprowadza 10 ** (x + y).
źródło
PHP, 19 bajtów
źródło
Java (OpenJDK 9) , 10 bajtów
Wypróbuj online!
źródło
a->b->a-~b
. Działa również z Javą 8, dowolną edycją (więc nie ma potrzeby określania OpenJDK 9)HODOR , 40 bajtów (niekonkurencyjny)
Jest to prawdopodobnie najkrótszy program, jaki Hodor kiedykolwiek napisał!
Dzieje się tak, gdy nie masz nic do roboty na 2-tygodniowe wakacje szkolne: stwórz naprawdę łatwo kodowane języki żartów, które absolutnie nic nie robią. Tak, na ferie szkolne !!!
Walder
była pierwotna nazwa Hodora i dlatego jest potrzebna do rozpoczęcia programu.Hodor?!
pobiera liczbę ze STDIN lub pojedynczy znak i ustawia akumulator na wejścieHodor
dodaj 1 do akumulatoraHODOR!
wysyła akumulator jako liczbęHODOR!!!
zabija Hodora! Nieeeee!To jest pseudo kod:
źródło
SmileBASIC, 4 bajty
nie (A) + B
1+1=2 -> !1+1 -> 0+1=1
0+1=1 -> !0+1 -> 1+1=2
źródło
2+1
?2+1=3 -> !2+1 -> 0+1=1
R, 13 bajtów
Podziękowania dla Jonathana Allana za jego wkład!
źródło
00
może tak samo,0
jakbysep="1"
?scan()
powinno być w porządku, akceptując wejście wektorowe, takie jak to . Ale możemy zrobić jeden bajt lepiejcat(sum(scan()+1))
. Może jest krótszy?cat
jest to pełny program, alternatywą byłaby nienazwana funkcja dla tego samego kosztu bajtufunction(a,b)a+b+1
05AB1E , 1 bajt
Działa tak samo jak
RProgN
odpowiedź.Sprawdza, czy
a
ib
są takie same. Jeśli tak, wydrukuj1
. W przeciwnym razie wydrukuj0
Wypróbuj online!
źródło
¢
(a.count (b)) powinien również działać na 1 bajt.C
262419 bajtówWersja bez golfa:
Mam nadzieję, że mam poprawną specyfikację. Zdecydowanie można go skrócić !?
@Pavel Dziękujemy za zapisanie 2 bajtów
@Neil Dziękujemy za Twój wkład.
źródło
()
pobliżu!c+d
?return
, na przykładreturn!c+d;
MATLAB / Octave, 3 bajty
Akceptuje dwa dane wejściowe i sprawdza równość i daje,
1
jeśli są one równe i0
inne.Demo online
źródło
@eq
? Zwraca uchwyt funkcji, którego można użyć do oceny żądanej funkcji, podczas gdy po prostueq
jest bez znaczenia.@
zamienia go w prawidłową konstrukcję językową. Ale może jestem pedantyczny.pieprzenie mózgu, 12 bajtów
Proste rozwiązanie, które wychodzi
A+B+1
.Wypróbuj online
źródło
,>,[-<++>]<.
,>,[-<++>]<.
rozwiązaniedc , 5 bajtów
Wypróbuj online!
Wejście: dwie liczby naturalne oddzielone spacją na standardowym wejściu.
Wyjście: cyfra 1, po której następuje suma dwóch liczb, która jest liczbą większą niż suma tych dwóch liczb.
Przykład:
Wkład:
222 333
Wydajność:
1555
źródło
PHP, 13 bajtów; (17 bez REPL)
Przykłady
Dla osób bez użycia REPL
i uruchom używając
źródło
Cubix,
98 bajtówWyjaśnienie
Rozszerzona, ta odpowiedź wygląda następująco:
Kolejność wykonywanych instrukcji jest następująca
II~-O@
Testowane pod kątem wszystkich kombinacji wejść, gdy oba są w zakresie
0-100
.Wypróbuj tutaj .
źródło
APL - 4 bajty
Pobiera tablicę, sumuje jej elementy i dodaje jeden. Test:
źródło
√ å ı ¥ ® Ï Ø ¿ , 4 bajty
Aby wydrukować, dodaj
o
na końcu.źródło
Sześciokąt , 7 bajtów
Wypróbuj online!
Lub w bardziej czytelnym formacie,
To pokonuje obecne rozwiązanie Hexagony o długości 11 bajtów.
Wyjaśnienie:
Jeśli pierwsza liczba nie jest równa 0, program przyjmuje następującą ścieżkę:
Odczytuje pierwszy numer i rozgałęzia się. Następnie odczytuje drugą liczbę, a następnie zawija i próbuje odczytać trzecią, ale to nie istnieje, więc czyta 0. To jest drukowane i program kończy się (zauważ, że jeśli a> 0, ponieważ b jest nieujemne a + b> 0).
Jeśli pierwsza liczba to 0, program rozpoczyna następującą ścieżkę:
Odczytuje pierwszy pozostały numer i gałęzie. Uderza w róg, biorąc trasę od północno-zachodniej krawędzi, ponieważ liczba wynosi 0 i odczytuje drugą liczbę. Zawija się, a następnie zwiększa drugi numer i drukuje.
Odbija się o
<
, drukując ponownie zwiększoną drugą wartość wejściową. Zwiększa wartość i ponownie przyjmuje północno-wschodnią krawędź, ale tym razem, ponieważ bieżąca krawędź jest dwukrotną nieujemną wartością, która jest zdecydowanie dodatnia. Następnie próbuje uzyskać trzecie wejście, ale zamiast tego otrzymuje 0.Na koniec zawija się i zostaje przekierowany przez strzałkę, a następnie próbuje odczytać czwarte wejście i ponownie otrzymuje zero. Zawija się i próbuje odczytać piąte wejście i po raz ostatni otrzymuje 0. To drukuje i owija się na
@
i wychodzi.Zauważ, że b * (10 ^ k + 1) * 10> 0 + b = b gdzie k jest długością b cyfr, więc to działa.
źródło
Bilard , 11 znaków = 17 bajtów
Narzędzia
x + y + 1
. Dość podstawowa. Zajmuje wejścia na dwóch osobnych liniach. (Nawiasem mówiąc, język został nieco zmodyfikowany po wyzwaniu, ale tylko w celu powstrzymania wprowadzania pytania, nie jestem pewien, czy ta odpowiedź jest nadal ważna).7 znaków = 11 bajtów, niekonkurujących
Ten jest krótszy, ale możliwy tylko po nowej aktualizacji języka:
Wykorzystuje to
x == y
, które bezwstydnie skradziono z rozwiązania RProgN @ ATaco [mam nadzieję, że nie masz nic przeciwko (:]. Przy$
wyjściu określa, ile piłek przeszło nad nim.źródło
slightly after the language
literówka, również myślę, że gdy język miał monit o wpisanie, nadal byłby ważny. Nie sądzę, aby standardy wyjściowe były tak rygorystyczne i niedopuszczalne są dozwolone, myślę