หายไปในการแปล


15

นี่เป็นหากคุณไม่คุ้นเคยกับรูปแบบให้คลิกแท็กเพื่อไปที่วิกิ จะไม่มีเธรดโจรสำหรับคำถามนี้

ตำรวจ

งานของคุณในฐานะตำรวจคือการเลือกสองซีเควนซ์จากOnline Encyclopedia of Integer Sequencesและเขียนโปรแกรมที่ใช้องค์ประกอบที่ n ของลำดับหนึ่งเป็นอินพุตและเอาต์พุตอิลิเมนต์ nth ของลำดับที่สอง จากนั้นคุณจะได้คำตอบรวมถึงรหัสและตัดการเรียงลำดับที่เลือกไว้ โจรจะพยายามที่จะหาลำดับที่คุณเลือกและหากมีการบริหารจัดการเพื่อหาลำดับที่คุณมีอยู่ในใจหรือบางส่วนลำดับอื่น ๆ สำหรับโปรแกรมที่คุณต้องทำเครื่องหมายคำตอบของคุณเป็นCracked หากโจรแจ้งคุณว่ามีรอยแตกที่คุณเชื่อว่าไม่ถูกต้องคุณอาจแสดงหลักฐานว่าไม่ใช่รอยแตก มิฉะนั้นคุณต้องทำเครื่องหมาย

ตามคำตอบปกติที่ไม่ได้ทำการแยกเป็นเวลา 7 วันจะมีสิทธิ์ทำเครื่องหมายว่าปลอดภัย ตำรวจอาจทำเครื่องหมายคำตอบว่าปลอดภัยโดยเปิดเผยลำดับที่มีอยู่ในใจ เมื่อปลอดภัยแล้วคำตอบอาจไม่แตกอีกต่อไป

เป้าหมายคือลดจำนวนไบต์ของโปรแกรมให้เหลือน้อยที่สุดในขณะที่ยังไม่ได้แยกออก

ตัวอย่าง

รหัสไพ ธ อนต่อไปนี้แปลองค์ประกอบที่ n ของA000290 (หมายเลขสแควร์) เป็นA000217 (หมายเลขรูปสามเหลี่ยม):

lambda x:sum(range(0,int(x**.5+1)))

ข้อกำหนดและข้อกำหนด

  • หากคุณเลือกลำดับที่ไม่ได้รับการพิสูจน์ว่ามีขอบเขตคุณต้องส่งออกคำศัพท์ทั้งหมดที่อาจมีอยู่ไม่ใช่เฉพาะรายการที่แสดงอยู่ในหน้า OEIS

  • เป็นข้อยกเว้นสำหรับภาษากฎก่อนหน้านี้ที่ไม่มีจำนวนเต็มความแม่นยำไม่ จำกัด ไม่จำเป็นต้องส่งออกหรือใส่หมายเลขที่อยู่นอกช่วง

  • ขนาดของลำดับการป้อนข้อมูลของคุณจะต้องไม่ได้รับการพิสูจน์แล้วว่ามีขนาดเล็กกว่าลำดับเอาต์พุต

  • ลำดับการป้อนข้อมูลของคุณจะต้องไม่มีองค์ประกอบการทำซ้ำใด ๆ (มิฉะนั้นงานจะเป็นไปไม่ได้สวยมาก)

  • OEIS รวมดัชนีในหน้าของพวกเขา (หมายเลขแรกหลังส่วนหัว "OFFSET") โดยค่าเริ่มต้นนี่คือออฟเซ็ตของคุณสำหรับ n (n เท่ากับดัชนีสำหรับองค์ประกอบแรกในลำดับ) หากคุณเลือกดัชนีอื่นคุณต้องระบุใน คำตอบของคุณ.

  • หากคุณเลือกออฟเซ็ตที่แตกต่างจากที่ระบุไว้ใน OEIS คุณจะต้องแมปองค์ประกอบทั้งหมดในลำดับการป้อนข้อมูลของคุณกับองค์ประกอบที่เกี่ยวข้องในลำดับผลลัพธ์ของคุณ

  • หากโปรแกรมของคุณได้รับอินพุตที่ไม่ได้อยู่ในลำดับอินพุตมันอาจทำอะไรก็ได้ตามที่ต้องการ (พฤติกรรมที่ไม่ได้กำหนด) อย่างไรก็ตามอาจเป็นไปได้ว่าคุณจะยังคงเอาท์พุทเป็นจำนวนเต็ม

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

โจร

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

