ค้นหาหมายเลขที่ไม่เกี่ยวข้อง


20

ให้ 2 จำนวนเต็มไม่เป็นลบเป็นเอาท์พุทจำนวนเต็มไม่ลบที่ไม่สามารถสร้างผ่านตัวดำเนินการทางคณิตศาสตร์ใด ๆ ใน 2 อินพุต

ตัวอย่างเช่นกำหนดปัจจัยการผลิต2และ3, 6, 0, 5, 1, 9, 8, 23, 2มีผลที่ไม่ถูกต้องทั้งหมด

การดำเนินการที่ต้องคำนึงถึงคือ:

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

ในกรณีที่การดำเนินการจะนำไปสู่การไม่ใช่จำนวนเต็ม (เช่น 2/3) พื้นเสมอ ดังนั้น2 / 3 = 0

สมมติว่าการดำเนินการที่ไม่ถูกต้อง (เช่นหารด้วย 0) ส่งผลให้เป็น 0

อินพุต

2 จำนวนเต็มไม่เป็นลบ

ยอมรับวิธีมาตรฐาน I / O

คุณสามารถสมมติว่าข้อมูลที่ป้อนจะอยู่ในช่วงที่สามารถจัดการได้สำหรับภาษาที่คุณกำหนดอย่างไรก็ตามโปรดจำไว้ว่าช่องโหว่มาตรฐานยังคงใช้อยู่

เอาท์พุต

เลขจำนวนเต็มที่ไม่เป็นลบใด ๆ ที่ไม่สามารถสร้างผ่านการดำเนินการใด ๆ ข้างต้นใน 2 อินพุต

Testcases

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

เกณฑ์การให้คะแนน

นี่คือจำนวนน้อยที่สุดที่จะชนะ!



ฉันคิดว่าวิธีหนึ่งในการแก้ปัญหานี้คือการหาจำนวนเฉพาะที่มีขนาดใหญ่กว่า (a + b)
Dead Possum

1
@DeadPossum แน่นอนจะเป็นทางออกที่ถูกต้องแม้ว่าอาจจะไม่ใช่แค่คนเดียวหรือเป็นนักกอล์ฟมากที่สุด)
Skidsdev

ฉันเดิมพันว่ามีบางภาษาแฟนซีที่สามารถทำได้ในสองสามไบต์: D
Dead Possum

คำตอบ:


20

เรติน่า 3 ไบต์

.
1

ลองออนไลน์!

ใช้อินพุตแยกจากกันด้วยช่องว่าง (หรืออักขระที่ไม่ใช่บรรทัดใหม่เดียว)

แทนที่ตัวเลขทั้งหมดที่มีและร่วมตัวเลขที่เกิดขึ้นอีกด้วย11

พิสูจน์ความถูกต้อง

มารยาทของMartin Ender


ในทางเทคนิคนี่ไม่ได้เข้าร่วมตัวเลขที่เกิดขึ้นกับอีก1มันเป็นเพียงการป้อนเป็นสตริงของตัวเลขที่คั่นด้วยช่องว่าง 2 และแทนที่ตัวละครทุกตัวด้วย 1 แต่ที่ถูกกล่าวว่าฉันไม่สามารถหาตัวอย่างที่พิสูจน์ว่าคุณผิด .. ยัง
Skidsdev

@Mayube แน่นอนมันทำและเป็นเช่นนั้นมันสามารถทำงานกับสตริงใด ๆ ไม่เพียง แต่ประกอบด้วยสองตัวเลขคั่นด้วยช่องว่างเดียว คำอธิบายของฉันอยู่ในรูปของสิ่งที่เป็นนามธรรม
Leo

2
"เป็นที่รู้กันว่า [repic] [... ] ว่า repunit ในฐาน 10 ไม่สามารถ [... ] เป็นพลังที่สมบูรณ์แบบได้" ไม่มีการดำเนินการในรายการที่กำหนดนอกเหนือจากการยกกำลังอาจส่งผลให้ตัวเลขมากกว่าจำนวนรวมของตัวเลขทั้งหมดดังนั้นจึงควรถูกต้อง
Martin Ender

คุณคนเสพเวจมูกหน้าด้าน! +1
คดีกองทุนของโมนิกา

ทำงานในQuadRเช่นกัน!
อดัม

11

เยลลี่ 3 ไบต์

+Æn

ลองออนไลน์!

คำอธิบาย:

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

ฉันคิดว่ามันถูกต้อง ...
Erik the Outgolfer

