Notcalc (Oblicz złą odpowiedź)


33

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ściowych 0,0zwraca -1, co nie jest naturalne)

  • "ABC"( ABCnie jest liczbą)

Uwagi:

  • Wynik zawsze musi być sumą dwóch liczb naturalnych (co w rzeczywistości jest po prostu liczbą naturalną)

  • -1, undefined, infinity, NaNI komunikaty o błędach nie są liczbami naturalnymi. Dla naszych celów 0jest to naturalne (choć nie wszyscy matematycy się z tym zgadzają).


1
Może bierzemy liczby jako ciągi, a dane wyjściowe jako ciąg?
xnor

1
Czy dane wyjściowe mogą mieć zera na początku?
Kritixi Lithos

1
Zakładam, że należy wziąć pod uwagę przepełnienia, więc wynik 2 ^ 32 -1 i 2 nie powinien być ujemny, prawda?
adrianmp

1
Tylko mała uwaga, ponieważ lubię zwracać uwagę na bezużyteczne szczegóły: 0 nie jest liczbą naturalną. Jeśli zmienisz pierwsze zdanie na „Biorąc pod uwagę dwie nieujemne liczby całkowite ...”, nie pozostanę bezużyteczny szczegół do komentowania. :)
peech

6
@peech To nie jest prawda. 0 jest uważana za liczbę naturalną w niektórych definicjach. Nie możesz go zobaczyć, ponieważ został usunięty, ale odbyła się obszerna rozmowa na ten temat.
Wheat Wizard

Odpowiedzi:


36

RProgN , 4 3 1 bajt

Przekreślone 4 to nadal 4; (

E

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

0+0 = 1
1+0 = 0
0+1 = 0
1+1 = 1

Wypróbuj online!


22
Właśnie poszedłem do króliczej nory z twoim przekreślonym ogniwem. Oceniam <s> 4 </s> / 4
Rohan Jhunjhunwala

2
@RohanJhunjhunwala trzymaj moje 4, wchodzę
Albert Renshaw

4
̶4̶ <- u + 0336 (łączenie postaci) może być lepszym sposobem na to
Albert Renshaw

3
PSA: codegolf.stackexchange.com/questions/48100/… Oryginalna przekreślona rzecz
Christopher

3
@AlbertRenshaw stary PPCG przekreślony-4-a-roo?
Rɪᴋᴇʀ

15

Siatkówka , 3 bajty

 
1

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 a 1, 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).


2
0 0powinien również działać.
Dennis

1
@Dennis: Zastanawiałem się nad tym. 010jest uważany za liczbę całkowitą za pośrednictwem zasadniczo wszystkich parserów liczb całkowitych. Widzę potencjalny argument, który 0 8jest nieprawidłowy na podstawie, która 018jest 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?

2
Lub . 1jeśli nie chcesz samodzielnie zwracać zer wiodących.
Martin Ender

@MartinEnder>, ale jest liczbą naturalną
wizzwizz4

@ wizzwizz4 Nie obserwuję.
Martin Ender

15

Python , 13 bajtów

[(0,0)].count

Wypróbuj online! Pobiera dane wejściowe jako krotkę.

Użycie metody obiektowej dla funkcji pozwala uniknąć płyty kotłowej a lambda.

lambda a,b:a-~b   # 15 bytes

Tu chodzi o to, aby na mapie (0,0), aby 1i wszystko inne 0. Ponieważ 0+0daje tylko sumę 0liczb 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

(0,0).__ge__

To sprawdza, czy krotka wejściowa jest co najwyżej (0,0), co jest prawdą tylko w przypadku (0,0). W Python True==1i False==0. Co więcej, wyjście z kodu wyjściowego i potraktowanie go jak Boolena Pythona pozwoliłoby zaoszczędzić dwa bajty:

[(0,0)].pop

Jeśli ciąg znaków we / wy jest dozwolony, a początkowe zera są prawidłowe, istnieje 8-bajtowe rozwiązanie

'1'.join

To konkatenuje a1b, które zawsze jest większe niż a+b.


1
int.__eq__na 10 bajtów
niebieski

@muddyfish Tak, widziałem też odpowiedź suvera, nie myślałem o stosowaniu równości. Zwraca jednak wartość bool, która moim zdaniem jest niepewna w przypadku wyzwania, które wymaga podania wyniku liczbowego.
xnor

1
IMO, jeśli pływa jak liczba i szarlatuje jak liczba, rozsądnie jest założyć, że to liczba.
CalculatorFeline,

13

MATL i in. 1 bajt

=

