ค้นหาลำดับการสลับลับ


19

นี่คือท้าทายด้ายโจรสามารถพบได้ที่นี่

งานของคุณคือการเขียนรหัสบางอย่างที่ส่งออกลำดับ OEIS และมีชื่อของลำดับในรหัส ( A______) และส่งออกลำดับที่สองแยกเมื่อชื่อของลำดับในรหัสเปลี่ยนเป็นชื่อของลำดับที่สอง

นี่คือตัวอย่างใน Haskell ว่างานสำหรับA000217และA000290

f x|last"A000217"=='0'=x^2|1>0=sum[1..x]

ลองออนไลน์!

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

อินพุตเอาต์พุต

ถ่ายจากที่นี่

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

คุณต้องสนับสนุนค่าทั้งหมดที่มีให้ในไฟล์ OEIS b สำหรับลำดับนั้นหมายเลขใด ๆ ที่ไม่ได้อยู่ในไฟล์ b ไม่จำเป็นต้องได้รับการสนับสนุน

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

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


1
คะแนนของคุณจะเป็นจำนวนไบต์ในรหัสของคุณโดยน้อยกว่าจะดีกว่า - ทำไมรหัสนี้ไม่มีแท็กกอล์ฟ ?
Mr. Xcoder

@ Mr.Xcoder ฉันลืม อย่าอ่านสิ่งเหล่านี้มากเกินไป))
ตัวช่วยสร้างข้าวสาลี

ดังนั้นรหัสควรเรียงลำดับผลลัพธ์ของความยาว (กำหนดหรือไม่?) หรือองค์ประกอบลำดับที่ n
Possum ที่ตายแล้ว

@DeadPossum nระยะ TH
Mr. Xcoder

@WeatWizard เดาว่าฉันกำลังมองหาที่อื่น แต่มอนิเตอร์ My bad
Dead Possum

คำตอบ:



5

Python 3 , 62 ไบต์, A017016 ( แตก )

n=int(input())
print(sum(1for i in"A017016"if i>"0")*-~n//-~n)

ลองออนไลน์!


ฉันพยายามทำให้มันงงงวยที่สุดเท่าที่จะทำได้ ...
นาย Xcoder

1
@officialaimm ฉันทำตามที่ตั้งใจไว้ ฉันต้องการทำให้สิ่งนี้สับสน ฉันไม่สนใจเรื่องการเล่นกอล์ฟเพราะ Python จะไม่ชนะการประกวด code-golf obfuscation: p
Mr. Xcoder


โดยวิธีการที่เป็นทางออกที่ตั้งใจ?
สิ้นเชิงมนุษย์

@tallyallyhuman ใช่มันเป็นวิธีแก้ปัญหา
Mr. Xcoder

4

Japt 13 ไบต์ ( แตก )

มีอีกวิธีหนึ่ง (อย่างน้อย) ถ้าใครอยากจะแทงมัน

p#A000012uCnG

ลองออนไลน์
A000012


คำอธิบาย

#ตามตัวละครใน Japt จะช่วยให้เรา charcode ของตัวละครว่าดังนั้น#A=65ซึ่งส่วนที่เหลือของจำนวนนั้นได้รับการผนวกเข้ากับให้เราหรือ 65000012 เป็นวิธีการโมดูโล (มันแตกต่างจากในที่มันจะกลับมาเป็นจำนวนบวก) วิธีการลบหมายเลขที่มันถูกนำไปใช้จากหมายเลขที่ผ่านไป และเป็นค่าคงที่ของ Japt สำหรับ 11 & 15 ตามลำดับ ดังนั้นจะช่วยให้เรา ขณะนี้เรามีและ วิธีการยกตัวเลขที่มันนำไปใช้ (ในกรณีนี้คือว่าโดยปริยายจำนวนเต็มป้อนข้อมูล) เพื่ออำนาจของจำนวนที่ผ่านมามันทำให้เรามี 2 สูตรสุดท้ายของและ65000290

u%

nCGCnG4

65000012%4=065000290%4=2pUU**0U**2



1
@officialaimm: ถูกต้องทำได้ดีมาก
ขนดก

ตั้งแต่ผมไม่ทราบว่า Japt (sum_of_numbers_in_oeis(excluding 'A') + 1)%4ผมสันนิษฐานว่าอำนาจที่จะได้รับการเลี้ยงดูที่ถูก : D
เป็นทางการเมื่อ

1
@officialaimm: ฉันชอบเห็นโจรทำลายความท้าทายในภาษาที่พวกเขาไม่รู้ :) จริง ๆ แล้วฉันโพสต์สิ่งนี้ด้วยความหวังว่ามันจะเป็นคนที่ไม่คุ้นเคยกับ Japt ที่จะแตกมัน
Shaggy

