Tìm một số không liên quan


20

Cho 2 số nguyên không âm làm đầu vào, xuất ra một số nguyên không âm không thể được tạo thông qua bất kỳ toán tử toán học nào trên 2 đầu vào.

Ví dụ, đầu vào đã cho 23, 6, 0, 5, 1, 9, 8, 23, 2đều là đầu ra không hợp lệ.

Các hoạt động phải được tính đến là:

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())

Trong trường hợp một hoạt động sẽ dẫn đến một số nguyên (chẳng hạn như 2/3), luôn luôn là sàn. Vì thế2 / 3 = 0

Giả sử bất kỳ hoạt động không hợp lệ (chẳng hạn như chia cho 0) dẫn đến 0.

Đầu vào

2 số nguyên không âm.

Phương pháp I / O tiêu chuẩn được chấp nhận

Bạn có thể giả sử đầu vào sẽ luôn nằm trong phạm vi có thể điều chỉnh được cho ngôn ngữ đã cho của bạn, tuy nhiên hãy nhớ các sơ hở tiêu chuẩn vẫn được áp dụng.

Đầu ra

Bất kỳ số nguyên không âm nào không thể được tạo thông qua bất kỳ thao tác nào ở trên trên 2 đầu vào.

Tủ thử

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

Chấm điểm

Đây là nên ít byte nhất sẽ thắng!



Tôi nghĩ rằng một cách để giải quyết điều này là tìm một số nguyên tố lớn hơn (a + b)
Dead Possum

1
@DeadPossum chắc chắn sẽ là một giải pháp hợp lệ, mặc dù có lẽ không phải là duy nhất, hay chơi gôn nhất;)
Skidsdev

Tôi cá rằng có một số ngôn ngữ ưa thích có thể làm điều đó trong vài byte: D
Dead Possum

Câu trả lời:


20

Võng mạc , 3 byte

.
1

Hãy thử trực tuyến!

Đưa các đầu vào được phân tách bằng dấu cách (hoặc bất kỳ ký tự không phải dòng mới nào)

Thay thế tất cả các chữ số bằng 1và nối các số kết quả với một số khác 1.

Bằng chứng chính xác

Phép lịch sự của Martin Ender


về mặt kỹ thuật, điều này không kết hợp các số kết quả với một số khác 1, nó chỉ đơn giản lấy đầu vào là một chuỗi gồm 2 số được phân tách bằng dấu cách và thay thế mọi ký tự bằng 1. Nhưng có thể nói tôi không thể tìm thấy bất kỳ ví dụ nào chứng minh bạn sai. .. chưa
Skidsdev

@Mayube tất nhiên là có, và như vậy nó có thể hoạt động với bất kỳ chuỗi nào, không chỉ một chuỗi được tạo bởi hai số cách nhau bởi một khoảng trắng. Giải thích của tôi là về trừu tượng "hai số đầu vào".
Leo

2
"Người ta biết [sic] [...] rằng một khoản bồi thường trong căn cứ 10 không thể [...] là một sức mạnh hoàn hảo." Không có thao tác nào trong danh sách đã cho ngoài số mũ có thể dẫn đến nhiều chữ số hơn tổng số chữ số đầu vào, vì vậy điều này phải hợp lệ.
Martin Ender

Bạn táo tợn! +1
Vụ kiện của Quỹ Monica

Hoạt động trong QuadR quá!
Adám

11

Thạch , 3 byte

+Æn

Hãy thử trực tuyến!

Giải trình:

+Æn Arguments: x, y
+                            x + y.
 Æn Find a prime larger than

Tôi nghĩ điều này là hợp lệ ...
Erik the Outgolfer

Tôi giả sử tổng này đầu vào và đầu ra số nguyên tố đầu tiên lớn hơn tổng?
Skidsdev

1
@DeadPossum Tôi sắp viết một cái. Hy vọng tôi chơi golf tốt.
Erik the Outgolfer

1
Định đề của Bertrand gần như đủ tốt để chứng minh các tác phẩm nối. Ghép với số b nhỏ hơn ở bên phải chúng ta có a..b> = 10a> 4a> 2 (a + b) và nối với số b nhỏ hơn ở bên trái chúng ta có b..a> (b + 1) a. Trường hợp thú vị không nhỏ duy nhất ở đây phải là b = 1, trong đó chúng ta có 1..a> 2a = 2 (a + b) - 2. Nơi mà ràng buộc này chặt nhất là cho a = 9 .... 9. Đây là trường hợp không nhỏ duy nhất có thể là một vấn đề đối với định đề của Bertrand. Tuy nhiên, có kết quả tốt hơn như mathoverflow.net/questions/2724
tehtmi