Akceptuje dwie liczby naturalne jako dane wejściowe i porównuje je. Jeśli są one równe, wynik jest, 1a jeśli nie są równe, wynik jest 0. Jest to to samo podejście, co rozwiązanie @ ATaco.


3
=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.

@ ais523 Zaktualizowano, aby uwzględnić to. Dzięki.
Suever

2
Również w stosie. Wypróbuj online!
Conor O'Brien

Czy możesz dodać APL i J?
Adám

@ Adám Pewnie. Czy masz link TIO, z którym mogę połączyć?
Suever

10

JavaScript, 10 bajtów

x=>y=>!x+y

Pobiera 2 liczby przy użyciu składni curry, tak jak to:

(x=>y=>!x+y)(0)(0) // 1

4
Witamy na stronie! :)
DJMcMayhem

Dzięki =) Od jakiegoś czasu czytam wyzwania, próbuję znaleźć dobre miejsce do rozpoczęcia.
Malivil

9

Vim, 3 bajty / naciśnięcia klawiszy

<C-a>gJ

Wypróbuj online!

Zauważ, że <C-a>tak naprawdę to ctrl-a , który reprezentuje bajt 0x01.

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:

a
b

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ą.


9

Brain-Flak , 8 bajtów

({}{}())

Wypróbuj online!

To najbardziej czytelna odpowiedź, jaką kiedykolwiek napisałem. :)

Wyjaśnienie:

(      )    # Push the sum of all the following:
 {}         #   The first input
   {}       #   The second input
     ()     #   and one

Alternatywne rozwiązania (także 8 bajtów):

({}[]{})    # Sum + 1
([]{}{})    # Sum + 2

Istnieje wiele innych rozwiązań, które działają tylko z dodatnimi liczbami:

(<{}>{})
({}<{}>)
({{}}())
({{}()})
({{}}[])
({{}[]})

7

Galaretka , 2 bajty

+‘

+ Dodaje dwa dane wejściowe razem, a następnie „zwiększa odpowiedź o jeden

Wypróbuj online!


Ta odpowiedź czyni mnie galaretką.
MD XF,

Założę się, że tak: P
Christopher

Technicznie nie jest to (a+b)+1jednak a+(b+1)ponieważ łańcuch dyad-monada fGjest traktowany jako f(a, G(b)). W tym przypadku jest to to samo, ale technicznie działa inaczej: P
HyperNeutrino

6

TI-Basic, 3 bajty