ฉันคิดว่านี่เป็นการรวมอินพุตและเอาท์พุตไพรม์แรกที่มากกว่าผลรวมหรือไม่
Skidsdev

1
@DeadPossum ฉันกำลังจะเขียน หวังว่าฉันเล่นกอล์ฟได้ดี
Erik the Outgolfer

1
สัจพจน์ของเบอร์ทรานด์นั้นเกือบจะดีพอที่จะพิสูจน์การต่อประสานงานได้ การต่อเชื่อมกับหมายเลข b ที่เล็กกว่าทางด้านขวาเรามี a .. b> = 10a> 4a> 2 (a + b) และเชื่อมต่อกับหมายเลข b ที่เล็กกว่าทางด้านซ้ายเรามี b..a> (b + 1) สิ่งเดียวที่น่าสนใจที่ไม่ใช่ขนาดเล็กที่นี่ควรเป็น b = 1 โดยที่เรามี 1..a> 2a = 2 (a + b) - 2 สถานที่ที่ขอบเขตนี้แคบที่สุดคือ = 9 ... 9 นี่เป็นกรณีไม่เล็กเพียงกรณีเดียวซึ่งอาจเป็นปัญหาสำหรับสมมุติฐานของเบอร์แทรนด์ อย่างไรก็ตามมีผลลัพธ์ที่ดีกว่าเช่นmathoverflow.net/questions/2724
tehtmi

1
ฉันเดาว่าจะมีเวอร์ชันของเบอร์ทรานด์เป็นหลักฐานที่พิสูจน์ว่า n <p <2n - 2 ซึ่งควรใช้ได้กับทุกสิ่ง ฉันกำลังคิดถึง n <p <2n
tehtmi

9

Python 2 , 8 ไบต์

'1'.join

ลองออนไลน์!

รับรายการสตริงสองตัวเป็นอินพุตอินพุตเอาต์พุตสตริงตัวเลขเดียว เชื่อมตัวเลขกับ a 1ตรงกลาง

ผลลัพธ์มีตัวเลขมากเกินไปสำหรับทุกสิ่งยกเว้นการยกกำลัง โปรดทราบว่าผลลัพธ์สำหรับ(x,y)มีหนึ่งหลักมากกว่าxและyรวมกันยกเว้นxหรือyเป็น 0 สำหรับเลขชี้กำลังเราตรวจสอบว่าเราตรวจสอบว่าหมายถึงx**yไม่ตรง

  • ถ้าxเป็น 0 หรือ 1 ดังนั้นก็คือx**yซึ่งน้อยเกินไป
  • หากy<=1แล้วx**y<=xมีขนาดเล็กเกินไป
  • ถ้าy==2ไปแล้วจะต้องมีตัวเลขสองหลักมากกว่าx**2 xสิ่งนี้เกิดขึ้นได้x=316และเราไม่สามารถตรวจสอบงานเหล่านั้นได้
  • ถ้าy==3ไปแล้วจะต้องมีตัวเลขสองหลักมากกว่าx**3 xสิ่งนี้เกิดขึ้นx=21ได้ เราสามารถตรวจสอบได้ว่าไม่มีงานใด ๆ
  • หาก3<y<13แล้วx**yอย่างรวดเร็วได้รับนานเกินไป มีความเป็นไปได้เท่านั้นที่มีจำนวนหลักที่ถูกต้องx<=25และเราสามารถตรวจสอบสิ่งเหล่านี้ได้
  • หากy>=14แล้วยาวเกินไปแม้สำหรับเล็กที่สุดx**yx==2

7

CJam (7 ตัวอักษร)

{+))m!}

สิ่งนี้จะสร้างหมายเลข(a+b+2)!ที่มากกว่าจำนวนที่เกี่ยวข้องมากที่สุดในเกือบทุกกรณี

มันค่อนข้างชัดเจนว่าจำนวนที่เกี่ยวข้องที่ใหญ่ที่สุดต้องเป็นหนึ่งa ** b, b ** a, ,concat(a, b) concat(b, a)

หากเราพิจารณาลอการิทึมเราจะพบว่า

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

ดังนั้นเราจึงไม่ต้องกังวลกับกรณีเล็ก ๆ น้อย ๆ อีกต่อไป ในความเป็นจริงเป็นเพียงกรณีที่การส่งออกมีมูลค่าไม่ได้เป็นขนาดใหญ่กว่าตัวเลขที่เกี่ยวข้องทั้งหมดคือ0, 1(หรือ1, 0) ซึ่งจะช่วยให้และหมายเลขที่เกี่ยวข้องที่ใหญ่ที่สุดคือ610