A020338อาจทำงานได้หากอนุญาตให้ป้อนสตริง (ทำดัชนี 1 รายการ)
Bubbler

4

MATL , 30 29 ไบต์ ( แตก )

A077430I\2-|Gw^1Mwx*10&Ylk1+&

A077430

ลองออนไลน์!

-1 ไบต์ขอบคุณ @Sanchises


1
ควรได้รับการแก้ไขแล้ว
Cinaski

1
เป็นเพียงคำใบ้: คุณสามารถแทนที่ `3 'โดยI1 ไบต์
Sanchises

@Sanchises ขอบคุณ! ไม่ทราบว่าIถูกเตรียมใช้งาน
ตั้งแต่

2
คุณควรตรวจสอบตารางที่ 3 พร้อมกับl(หนึ่ง) และO(ศูนย์) คุณแทบไม่ควรใช้ช่องว่างในโปรแกรม MATL ของคุณ ในบันทึกที่เกี่ยวข้องตรวจสอบตารางที่ 7 เช่นกันซึ่งมีค่าคงที่ที่กำหนดไว้ล่วงหน้าที่มีประโยชน์มากมาย ( แต่ระวังเช่นที่4X2Z%มีชวเลข1Z%)
Sanchises

Cracked

3

C #, 28 ไบต์ ( แตก )

n=>n*n*("A000290"[6]<49?1:n)

ทำงานร่วมกับA000290

คนง่าย ๆ ที่จะเริ่มต้นสิ่งนี้

ลองออนไลน์!


ยังไม่สามารถถอดรหัสได้> _ <
Mr. Xcoder

@ Mr.Xcoder สามารถตอนนี้ :)
TheLethalCoder

1
ถูกจับ (แม้ว่าจะไม่ได้แตกจริงๆ !)
ขนดก

@Shaggy ฉันแค่อยากได้ลูกบอลกลิ้ง: P
TheLethalCoder

3

Python 2, 43 ไบต์, A000079 ( แคร็ก )

ลองออนไลน์

lambda n:((sum(map(ord,'A000079'))*2)%8)**n


@TheLethalCoder อืม .. มันพอดี แต่ก็ไม่ใช่อันที่ฉันเลือก นอกจากนี้ฉันได้ทำการแก้ไขก่อนที่ความคิดเห็นของคุณและมันไม่เหมาะกับอีกต่อไป
Dead Possum

5
คุณเปลี่ยนมันหลังจากโพสต์? ค่อนข้างไม่ยุติธรรม
TheLethalCoder

@TheLethalCoder ฉันทำเพื่อปกป้องลำดับเท็จบวกนี้: C
Dead Possum

1
ฉันไม่รู้เกี่ยวกับการแก้ไขรายการ แต่จากกฎใน OP " ถ้าผู้ขโมยจัดการเพื่อกำหนดลำดับของคุณคืออะไร (หรือลำดับอื่นที่ตรงกับเกณฑ์) คุณตอบว่าแตก " เพียง FYI
alleks

3

C #, 75 ไบต์, ( แคร็ก )

n=>{int r=1,e=3-0xA000244%2;for(;n>0;e*=e){r*=(n%2>0?e:1);n>>=1;}return r;}

A000244

ลองออนไลน์!



@ ลินน์อะไรที่ให้ไป? ลำดับแรก?
TheLethalCoder

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

@Lynn Ah สมมติว่าไม่คิดงงงวยส่วนนั้น
TheLethalCoder

2

Python 2 , 53 ไบต์, A000012 [แตก]

lambda x:len(`x**(sum(map(int,'A000012'[1:]))==22)`) 

ลองออนไลน์!

ลำดับถัดไปคือ A055642 (ความยาวของตัวเลขในจำนวนทศนิยม) ซึ่งตัวเลขจะประเมินด้วยตัวเองเนื่องจากผลรวมของตัวเลขใน OEIS เท่ากับ 22; len (... ) จึงคำนวณตามความยาวจริงของหมายเลขอินพุตสำหรับ 'A055642' สำหรับลำดับ A000012 (หรืออื่น ๆ ที่ไม่ใช่ A055642 len จะเท่ากับหนึ่งเสมอเนื่องจากตัวเลขที่ประเมินจะเป็น '1'



1

Python 3, 65 ไบต์, A000027, ถอดรหัส

a=lambda a,n=((int("A000027",11)-0x103519a)%100%30+1)/2:a//(14-n)

เลขคณิตของ Crazy Yay!


อืม, A004526, ให้n=12ซึ่งมีลักษณะที่ถูกต้อง แต่ผลลัพธ์จะถูกปิดโดยดัชนีหนึ่ง - ฉันไม่แตกด้วยข้อผิดพลาดหรือลดลงสำหรับปลาเฮอริ่งแดงที่ฉลาดมาก?
Jonathan Allan

ทั้ง; คุณได้ตีความ A004526 ซึ่งชัดเจนระบุa(n) = floor(n/2); ลำดับที่ระบุไว้เริ่มต้นด้วย 0 นั่นคือทางออกที่ตั้งใจไว้
pppery

โอ้ใช่ออฟเซ็ต - ขวา (ต๊าว) ขอบคุณ! แตกกันแล้ว
Jonathan Allan

1

Smalltalk, 148 ไบต์ปลอดภัย!

|x o|x:=(16rA018253*0.00861-1445345)floor. o:=OrderedCollection new. 1 to:x/2 do:[:i|x\\i=0 ifTrue:[o add:i]].o add:x.^o at:stdin nextLine asInteger

A018253

รับจำนวนเต็มเป็นอินพุตลำดับเป็นพื้นฐาน 1

ลำดับที่สองคือตั้งใจA133020 ในเขียนขึ้นสำหรับA018253คือการเชื่อมโยงไปยังรายการของรายการสำหรับลำดับที่เกี่ยวข้องกับตัวหารของตัวเลข ในรายการที่A133020อยู่ภายใต้การหารของสี่เหลี่ยม: 100² หากคุณต้องการดูลำดับทั้งหมดให้แทรกTranscript show: o printString; cr.ก่อน^คำสั่งreturn ในรหัส


1

Haskell, 226 ไบต์ปลอดภัย!

ไม่แน่ใจว่าฉลาดหรือน่าเกลียดบางทีทั้งคู่ ...

o n=read.pure.(!!n)$"A001906"
m::Integral a=>[a->a->a]
m=[const,(+),(-),(*),div,(^)]++(flip<$>m)
l=o 1:o 3-o 1:zipWith(m!!(o 6+o 3-o 2))(tail l)l
f=(l!!).((m!!(o 4+o 5+o 6-2*o 1-o 2))$sum[1|n<-[1..6],odd(o n)]).((m!!o 6)$o 3)

ดังนั้นตอนนี้สิ่งนี้คำนวณA001906แต่มันควรจะสามารถสร้างลำดับได้มากมาย

ลองออนไลน์!


ทางออก: A131078

หากสงสัยว่านี่ยากเกินไปหรือไม่มีใครลอง?

o 1เพื่อo 6เป็นตัวเลขของหมายเลขชุดmเป็นรายการของการดำเนินการ เป็นรายการที่ไม่มีที่สิ้นสุดกำหนดซ้ำกับค่านิยมสองคนแรกมาจากจำนวนชุดและคนที่เหลือคำนวณจากก่อนหน้านี้สองโดยใช้การดำเนินการแก้ไขจากl mในกรณีของ A001906 สามารถนิยามได้ง่ายขึ้น

l=0:1:zipWith(flip(+))(tail l)l

(flip(+))คือ (โดยปกติ) เหมือนกับ(+)และเราได้คำจำกัดความที่รู้จักกันดี (แต่ไม่สั้นที่สุด) ของตัวเลขฟีโบนักชี โครงการนี้อาจเรียกซ้ำ A001906 คำนวณโดยตรง mแต่ที่ต้องดำเนินการซับซ้อนมากขึ้นกว่าผู้ที่อยู่ใน อีกตัวอย่างหนึ่ง: ใช้ค่าเริ่มต้น1และ2และการดำเนินงาน(*)ให้ชุดA000301 มันคำนวณโดยรหัสของเราเมื่อหมายเลขซีรีส์ถูกแทนที่ด้วย?103206มันถูกคำนวณโดยรหัสของเราเมื่อจำนวนชุดจะถูกแทนที่ด้วย

ในที่สุดฟังก์ชั่นfดัชนีลงในรายการlแต่หลังจากการเปลี่ยนแปลงบางอย่างของการป้อนข้อมูล สำหรับ A001906 ส่วนตรงกลางจะลดลงเพื่อ(*)2ให้เราได้รับหมายเลขฟีโบนักชีในตำแหน่งที่เท่ากัน ส่วนที่เหมาะสมจะกลายเป็นflip const 1ซึ่งเป็นฟังก์ชั่นตัวตนและไม่รบกวนต่อไป

สำหรับการแก้ปัญหาA131078ค่าเริ่มต้นของการlมี1และ0และการดำเนินการflip constซึ่งจะช่วยให้เป็นl 1,0,1,0,...ส่วนตรงกลางของfจะกลายเป็นผลในการ(flip div 4) 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,...นี่ดูเหมือนคำตอบที่ดี แต่แล้วฉันเห็นว่า A131078 เริ่มต้นn=1ดังนั้นฉันจึงเพิ่มส่วนที่ถูกต้องfซึ่งนี่คือflip(-)1การลบ

ความคิดของฉันคือทำให้มันสับสนเล็กน้อยโดยการใช้mและการจัดทำดัชนีด้วยตัวเลขจากตัวเลขซีรีส์จากนั้นมันก็ยิ่งสับสน (คำศัพท์ที่ซับซ้อน) เพื่อให้มันใช้งานได้ (บางทีฉันอาจจะค้นหาทางเลือกอื่น ๆ และจากนั้นก็ยิ่งยุ่งเหยิงมากขึ้น (ด้านขวาf) เพื่อให้มันใช้งานได้จริง ถึงกระนั้นฉันคิดว่ามีบางคนคาดเดาและพยายามที่จะทำลายมัน


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

หากคุณเพียงแค่พยายามที่มีปัญหาพิเศษว่าแม้การแก้ปัญหาให้ข้อผิดพลาด "ดัชนีเชิงลบ" 0เมื่อได้รับ ไม่เป็นไรเพราะมันเริ่มที่1! เริ่มต้นที่1ควรลบข้อผิดพลาด "การหารด้วยศูนย์" ด้วย ฉันประหลาดใจด้วยตัวอย่างที่ใช้งานได้ตลอดไป บางทีการเปลี่ยนแปลงของดัชนีอาจสร้างมูลค่าที่สูงมากในกรณีเหล่านี้ ...
Christian Sievers


0

Python 3.6, 114 bytes, cracked

from random import*
g=lambda n:eval(''.join(Random("A005843").choices('n8-9+17n#8*+26%n1 32-3+4-545*-#6*7',k=34)))

A005843

g(n) returns the n-th value of the sequence for n >= 0.

random.choices(s,k) is new in Python 3.6, it returns k items selected from s with replacement.


Feel very much like encryption/hashing.
pppery

@ppperry - หากผิดกฎฉันจะลบออก
RootTwo


0

ชิปขนาด 67 ไบต์แตกโดย Yimin Rong

2D5B#{*Cm49!}E-7
(A000012d#,zkmsh
b-\6/e2)[1Zv^~^S
33a#kcf3g88taz1@

A000012 หน้าด้านเล็กน้อยใช่

ลองออนไลน์!

ใช้จำนวนไบต์สำหรับ i / o ดังนั้นฉันจึงเป็นคนดีและสร้างเสื้อคลุม bashy / pythony


ลำดับสำรองเป็นA060843 ลองมันออนไลน์1..4สำหรับปัจจัยการผลิต

Yimin Rong โหนกถูกต้องโปรแกรมชิพสั้นเช่นนี้สามารถคำนวณสิ่งที่ง่ายมาก ลำดับดั้งเดิมนั้นเป็นของทั้งหมดและลำดับที่สองคือหมายเลขบีเวอร์ที่ไม่ว่างซึ่งมีเพียง 4 ตัวเท่านั้นที่ทราบ

ตัวเลขเหล่านี้เป็นเพียงการกำหนดค่าตายตัวสำหรับปัจจัยการผลิต1, 6, 21, 107 สิ่งหนึ่งที่น่าสนใจเกี่ยวกับการใช้ชิปสำหรับความท้าทายนี้คือการที่ตัวเลข- ไม่ได้เป็นตัวเลข แต่องค์ประกอบตรรกะ โดยเฉพาะ- เป็นบิตแปดบิตที่อยู่ที่หัวของสแต็กและและเป็นสลับการอ่านและเขียน ทำให้สิ่งนี้น่าสนใจยิ่งขึ้นและทำให้สับสนมากขึ้น1..4

090789

ของแถมที่อาจเกิดขึ้นก็คือA-Dปรากฏขึ้นหมายความว่าเรามีเพียง 4 บิตสำหรับการจัดทำดัชนีตามลำดับ นี่หมายความว่าอาจมีค่าได้สูงสุด 16 ค่า ในความเป็นจริงมีเพียงA- Cใช้สำหรับลำดับสำรองโดยให้ค่าที่แตกต่างกันมากที่สุด 8 ค่า

สำหรับผู้ที่อาจสนใจนี่คือรหัสเดียวกันปล้นของ no-ops และองค์ประกอบที่ไม่ได้ใช้:

.

   B  *C 49!
 A000012d ,z  s
b-\6/e   1Zv-~^S
`3a`-cf3g`8taz1

Just to exclude the obvious, you're not trying to sneak in an empty sequence, e.g. A290000? Technically, because your code returns nothing for input of zero, this sequence would match!

Ha, there is at least one value in the other sequence :) Also, I should say, I designed this to be 1-indexed, since that's how OEIS is indexed.
Phlarx

(Nevermind, I found counterexamples. My code is still 1-indexed.)
Phlarx

ดังนั้นฉันจึงดูเพิ่มอีกและการไม่ทำอะไรเลยเป็นความผิดของงูใหญ่ มันไม่ได้ให้ผลลัพธ์ใด ๆ เป็นศูนย์ดังนั้นรหัสของฉันจึงไม่เคยทำงาน ฉันได้แก้ไขแล้วในลิงก์ TIO ตอนนี้ (ให้ความยาวบิตหนึ่งชั้นที่ 1 ไบต์)
Phlarx

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