โจรไม่ควรกังวลมากนักเกี่ยวกับการตรวจสอบว่ามีสองลำดับเฉพาะเป็นวิธีการแก้ปัญหาหนึ่งควรโพสต์โซลูชั่นหากมันตรงกับรายการทั้งหมดใน OEIS หากนั่นไม่ใช่ลำดับที่ตำรวจมีในใจตำรวจอาจเสนอหลักฐานว่ามันไม่ถูกต้องหรือทำเครื่องหมายว่าแตกได้หากไม่พบ


3
โจรจะมั่นใจได้อย่างไรว่าคำตอบของเขานั้นถูกต้องสำหรับอินพุตทั้งหมด พวกเขาต้องพิสูจน์มันทางคณิตศาสตร์หรือไม่?
Leo

1
@Leo ผู้ขโมยควรโพสต์โซลูชันหากตรงกับรายการทั้งหมดใน OEIS หากไม่ใช่ลำดับที่ตำรวจมีในใจพวกเขาอาจเสนอหลักฐานว่ามันไม่ถูกต้องหรือทำเครื่องหมายว่าเป็นรอยร้าวหากพวกเขาไม่พบ ฉันจะอัปเดตเธรดของโจร
โพสต์ร็อคการ์ฟฮันเตอร์

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

1
ฉันมีความรู้สึกว่าวิธีแก้ปัญหาที่ดีจริงๆสามารถแตกได้ในแบบใบ้เช่นoeis.org/A000004 -> oeis.org/A000012
Wolfram

2
@ เดนนิสฉันคิดว่านั่นเป็นจุดที่ดี เป็นคนเกียจคร้านแม้ว่าจะไม่มีทางที่ผู้คนจะได้รับตัวแทนจากการค้นหารอยร้าวเนื่องจากดูเหมือนว่าค่อนข้างยุ่งยากสำหรับความท้าทายนี้
0

คำตอบ:


6

เยลลี่ขนาด 14 ไบต์ (แคร็กโดย @ Wolfolf)

+66%444µ111<µ¡

ลองออนไลน์!

มันควรจะค่อนข้างชัดเจนว่าสิ่งนี้ทำอะไร ในความเป็นจริงเพื่อประโยชน์ของผู้ใช้ที่ไม่ใช่เจลลี่ฉันจะอธิบายด้วย:

คำอธิบาย

+66%444µ111<µ¡
       µ    µ¡  Run the transformation
+66%444           "add 66, then modulo 444"
        111<    once if 111 is less than the input, zero times otherwise 

คำถามคือทำไมมันทำเช่นนี้?

ร้าว

ลำดับในคำถามเป็นA201647และA201647 พวกมัน จำกัด และแตกต่างกันใน 2 องค์ประกอบสุดท้ายเท่านั้น:

  • 3, 5, 7, 9, 11, 15, 21, 165, 693
  • 3, 5, 7, 9, 11, 15, 21, 231, 315

ดังนั้นถ้าอินพุตต่ำฉันปล่อยมันไว้เหมือนเดิมและฉันก็ใส่ฟังก์ชั่นเข้ากับการแปลงของสองอันสุดท้าย


@Weateatizard: ถ้าคุณคิดว่าคุณจะได้รับประโยชน์จากมันไปได้เลย แต่คุณจะต้องเร็วราวกับว่ามีคนอื่นทดสอบด้วยการเปิดใช้งานแคชพวกเขาจะจบลงด้วยการทำให้แคชสกปรกสำหรับทุกคนหลังจากพวกเขา

@WheatWizard ปิดใช้งานแคชเอาต์พุตทำให้แน่ใจว่าคุณได้รับผลลัพธ์ใหม่จากเซิร์ฟเวอร์ แต่ผลลัพธ์ใหม่นั้นจะยังคงได้รับแคช
เดนนิส

1
@WheatWizard หรือเพิ่มตัวแบ่งแคชเมื่อคุณทดสอบ: สตริงที่เลือกแบบสุ่มเป็นส่วนหนึ่งของความคิดเห็นหรือช่องใส่ที่ไม่ได้ใช้
เดนนิส

+1 คำตอบนี้ง่ายมากในธรรมชาติ แต่ก็ยังคงท้าทายกับโจร
Kritixi Lithos


3

เยลลี่ , 7 ไบต์ (แคร็กโดย @JonathanAllan)

ÆFḅÆdÆẸ

ลองออนไลน์!

มันทำอะไร

ÆFḅÆdÆẸ  Main link. Argument: n