3

JavaScript (ES6), 15 ไบต์

รับอินพุตในรูปแบบ currying

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

a² + b² + 1จะล้มเหลวสำหรับหลาย ๆ รายการเช่น3² + 5² + 1 = 35หรือ 7² + 26² + 1 = 726 (เรียงต่อกัน) a² + b² + 2ควรปลอดภัย นี้ได้รับการทดสอบอย่างละเอียดถี่ถ้วนสำหรับ0 ≤≤≤ข 50000

การสาธิต


1
สิ่งนี้ควรปลอดภัยจากการต่อข้อมูล ให้ b เป็นจำนวนที่ตัดแบ่งทางด้านขวา การแก้ไข b เราสามารถแก้สมการกำลังสองสำหรับ a: a ^ 2 + b ^ 2 + 2 - 10 ^ k * a - b = 0 ความแตกต่างของสมการกำลังสองต้องเป็นกำลังสองที่สมบูรณ์แบบสำหรับสมการนี้เพื่อให้มีวิธีแก้ปัญหาจำนวนเต็ม . discriminant คือ 10 ^ 2k - 4 (b ^ 2 - b + 2) = 10 ^ 2k - (2b - 1) ^ 2 - 7 พิจารณาโมดูโล 9. k ไม่สำคัญและเราไม่เคยได้รับเศษกำลังสองใด ๆ ข
tehtmi

3

Python, 115 95 79 ไบต์

วิธีการแก้ปัญหาที่ตรงไปตรงมาโง่ รู้สึกฟรีเพื่อเอาชนะฉัน

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 x/0ไบต์เพราะโง่
-20 ไบต์ขอบคุณ @RobinJames
-16 ไบต์ขอบคุณ @tehtmi


x / y ถ้า y อื่น 0 จะน้อยกว่าหรือเท่ากับ x * y สำหรับ x, y ไม่ใช่ลบดังนั้นฉันคิดว่าคุณสามารถมี 12 ไบต์กลับมาบวกอีก 3
Robin James Kerrison

@RobinJames อ่าใช่ฉันเป็นคนโง่ ขอบคุณ
HyperNeutrino

1
ฉันคิดว่าคุณน่าจะสามารถลบกรณีเพิ่มเติมได้: 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 (สำหรับอันสุดท้าย XOR เป็นเหมือนการเพิ่มโดยไม่มีการพกพาและ AND กำลังค้นหาบิตที่จะส่งหรือกำลังใช้ (1, 1) -> 1 แทน (1,1) -> 2 เหมือนกับการเพิ่มที่แท้จริง)
tehtmi

2

Python ขนาด 27 ไบต์

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

ส่งออกตัวเลขที่มากกว่าตัวเลขที่เกี่ยวข้องทั้งหมด

ลองออนไลน์!

-1 ไบต์ต้องขอบคุณ Kevin Cruijssen
-2 ไบต์ขอบคุณ Dead Possum


TIO-link ของคุณว่างเปล่า นอกจากนี้ฉันคิดว่าคุณสามารถลบพื้นที่หลังจากนั้น:ถ้าฉันไม่ผิด
Kevin Cruijssen

@KevinCruijssen อ๊ะคงที่แล้วขอบคุณ!
Ankoganit

คุณสามารถลบได้f=- แลมบ์ดาที่ไม่มีชื่อเป็นที่ยอมรับ
Dead Possum

@DeadPossum ไม่ทราบว่าขอบคุณ!
Ankoganit

คุณอาจจะทำได้ด้วยการกำจัดอย่างน้อยหนึ่งในสองเก้า (และที่เกี่ยวข้อง+) แต่ฉันไม่แน่ใจทั้งหมด
Theo

2

Python 2, 25 ไบต์

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

เชื่อมต่อและเพิ่ม 3

ลองออนไลน์


มันใช้งานได้ไหมถ้า x และ y ทั้งคู่เป็น 3?
Robert Benson

@RobertBenson ควรทำอย่างไร Afaik คุณไม่สามารถสร้าง 36 จาก 3 และ 3 ได้
Skidsdev

