Znajdź niepowiązany numer

20

Biorąc pod uwagę 2 nieujemne liczby całkowite jako dane wejściowe, wyprowadzaj nieujemną liczbę całkowitą, której nie można utworzyć za pomocą żadnego operatora matematycznego na 2 wejściach.

Na przykład, wprowadzone dane 2i 3, 6, 0, 5, 1, 9, 8, 23, 2są nieprawidłowe wyjścia.

Operacje, które należy wziąć pod uwagę to:

Addition        (a + b)
Subtraction     (a - b) and (b - a)
Multiplication  (a * b)
Division        (a / b) and (b / a)
Modulus         (a % b) and (b % a)
Exponentiation  (a ** b) and (b ** a)
Bitwise OR      (a | b)
Bitwise XOR     (a ^ b)
Bitwise AND     (a & b)
Concatenation   (a.toString() + b.toString()) and (b.toString() + a.toString())

W przypadkach, w których operacja prowadziłaby do liczby całkowitej (takiej jak 2/3), zawsze wartość floor. Więc2 / 3 = 0

Załóżmy, że wszelkie nieprawidłowe operacje (takie jak podzielenie przez 0) dają 0.

Wejście

2 nieujemne liczby całkowite.

Standardowe metody We / Wy są akceptowane

Możesz założyć, że dane wejściowe będą zawsze w zakresie możliwym do obsługi dla danego języka, jednak pamiętaj, że nadal obowiązują standardowe luki .

Wynik

Dowolna nieujemna liczba całkowita, której nie można utworzyć za pomocą żadnej z powyższych operacji na 2 wejściach.

Przypadki testowe

Input  -> Invalid outputs
2, 3   -> 0, 1, 2, 3, 5, 6, 8, 9, 23, 32
0, 0   -> 0
17, 46 -> 0, 2, 12, 17, 29, 63, 782, 1746, 4617, 18487710785295216663082172416, 398703807810572411498315063055075847178723756123452198369
6, 6   -> 0, 1, 6, 12, 36, 66, 46656
1, 1   -> 0, 1, 2, 11

Punktacja

To jest więc wygrywa najmniej bajtów!

Skidsdev
źródło
Powiązane
Skidsdev
Myślę, że jedynym sposobem na rozwiązanie tego jest znalezienie liczby pierwszej większej niż (a + b)
Dead Possum
1
@DeadPossum na pewno byłoby poprawnym rozwiązaniem, choć być może nie jedynym lub najbardziej golfowym;)
Skidsdev
Założę się, że istnieje jakiś wymyślny język, który może to zrobić w kilku bajtach: D
Dead Possum
16
Niepowiązane
HyperNeutrino

Odpowiedzi:

20

Siatkówka , 3 bajty

.
1

Wypróbuj online!

Pobiera dane wejściowe oddzielone spacją (lub dowolnym pojedynczym znakiem innym niż znak)

Zamienia wszystkie cyfry na 1i łączy uzyskane liczby z innymi 1.

Dowód poprawności

Dzięki uprzejmości Martina Endera

Lew
źródło
technicznie rzecz biorąc, nie jest to łączenie wynikowych liczb z innymi 1, po prostu przyjmuje dane wejściowe jako ciąg 2 liczb oddzielonych spacją i zastępuje każdą postać liczbą 1. Ale powiedziawszy to, nie mogę znaleźć żadnych przykładów, które mogłyby udowodnić, że się mylisz. .. jeszcze
Skidsdev
@Mayube oczywiście, że tak, i jako taki może pracować z dowolnym ciągiem, nie tylko jednym złożonym z dwóch liczb oddzielonych pojedynczą spacją. Moje wyjaśnienie dotyczy abstrakcji „dwóch liczb wejściowych”.
Leo
2
„Wiadomo [sic] [...], że powrót w bazie 10 nie może [...] być doskonałą mocą.” Żadna operacja na podanej liście oprócz potęgowania nie może skutkować większą liczbą cyfr niż całkowita liczba cyfr wejściowych, więc powinno to być prawidłowe.
Martin Ender
Ty bezczelny robale! +1
Pozew Fund Moniki w
Działa również w QuadR !
Adám
11

Galaretka , 3 bajty

+Æn

Wypróbuj online!

Wyjaśnienie:

+Æn Arguments: x, y
+                            x + y.
 Æn Find a prime larger than
Erik the Outgolfer
źródło
Myślę, że to jest ważne ...
Erik the Outgolfer
Zakładam, że sumuje to dane wejściowe i wyjściowe pierwszej liczby większej niż suma?
Skidsdev
1
@DeadPossum miałem właśnie napisać jeden. Mam nadzieję, że dobrze to grałem.
Erik the Outgolfer
1
Postulat Bertranda powinien być wystarczająco dobry, aby udowodnić prace konkatenacyjne. Łącząc się z mniejszą liczbą b po prawej mamy a..b> = 10a> 4a> 2 (a + b), a łącząc się z mniejszą liczbą b po lewej mamy b..a> (b + 1) za. Jedynym niemałym interesującym przypadkiem tutaj powinno być b = 1, gdzie mamy 1..a> 2a = 2 (a + b) - 2. Miejsce, w którym ta granica jest najściślejsza, to a = 9 .... 9 To jedyny niemały przypadek, który może stanowić problem dla postulatu Bertranda. Są jednak lepsze wyniki, takie jak mathoverflow.net/questions/2724
tehtmi
1
Wydaje mi się, że istnieje wersja postulatu Bertranda, który dowodzi, że n <p <2n - 2, który powinien działać na wszystko. Myślałem n <p <2n.
tehtmi
9