ÆF       Factor n into prime-exponent pairs.
   Æd    Compute σ, the number of divisors of n.
  ḅ      Convert each pair from base σ to integer.
     ÆẸ  Yield the integer whose prime signature (infinite sequence of all prime
         exponents, including zeroes, in order) is equal to the result.

3
อาจจะดีแมปที่ถูกต้องอื่น ๆ แต่สิ่งหนึ่งที่ผมคิดว่าคุณมีอยู่ในใจเป็นจำนวนเฉพาะ - A000040ไป2 ^ (2p + 1), นายก p - A100626
Jonathan Allan

@JanathanAllan ฉันมาที่ A000040 -> A100626 เช่นกันถึงแม้ว่าคุณจะใช้นิ้วมือช้าๆของฉัน
Ahemone

นอกจากนี้เรายังจะเห็นว่ามันจะค้างไว้: เมื่อเข้าเป็นนายกp, ÆFอัตราผลตอบแทน(p,1)และÆdอัตราผลตอบแทน2เพื่อให้เราได้รับ2p+1ซึ่งหมายความว่าÆẸจะให้ผลผลิตนายกแรกขึ้นสู่อำนาจของผลนั้น2 2^(2p+1)
Jonathan Allan

@JanathanAllan ใช่นั่นคือสิ่งที่ฉันต้องการ
เดนนิส

2

Python 3, 256 ไบต์ ( แคร็ก! )

from math import*
def p(i,m):
 r=0;d=floor(log(i))
 for y in range(d):r+=(pow(16,d-y-1)%(8*y+m))/(8*y+m)
 o=-1;y=d
 while r!=o:o=r;r+=pow(16,d-y-1)/(8*y+m);y+=1
 return r
def q(n):r=4*p(n,1)-2*p(n,4)-p(n,5)-p(n,6);return floor((1-(-r%1)if r<0 else r%1)*16)

ลองออนไลน์!

ขออภัยถ้ารหัสนี้ดูน่ากลัวฉันคิดว่านี่เป็น Python Golf ตัวแรกของฉัน การแคสต์ใน Python ทำให้โค้ดง่ายขึ้น


ฉันคิดว่าฟังก์ชั่นที่เป็นปัญหาคือqอะไร?
โพสต์ Rock Garf Hunter

ตัวแปรkดูเหมือนว่าจะไม่ได้ใช้ดังนั้นคุณสามารถบันทึกไบต์โดยการลบมัน
โพสต์ Rock Garf Hunter

มันเป็นA001671เพื่อA062964 ?
โพสต์ Rock Garf Hunter

@WeatWizard ใช่ขอบคุณและใช่
betseg

2

กำลังประมวลผล , 184 ไบต์, ปลอดภัย!

int x(int y){int b=TRIANGLES-MITER;for(int i=OVERLAY/BURN;i>#fffffe;b*=(int)pow(y,(MOVE-HAND+0.)/(int)sqrt(red(color(-1<<16))/(int)log(color(0)*color(-1)))),i-=QUAD/DARKEST);return b;}

ฟังก์ชันที่รับค่าเป็น int และส่งกลับค่า int ตราบใดที่หมายเลขอินพุทอยู่ในintช่วงของโปรแกรมก็จะทำงานได้ดี

สิ่งนี้ไม่ช้าอ่านไม่ออก โชคดี!


ฉันประหลาดใจที่การส่งนี้ใช้เวลานาน โอ้อย่างน้อยมันก็ปลอดภัยอย่างแรกเลย :)

A000578ถึงA000290

กล่าวอีกนัยหนึ่ง: ลูกบาศก์กำลังสอง

คำอธิบาย

ขณะตอบรับไม่มีสตริง (หรือตัวเลข) ติดอยู่ฉันค้นพบรายการค่าคงที่กำลังประมวลผลที่แสดงถึง ints ตัวอย่างเช่นมีค่าCORNER 0รายการเต็มรูปแบบที่สามารถพบได้ที่นี่ เพื่อหาค่าของค่าคงที่คุณสามารถทำได้printมัน

เมื่อใช้สิ่งนี้ฉันตัดสินใจที่จะสลับตัวเลขจำนวนหนึ่งด้วยค่าผสมของค่าคงที่เหล่านี้เพื่อทำให้งงงวย ดังนั้นนี่คือสิ่งที่คุณจะได้รับเมื่อคุณแทนที่ค่าคงที่ด้วยค่า int ที่เกี่ยวข้อง

int x(int y){int b=9-8;for(int i=512/8192;i>#fffffe;b*=(int)pow(y,(13-12+0.)/(int)sqrt(red(color(-1<<16))/(int)log(color(0)*color(-1)))),i-=16/16);return b;}

แม้ตอนนี้รหัสที่ชัดเจนแบบเต็มยังไม่เปิดเผย สีที่เหลืออยู่ ในการประมวลผลตัวแปรสีมีค่า int เช่น white ( #ffffff) is -1, #fffffeis -2, #fffffdis -3และอื่น ๆ สามารถพบได้โดยprintการใช้สี ดังนั้นลดความซับซ้อนของสี

int x(int y){int b=9-8;for(int i=512/8192;i>-2;b*=(int)pow(y,(13-12+0.)/(int)sqrt(red(color(-1<<16))/(int)log(-16777216*-1))),i-=16/16);return b;}

เราอยู่ที่นั่นครึ่งทางแล้ว :) เพื่อให้เข้าใจถึงคุณค่าเราต้องทำให้การแสดงออกเชิงตัวเลขง่ายขึ้น

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/(int)log(16777216))),i-=1);return b;}