ดูเหมือนว่าฉันจะโอเค การต่อข้อมูลย้อนกลับจะต้องมีโมดูโลตกค้างที่แตกต่างกัน 9 สำหรับการยกกำลังมีจำนวน จำกัด ที่ต้องพิจารณาก่อนที่ผลลัพธ์ของการยกกำลังจะมีตัวเลขจำนวนมากเกินไปตามแนวของคำตอบของไพ ธ อนของ xnor ฉันไม่เห็นความขัดแย้งใด ๆ (ไม่ใช่สำหรับ +1 แม้ว่า +2 จะมี 2 ** 6 = 62 + 2)
tehtmi

@tehtmi +1 ล้มเหลวใน x = y = 0 ลองทดสอบการเชื่อมโยงออนไลน์สำหรับชุดค่าผสมทั้งหมดของ x และ y ในช่วง [0,400]
TFeld

2

JS (ES6) 12 ไบต์

x=>x.join`1`

อัลกอริทึมเช่นเดียวกับคำตอบหลามนี้ รับอินพุตเป็นอาร์เรย์ของ ints


1

Braingolf , 4 ไบต์

9&+^

ลองออนไลน์!(ส่วนหัวและท้ายกระดาษเป็นล่ามรหัสเป็นรหัส braingolf จริง args เป็นอินพุต)

เอาท์พุท (a+b+9)**(a+b+9)

จากการทดสอบของฉันฉันไม่สามารถหาคู่ใด ๆ ที่มันไม่ทำงาน


1

Python 2 , 19 ไบต์

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

ลองออนไลน์!

ฉันค่อนข้างแน่ใจว่าการเปลี่ยนแปลงบิตใช้ได้กับทุกกรณี แต่ฉันไม่ได้ 100% เลย อย่างไรก็ตามมันจะบันทึกไม่กี่ไบต์กว่ารุ่นยกกำลัง




1

QBICขนาด 8 ไบต์

ผู้ชายวิธีที่เจ๋ง ๆ มากมายในการจดตัวเลขเหล่านี้และรับจำนวนที่ไม่เกี่ยวข้อง ฉันต้องลองสองสามครั้งเพื่อดูว่า QBIC จะติดตามได้อย่างไร สิ่งที่สั้นที่สุดคือพอร์ตของคำตอบ Python ของ xnor โดยการต่อตัวเลขกับ 1 ตรงกลาง:

?;+@1`+;

ทุกคนพอร์ตของจอประสาทตาของ Leo ตอบ:

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

ค้นหานายกที่ใหญ่กว่าถัดไป:

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

1

sed , 6 ไบต์

s/ /1/

ลองออนไลน์!

อินพุตคือ stdin ในรูปแบบ "x y" เอาต์พุตคือ stdout

พอร์ตของคำตอบหลามนี้ซึ่งรวมถึงการพิสูจน์ความถูกต้อง ขอบคุณมากสำหรับxnorสำหรับวิธีการง่าย ๆ เช่นนี้


1

Java 8, 15 ไบต์

a->b->a*a+b*b+2

พอร์ตจาก@Arnauld 's ที่น่าตื่นตาตื่นใจ JavaScript (ES6) คำตอบ
ลองที่นี่

วิธีการตรงไปข้างหน้า ( 177 170 ไบต์ ):

a->b->{int r=1;for(;a+b==r|a-b==r|a*b==r|(b>0?a/b==r|a%b==r:0>1)|Math.pow(a,b)==r|(a|b)==r|(a^b)==r|(a&b)==r|new Integer(""+a+b)==r|new Integer(""+b+a)==r;r++);return r;}

ลองที่นี่


1

05AB1E , 2 4 ไบต์

+ØDm

ลองออนไลน์!

เช่นเดียวกับคำตอบของเยลลี่ค้นหายอดรวมหลังจากรวม หนึ่งไบต์สั้นลง :)

แก้ไข : ตอนนี้ยกมันให้เป็นพลังของตัวเองเพื่อให้เพียงพอสำหรับข้อยกเว้น


ไม่ได้วิธีเดียวกันจริงพบนี้'วันที่สำคัญในขณะที่เหมืองพบว่ามีขนาดเล็กที่สุดที่สำคัญมีขนาดใหญ่กว่าa+b a+b
Erik the Outgolfer

ไม่ว่าจะด้วยวิธีใดก็ควรใช้งานได้
Neil A.

3
ล้มเหลวสำหรับ 6443, 3 (ซึ่งให้นายก 64433 การต่อข้อมูล)
tehtmi

@tehtmi ถูกต้องสิ่งนี้ล้มเหลว
Skidsdev

ดูการแก้ไขของฉันควรใช้งานได้ตอนนี้
Neil A.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.