Python 2 , 8 bajtów

'1'.join

Wypróbuj online!

Pobiera na wejściu listę dwóch ciągów liczbowych, generuje pojedynczy ciąg liczbowy. Łączy liczby ze znakiem 1pośrodku.

Wynik ma zbyt wiele cyfr dla niczego poza wykładnikiem. Zauważ, że wyjście dla (x,y)ma jeszcze jedną cyfrę xi ypołączone, chyba że xlub ywynosi 0. W przypadku wykładnika, sprawdzamy, czy oznacza to, że x**ynigdy się nie zgadza.

  • Jeśli xwynosi 0 lub 1, to tak też jest x**y, co jest za małe
  • Jeśli y<=1to x**y<=xjest za małe
  • Jeśli y==2, to x**2musi mieć jeszcze dwie cyfry niż x. Tak się dzieje do x=316i nie możemy sprawdzić, czy żadna z nich nie działa.
  • Jeśli y==3, to x**3musi mieć jeszcze dwie cyfry niż x. Tak się dzieje do x=21. Możemy sprawdzić, czy żadna z nich nie działa.
  • Jeśli 3<y<13, to x**yszybko robi się za długo. Jest prawdopodobne tylko, że ma odpowiednią liczbę cyfr x<=25i możemy to sprawdzić.
  • Jeśli y>=14, to x**yjest za długi nawet na najmniejsze możliwe x==2.
xnor
źródło
7

CJam (7 znaków)

{+))m!}

Tworzy to liczbę (a+b+2)!większą od największej liczby pokrewnej w prawie wszystkich przypadkach.

Jest dość oczywiste, że największa liczba związany musi być jednym z a ** b, b ** a, concat(a, b), concat(b, a).

Jeśli weźmiemy pod uwagę logarytmy, znajdziemy to

  • log(a ** b) = b log a
  • log(concat(a, b)) ~= (log a) + log (b)
  • log((a + b + 2)!) ~= (a + b + 2) log (a + b + 2) - (a + b + 2)

Zatem asymptotycznie jest większy i musimy się martwić tylko o kilka małych przypadków. W rzeczywistości jedynym przypadkiem, dla którego wartość wyjściowa nie jest większa niż wszystkie powiązane liczby, jest 0, 1(lub 1, 0), dla którego daje, 6a największą liczbą pokrewną jest 10.

Peter Taylor
źródło
3

JavaScript (ES6), 15 bajtów

Pobiera dane wejściowe w składni curry.

a=>b=>a*a+b*b+2

a² + b² + 1 nie powiedzie się w przypadku wielu wpisów, takich jak 3² + 5² + 1 = 35 lub 7² + 26² + 1 = 726 (konkatenacja). a² + b² + 2 powinny być bezpieczne. Zostało to gruntownie przetestowane pod kątem 0 ≤ a ≤ b ≤ 50000 .

Próbny

Arnauld
źródło
1
To powinno być bezpieczne od konkatenacji. Niech b będzie liczbą skonkatenowaną po prawej stronie. Naprawiając b, możemy rozwiązać równanie kwadratowe dla a: a ^ 2 + b ^ 2 + 2 - 10 ^ k * a - b = 0. Wyróżnik kwadratowy musi być idealnym kwadratem, aby to równanie miało rozwiązanie liczby całkowitej . Dyskryminacja wynosi 10 ^ 2k - 4 (b ^ 2 - b + 2) = 10 ^ 2k - (2b - 1) ^ 2 - 7. Rozważ modulo 9. k nie ma znaczenia i nigdy nie otrzymamy kwadratowej pozostałości dla żadnego b.
tehtmi
3

Python, 115 95 79 bajtów

Głupie proste rozwiązanie. Zapraszam do mnie obezwładnienia

x,y=input()
f=lambda x,y:[x+y,x*y,x**y,int(`x`+`y`)]
print max(f(x,y)+f(y,x))+1

+12 bajtów z powodu głupoty x/0.
-20 bajtów dzięki @RobinJames
-16 bajtów dzięki @tehtmi