not(max(Ans

Alternatywne rozwiązania:

10^(sum(Ans         3 bytes @DestructibleWatermelon
not(sum(Ans         3 bytes
1+sum(Ans           4 bytes
Input :X=Y          5 bytes @ATaco
Input :X+not(Y      6 bytes
Input :not(X+Y      6 bytes
Input :10^(X+Y      6 bytes
Input :X+Y+1        7 bytes
Input :not(max(X,Y  7 bytes
Ans(1)=Ans(2        8 bytes
Ans(1)+not(Ans(2    9 bytes
not(Ans(1)+Ans(2    9 bytes

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ę?)


1
Nikt nie lubi, gdy OP publikuje super krótkie rozwiązanie w pytaniu, co utrudnia pokonanie.
mbomb007

@ mbomb007 Przypuszczam, ale były to tylko fragmenty, a nie pełne programy. Dodanie Prompt A,B:do nich powoduje zwiększenie liczby bajtów do ośmiu bajtów.
Timtech

1
@Timtech Dokładnie. Nie chciałem dawać dobrych odpowiedzi jako przykładów, chciałem tylko przykładów.
Julian Lachniet

@JulianLachniet Rozumiem i doceniam to :)
Timtech

6

Brachylog , 2 bajty

+<

Wypróbuj online!

Wyjaśnienie

+     The sum of the elements in the Input...
 <    ...is strictly less than the Output
      (implicitely label the output with an integer respecting this constraint)

To zawsze spowoduje A+B+1, jeśli Input = [A, B].


5

Mathematica, 5 bajtów

1+##&

Zwraca sumę dwóch argumentów plus 1. Na przykład 1+##&[2,5]zwraca 8.

(Uwaga dodatkowa: Binomialprawie działa, ale Binomial[1,0]=1i Binomial[4,2]=6są kontrprzykładami; myślę, że są to jedyne kontrprzykłady.)


Pochhammerwydaje się być lepszy niż Binomial. O ile mogę stwierdzić, tylko 1,0zawodzi.
Martin Ender

Ach i KroneckerDeltadziała dla wszystkich danych wejściowych (co jest równoważne sprawdzeniu równości w niektórych esolangach). Ponownie zaimplementuj go jako krótszy Boole[#==#2]&, ale zakładam, że szukałeś wbudowanego, który działa tak, jak jest.
Martin Ender

5

PHP, 17 bajtów

<?=1-join($argv);

Uruchom tak:

echo '<?=1-join($argv);' | php -- 0 0
> 1

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 to 0(0123 = 123).



4

Turtlèd , 12 bajtów

robi bardzo duże liczby

'1?:?:[1'0l]

Wypróbuj online!

Wyjaśnienie:

'1                write one on the starting grid square
  ?:?:            take a number, move right that many (repeat)
      [1   ]      while not on a grid square with a one on it
        '0l       put a zero on that square, move left
[implicit output of grid]

W ten sposób wyprowadza 10 ** (x + y).



4

Java (OpenJDK 9) , 10 bajtów

a->b->a-~b

Wypróbuj online!


1
Z zmiękczania, można oszczędzić bajt: a->b->a-~b. Działa również z Javą 8, dowolną edycją (więc nie ma potrzeby określania OpenJDK 9)
Olivier Grégoire

@ OlivierGrégoire Java zaczęła wyglądać jak JS teraz> _>
Kritixi Lithos

@KritixiLithos Cóż ... mieliśmy podpowiedź, że tak się stanie przez lata: Java Script ;-)
Olivier Grégoire

@KritixiLithos Specyfikacja Java 9 zawiera sekcję „Zgodność z ECMAScript 6”.
Pavel

@ OlivierGrégoire Tak, ale to zgłoszenie zostało wygenerowane automatycznie, dlatego dodano 9.
Pavel

4

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
Hodor?!
Hodor?!
Hodor HODOR!
HODOR!!!

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ście

Hodor dodaj 1 do akumulatora

HODOR! wysyła akumulator jako liczbę

HODOR!!!zabija Hodora! Nieeeee!

To jest pseudo kod:

Take input
Take input
Add 1 to sum(inputs)
Output value

1
Myślę, że musisz wymyślić inną nazwę dla swojego języka, chyba że jest to tłumacz wcześniej istniejącego języka Hodor utworzonego w 2015 r., Ale jestem pewien, że tak nie jest.
mbomb007

@ mbomb007 Nie, to nie moje, ale są języki o zduplikowanych nazwach. Znam dwa nazywa się 7 na tej stronie (w tej chwili po prostu ich nie mogę znaleźć)
caird coinheringaahing

1
Jestem prawie pewien, że jest tylko jeden o nazwie 7 i to ten . Możesz zmienić wielkie litery w tytule w celu łatwej naprawy, na przykład HODOR.
mbomb007

@ mbomb007 kopalnia jest H zapach i ich jest h zapach tak, że może być na tyle?
caird coinheringaahing

Nie, ich ma wielką literę H, jak widać za każdym razem, gdy używa nazwy języka na swojej stronie internetowej.
mbomb007,

3

SmileBASIC, 4 bajty

!A+B

nie (A) + B
1+1=2 -> !1+1 -> 0+1=1
0+1=1 -> !0+1 -> 1+1=2


Z ciekawości, jak to obsługuje 2+1?
ATaco

2
2+1=3 -> !2+1 -> 0+1=1
12Me21

3

R, 13 bajtów

sum(scan()+1)

Podziękowania dla Jonathana Allana za jego wkład!


@JonathanAllan: Masz rację, zmieniłem odpowiedź. Dzięki !
Frédéric,

OK, całkiem pewny, że 00może tak samo, 0jakby sep="1"?
Jonathan Allan

@JathanathanAllan: cholera! Dzięki jeszcze raz !
Frédéric,

Patrząc na wskazówki dotyczące gry w golfa w R wydaje się, że scan()powinno być w porządku, akceptując wejście wektorowe, takie jak to . Ale możemy zrobić jeden bajt lepiej cat(sum(scan()+1)). Może jest krótszy?
Jonathan Allan

1
Gdy catjest to pełny program, alternatywą byłaby nienazwana funkcja dla tego samego kosztu bajtufunction(a,b)a+b+1
Jonathan Allan

3

05AB1E , 1 bajt

Q

Działa tak samo jak RProgNodpowiedź.

Sprawdza, czy ai bsą takie same. Jeśli tak, wydrukuj 1. W przeciwnym razie wydrukuj0

Wypróbuj online!


3
¢(a.count (b)) powinien również działać na 1 bajt.
Riley

@ Riley możesz opublikować to jako własną odpowiedź.
Okx,

2
Nie jest wystarczająco różny, by potrzebować własnej odpowiedzi. Pomyślałem, że możemy połączyć oba rozwiązania 1-bajtowe w jedną odpowiedź.
Riley,

3

C 26 24 19 bajtów

f(c,d){return!c+d;}

Wersja bez golfa:

int f(int c,int d)
{
   return !c+d; 
}

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.


1
Potrzebujesz w ()pobliżu !c+d?
Pavel

@Pavel Masz rację, nawiasy były bezużyteczne, zaktualizowane!
Abel Tom

2
Nie jestem w 100% pewien, ale myślę, że możesz usunąć to miejsce return, na przykładreturn!c+d;
Metoniem

1
Stracić zwrot i zamiast tego przypisać do niego coś w rodzaju c + =! D
Ahemone

1
@AlbertRenshaw Nie polegam na przenośności, ale oto kilka przykładów. Nie mogę zmusić go do pracy w trybie offline i wydaje się, że należy go przypisać do zmiennej bez argumentów na TIO .. tio.run/nexus/…
Ahemone

3

MATLAB / Octave, 3 bajty

@eq

Akceptuje dwa dane wejściowe i sprawdza równość i daje, 1jeśli są one równe i 0inne.

Demo online


4
Nie powinno tak być @eq? Zwraca uchwyt funkcji, którego można użyć do oceny żądanej funkcji, podczas gdy po prostu eqjest bez znaczenia.
Sanchises

@ Święta Widziałem wiele odpowiedzi idących w obie strony: codegolf.stackexchange.com/questions/106149/compute-the-median/… . Nie jestem pewien, która opcja jest preferowana.
Suever

Hmmm. Powinienem pomyśleć, że to bardziej fragment kodu, a @zamienia go w prawidłową konstrukcję językową. Ale może jestem pedantyczny.
Sanchises

3

pieprzenie mózgu, 12 bajtów

Proste rozwiązanie, które wychodzi A+B+1.

,>,[-<+>]<+.

Wypróbuj online


Alternatywna odpowiedź (12 bajtów):,>,[-<++>]<.
Julian Lachniet

@JulianLachniet będzie to wyjście A + 2B?
George

A + 2B zhakowany, gdy B = 0
l4m2

@ mbomb007 Mówię ,>,[-<++>]<.rozwiązanie
l4m2

@JulianLachniet Tak, to nie jest poprawna odpowiedź, ponieważ A + 2B dla wejścia B = 0, daje A.
mbomb007

3

dc , 5 bajtów

?1n+n

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


3

PHP, 13 bajtów; (17 bez REPL)

!max($argv)+0

Przykłady

[0,0] -> 1
[0,1] -> 0
[1,0] -> 0

Dla osób bez użycia REPL

<?=!max($argv)+0;

i uruchom używając

echo '<?=!max($argv)+0;' | php -- 0 0

Ta odpowiedź jest nieprawidłowa, ponieważ nic nie wyświetla
aross

@aross Jeśli problem polegał na obsadzie boolean, zaktualizowałem swoją odpowiedź
mleko

Tak, rozwiązałeś oba problemy. Wynik byłby prawdziwy / fałszywy, a nie 1/0. Również REPL :)
aross

3

Cubix, 9 8 bajtów

u-~OII/@

Wyjaśnienie

Rozszerzona, ta odpowiedź wygląda następująco:

    u -
    ~ O
I I / @ . . . .
. . . . . . . .
    . .
    . .

Kolejność wykonywanych instrukcji jest następująca II~-O@

II~-O@
I      # First input
   -   # Minus
 I~    # NOT(second input)
    O  # Output as integer
     @ # End program

Testowane pod kątem wszystkich kombinacji wejść, gdy oba są w zakresie 0-100.

Wypróbuj tutaj .


3

APL - 4 bajty

1++/

Pobiera tablicę, sumuje jej elementy i dodaje jeden. Test:

 1++/1 2  
4
 1++/1 0
2


3

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ę:

Nie 0

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ę:

Czy 0

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.

Jest nadal 0

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.

Jest jeszcze 0 trochę więcej

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.


2

Bilard , 11 znaków = 17 bajtów

⇲
⇲
+
1
+
↥

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.


slightly after the languageliteró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ę
Destructible Lemon

@DestructibleWatermelon Och, to była dziwna literówka. Dziękuję za wyjaśnienie. Właściwie zmodyfikowałem język, a potem przyszedłem i zobaczyłem wyzwanie, więc postanowiłem dodać tę notatkę, na wypadek, gdyby ktoś zdecydował się być wybredny w sprawdzaniu, kiedy wypychano do GitHub, ale dziękuję za wyjaśnienie.
HyperNeutrino,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.