ชัดเจนมากขึ้น! ทีนี้ลองลดความซับซ้อนของลอการิทึม

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/(int)16.6...)),i-=1);return b;}


int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/(int)sqrt(red(color(-65536))/16)),i-=1);return b;}

เกือบแล้ว! ตอนนี้เราต้องคิด(int)sqrt(red(color(-65536))/16))คำนี้ออกมา เป็นสีแดงเพื่อให้color(-65536) rgb(255, 0, 0)ตอนนี้red()ฟังก์ชั่นคืนค่าขององค์ประกอบสีแดงในการโต้แย้ง (ซึ่งเป็นสี) ดังนั้นสีแดงมีสีแดงเท่าใด? 255คำตอบคือ กับที่เราได้รับ

(int)sqrt(255/16))
(int)sqrt(15)
(int)3.8...
3

การแทนที่สิ่งนี้ในผลลัพธ์ของโปรแกรมเป็น:

int x(int y){int b=1;for(int i=0;i>-2;b*=(int)pow(y,(1.)/3),i-=1);return b;}

มันเสร็จแล้ว!

int x(int y){                        // y is the cube
  int b=1;                           // variable that holds the final result
  for(int i=0;                       // for-loop that
          i>-2;                      // loops twice
          b*=(int)pow(y,(1.)/3),     // multiply b by the cube root of y
          i-=1);                     // decrement the looping variable
  return b;                          // finally return b
}

เมื่อต้องการหาผลรวมมันจะคืนค่าสแควร์ (ทำโดยการคูณสองครั้งใน for-loop) ของรูทคิวบ์ของหมายเลขอินพุต


0

Mathematica (หรืออะไรก็ตาม) -  แคร็ก!

f[x_] := Quotient[ 366403414911466530559405368378193383110620062 - 
    755296348522256690003418238667147075159564695 x + 
    525778437135781349270885523650096958873079916 x^2 - 
    156594194215500250033652167655133583167162556 x^3 + 
    20861131421245483787723229627506507062999392 x^4 - 
    1181515772235154077024719095229309394979146 x^5 + 
    29382627265060088525632055454760915985604 x^6 - 
    308672970015057482559939241399297150364 x^7 + 
    1087516675449597417990589334580403666 x^8 - 
    312989984559486345089577524231879 x^9, 
  265451130886621254401938908479744271974400 ]

ฉันรู้ว่า Mathematica ไม่ใช่ซอฟต์แวร์ฟรี แต่ฟังก์ชั่นนี้ไม่สำคัญที่จะย้ายไปยังภาษาที่คุณชื่นชอบที่คุณต้องการเรียกใช้ระบบจะคำนวณค่าของพหุนามดีกรี -9 ที่ได้รับการประเมินที่อินพุทจำนวนเต็ม ของค่านั้นและตัวเลข 42 หลักในบรรทัดสุดท้าย ยกตัวอย่างเช่นการประเมินf[100]-3024847237


2
A003173เพื่อA165892 ไม่ใช่ปัญหาการเขียนโปรแกรมจริงๆ);
Leo

2
อย่างไรก็ตามเนื่องจาก mathematica ไม่ฟรีฉันจึงเขียนสิ่งนี้เพื่อเปลี่ยนเป็นฟังก์ชั่นหลาม
Leo

@Leo: เยี่ยมมาก! ฟังก์ชั่นมีไข่อีสเตอร์ด้วย คุณหาเจอไหม? : D
Greg Martin

เอ่อ ... ไม่ :(
ลีโอ

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