1
Tôi đoán có một phiên bản của định đề của Bertrand chứng minh n <p <2n - 2 sẽ hoạt động cho mọi thứ. Tôi đã suy nghĩ n <p <2n.
tehtmi

9

Python 2 , 8 byte

'1'.join

Hãy thử trực tuyến!

Lấy danh sách hai chuỗi số làm đầu vào, xuất ra một chuỗi số duy nhất. Nối các số với một 1ở giữa.

Kết quả có quá nhiều chữ số cho bất cứ điều gì trừ số mũ. Lưu ý rằng đầu ra cho (x,y)có nhiều hơn một chữ số xvà được ykết hợp, trừ khi xhoặc bằng y0. Đối với số mũ, chúng tôi kiểm tra xem điều này có nghĩa là x**ykhông bao giờ khớp.

  • Nếu xlà 0 hoặc 1, thì x**yquá nhỏ
  • Nếu y<=1, thì x**y<=xquá nhỏ
  • Nếu y==2, sau đó x**2phải có hai chữ số nhiều hơn x. Điều này xảy ra x=316, và chúng tôi không thể kiểm tra bất kỳ công việc nào.
  • Nếu y==3, sau đó x**3phải có hai chữ số nhiều hơn x. Điều này xảy ra lên đến x=21. Chúng tôi có thể kiểm tra rằng không ai trong số họ làm việc.
  • Nếu 3<y<13, sau đó x**ynhanh chóng được quá lâu. Nó chỉ hợp lý có đúng số chữ số x<=25và chúng ta có thể kiểm tra chúng.
  • Nếu y>=14, sau đó x**ylà quá dài ngay cả đối với nhỏ nhất có thể x==2.

7

CJam (7 ký tự)

{+))m!}

Điều này tạo ra một số (a+b+2)!lớn hơn số liên quan lớn nhất trong hầu hết các trường hợp.

Đó là khá rõ ràng rằng số lượng có liên quan lớn nhất phải là một trong a ** b, b ** a, concat(a, b), concat(b, a).

Nếu chúng ta xem xét logarit, chúng ta thấy rằng

  • 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)

Do đó, nó không có triệu chứng lớn hơn và chúng ta chỉ cần lo lắng về một vài trường hợp nhỏ. Trong thực tế, trường hợp duy nhất mà đầu ra giá trị không lớn hơn tất cả các số liên quan là 0, 1(hoặc 1, 0), mà nó đưa ra 6và số liên quan lớn nhất là 10.


3

JavaScript (ES6), 15 byte

Đưa đầu vào theo cú pháp currying.

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

a² + b² + 1 sẽ thất bại đối với nhiều mục như 3² + 5² + 1 = 35 hoặc 7² + 26² + 1 = 726 (ghép). a² + b² + 2 nên an toàn. Điều này đã được kiểm tra toàn diện cho 0 ≤ a b ≤ 50000 .

Bản giới thiệu


1
Điều này nên được an toàn từ nối. Gọi b là số được ghép bên phải. Khắc phục b, chúng ta có thể giải phương trình bậc hai cho a: a ^ 2 + b ^ 2 + 2 - 10 ^ k * a - b = 0. Phép phân biệt của bậc hai phải là một hình vuông hoàn hảo để phương trình này có nghiệm nguyên. . Phân biệt đối xử là 10 ^ 2k - 4 (b ^ 2 - b + 2) = 10 ^ 2k - (2b - 1) ^ 2 - 7. Hãy xem xét modulo 9. k không quan trọng và chúng tôi không bao giờ có dư lượng bậc hai cho bất kỳ b.
tehtmi

3

Python, 115 95 79 byte

Giải pháp ngu ngốc đơn giản. Hãy vượt qua tôi.

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 byte vì ngu ngốc x/0.
-20 byte nhờ @RobinJames
-16 byte nhờ @tehtmi


x / y nếu y khác 0 sẽ nhỏ hơn hoặc bằng x * y cho x, y không âm nên tôi nghĩ bạn có thể lấy lại 12 byte đó cộng thêm 3
Robin James Kerrison vào

@RobinJames À đúng rồi, tôi thật ngốc. Cảm ơn.
HyperNeutrino