HyperNeutrino
źródło
x / y, jeśli y 0 będzie mniejsze lub równe x * y dla x, y nieujemne, więc myślę, że możesz mieć te 12 bajtów z powrotem plus kolejne 3
Robin James Kerrison
@RobinJames Ah tak, jestem głupi. Dzięki.
HyperNeutrino,
1
Myślę, że powinieneś być w stanie usunąć więcej przypadków: 1) x - y <= x <= x + y; 2) x% y <= y <= x + y; 3,4,5) x | y = x ^ y + x & y <= x ^ y + 2 * (x & y) = x + y. (W tym ostatnim XOR jest jak dodawanie bez przenoszenia, a AND znajduje bity, które mogłyby przenosić. OR przyjmuje (1, 1) -> 1 zamiast (1,1) -> 2 jak w prawdziwym dodatku).
tehtmi
2

Python, 27 bajtów

lambda a,b:(a+b+9)**(a+b+9)

Zwraca liczbę większą niż wszystkie powiązane liczby.

Wypróbuj online!

-1 bajt dzięki Kevin Cruijssen.
-2 bajty dzięki Dead Possum.

Ankoganit
źródło
Twój link TIO jest pusty. Myślę też, że możesz później usunąć tę przestrzeń, :jeśli się nie mylę.
Kevin Cruijssen
@KevinCruijssen Ups, naprawiłem to, dzięki!
Ankoganit
Możesz usunąć f=- nienazwana lambda jest dopuszczalna
Dead Possum
@DeadPossum Nie wiedziałem o tym, dzięki!
Ankoganit
Prawdopodobnie możesz zrobić z pozbyciem się co najmniej jednego z dwóch dziewiątek (i odpowiadających im +), ale nie jestem do końca pewien.
Theo
2

Python 2, 25 bajtów

lambda x,y:int(`x`+`y`)+3

Łączy i dodaje 3

Wypróbuj online

TFeld
źródło
Czy to działa, jeśli xiy są równe 3?
Robert Benson
@RobertBenson Powinieneś zrobić, jeśli nie możesz zrobić 36 z 3 i 3
Skidsdev
Wydaje mi się to prawdopodobnie w porządku. Odwrotna konkatenacja musi mieć inny modulo pozostałości 9. W przypadku potęgowania istnieje tylko skończona liczba przypadków do rozważenia, zanim wynik potęgowania będzie miał zbyt wiele cyfr wzdłuż linii odpowiedzi Python xnor. Nie widziałem żadnych konfliktów (ani dla +1, chociaż +2 ma 2 ** 6 = 62 + 2).
tehtmi
@tehtmi +1 kończy się niepowodzeniem w dniu x = y = 0 Wypróbuj test linków online dla wszystkich kombinacji xiy w zakresie [0,400]
TFeld
1

Braingolf , 4 bajty

9&+^

Wypróbuj online! (Nagłówek i stopka są tłumaczami, kod jest rzeczywistym kodem braingolfa, argumenty są danymi wejściowymi)

Wyjścia (a+b+9)**(a+b+9)

Z moich testów nie mogłem znaleźć żadnych par, na których to nie działa.

Skidsdev
źródło
1

Python 2 , 19 bajtów

lambda x,y:x+9<<y+9

Wypróbuj online!

Jestem prawie pewien, że zmiana bitów działa we wszystkich przypadkach, ale nie jestem w 100% na tym. W każdym razie oszczędza kilka bajtów w stosunku do wersji potęgującej.

KSmarts
źródło
1

QBIC , 8 bajtów

Człowieku, tyle fajnych sposobów, aby po prostu wziąć te liczby i uzyskać niepowiązaną liczbę. Musiałem tylko spróbować kilku, aby zobaczyć, jak QBIC nadąży. Najkrótszy to port odpowiedzi xnor w Pythonie, łączący liczby z 1 w środku:

?;+@1`+;

Wszyscy, port odpowiedzi Leo's Retina:

[0,_l;|+_l;||Z=Z+@1

Znalezienie następnej większej liczby pierwszej:

c=:+:+1≈µc|+1|c=c+1]?c
Steenbergh
źródło
1

05AB1E , 2 4 bajty

+ØDm

Wypróbuj online!

Taki sam jak odpowiedź Jelly, znajduje liczbę pierwszą po sumie. Jeden bajt krótszy :)

EDYCJA : Teraz podnosi ją do własnej mocy, aby wystarczyć na wyjątek.

Neil A.
źródło
Właściwie to nie ten sam algorytm, to znajduje a+bpierwszą liczbę pierwszą, podczas gdy moja uważa najmniejszą liczbę pierwszą większą niż a+b.
Erik the Outgolfer
Tak czy inaczej, powinno działać.
Neil A.
3
Nie można uzyskać 6443, 3 (co daje liczbę pierwszą 64433, konkatenację).
tehtmi
@tehtmi jest poprawne, to się nie udaje.
Skidsdev,
Zobacz moją edycję, powinna już działać
Neil A.
1

Brachylog , 3 bajty

+<ṗ

Wypróbuj online!

Nic nowego tutaj.

       The output
  ṗ    is a prime number
 <     which is strictly greater than
+      the sum of the elements of
       the input.

Teraz, aby dowiedzieć się, jak znaleźć niepowiązany ciąg ...

Niepowiązany ciąg
źródło