1
Tôi nghĩ bạn sẽ có thể loại bỏ nhiều trường hợp hơn: 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. (Đối với cái cuối cùng đó, XOR giống như add mà không mang theo và AND đang tìm các bit sẽ mang. HOẶC đang lấy (1, 1) -> 1 thay vì (1,1) -> 2 như ngoài thực tế.)
tehtmi

2

Python, 27 byte

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

Xuất ra một số lớn hơn tất cả các số liên quan.

Hãy thử trực tuyến!

-1 byte nhờ Kevin Cruijssen.
-2 byte nhờ Dead Possum.


Liên kết TIO của bạn trống. Ngoài ra, tôi nghĩ bạn có thể xóa khoảng trống sau :nếu tôi không nhầm.
Kevin Cruijssen

@KevinCruijssen Rất tiếc, đã sửa nó, cảm ơn!
Ankoganit

Bạn có thể xóa f=- lambda không tên được chấp nhận
Dead Possum

@DeadPossum Không biết điều đó, cảm ơn!
Ankoganit

Bạn có thể có thể làm với việc loại bỏ ít nhất một trong hai số tiền (và tương ứng +), nhưng tôi không hoàn toàn chắc chắn.
Theo

2

Python 2, 25 byte

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

Nối và thêm 3

Dùng thử trực tuyến


Điều này có hoạt động nếu x và y đều là 3 không?
Robert Benson

@RobertBenson Nên làm, afaik bạn không thể thực hiện 36 từ 3 và 3
Skidsdev

Điều này có vẻ ổn với tôi. Phép nối ngược phải có modulo dư khác nhau 9. Đối với lũy thừa, chỉ có một số trường hợp hữu hạn cần xem xét trước khi kết quả của lũy thừa có quá nhiều chữ số dọc theo dòng câu trả lời Python của xnor. Tôi không thấy bất kỳ xung đột nào (không cho +1, mặc dù +2 có 2 ** 6 = 62 + 2).
tehtmi

@tehtmi +1 không thành công trên x = y = 0 Thử nghiệm liên kết trực tuyến thử nghiệm tất cả các kết hợp của x và y trong phạm vi [0,400]
TFeld

2

JS (ES6), 12 byte

x=>x.join`1`

Thuật toán tương tự như câu trả lời python này . Đưa đầu vào như một mảng của ints.


1

Braingolf , 4 byte

9&+^

Hãy thử trực tuyến! (Header & Footer là Thông dịch viên, mã là mã braingolf thực tế, đối số là đầu vào)

Đầu ra (a+b+9)**(a+b+9)

Từ thử nghiệm của tôi, tôi không thể tìm thấy bất kỳ cặp nào mà điều này không hoạt động.


1

Python 2 , 19 byte

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

Hãy thử trực tuyến!

Tôi khá chắc chắn rằng sự thay đổi bit hoạt động cho tất cả các trường hợp, nhưng tôi không 100% cho nó. Dù sao, nó tiết kiệm một vài byte qua phiên bản lũy thừa.




1

QBIC , 8 byte

Man, rất nhiều cách tuyệt vời để chỉ lấy những con số này và nhận được một số không liên quan. Tôi chỉ phải thử một vài lần, để xem QBIC sẽ theo kịp như thế nào. Câu ngắn nhất là một cổng câu trả lời Python của xnor, nối các số có 1 ở giữa:

?;+@1`+;

Tất cả những người, một câu trả lời Retina của Leo:

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

Tìm số nguyên tố lớn hơn tiếp theo:

c=:+:+1≈µc|+1|c=c+1]?c



1

05AB1E , 2 4 byte

+ØDm

Hãy thử trực tuyến!

Giống như câu trả lời Jelly, tìm một số nguyên tố sau tổng. Một byte ngắn hơn :)

EDIT : Bây giờ nâng nó lên sức mạnh của chính nó để đủ cho ngoại lệ.


Thực tế không phải cùng một thuật toán, điều này tìm thấy a+bsố nguyên tố thứ nhất, trong khi của tôi tìm thấy số nguyên tố nhỏ nhất lớn hơn a+b.
Erik the Outgolfer

Dù bằng cách nào, nó nên hoạt động.
Neil A.

3
Thất bại cho 6443, 3 (cung cấp cho nguyên tố 64433, phép nối).
tehtmi

@tehtmi đúng, thất bại.
Skidsdev

Xem chỉnh sửa của tôi, nên hoạt động ngay bây giờ
Neil A.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.