Tìm kiếm chuỗi trao đổi bí mật


19

Đây là một thử thách , chủ đề của tên cướp có thể được tìm thấy ở đây .

Nhiệm vụ của bạn là viết một số mã tạo ra chuỗi OEIS và chứa tên của chuỗi trong mã ( A______) và xuất ra một chuỗi riêng thứ hai khi tên của chuỗi trong mã được thay đổi thành tên của chuỗi thứ hai.

Đây là một ví dụ trong Haskell hoạt động cho A000217A000290 .

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

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

Sau đó, bạn sẽ tiết lộ một trong hai chuỗi và mã giữ bí mật chuỗi thứ hai. Những tên cướp sẽ cố gắng tìm ra chuỗi ẩn là gì. Nếu một tên cướp quản lý để xác định chuỗi của bạn là gì (hoặc một chuỗi khác phù hợp với tiêu chí), bạn trả lời bị bẻ khóa. Nếu không ai làm như vậy trong một tuần câu trả lời của bạn được đăng, bạn có thể đánh dấu câu trả lời của mình là An toàn và tiết lộ giải pháp dự định để xác minh. Câu trả lời an toàn không thể bị bẻ khóa.

Đầu ra đầu vào

Lấy từ đây

Mã của bạn có thể là một hàm hoặc chương trình hoàn chỉnh có n thông qua một phương thức nhập chuẩn và xuất ra số hạng thứ n của chuỗi như được lập chỉ mục bởi chỉ mục được cung cấp trên trang OEIS.

Bạn phải hỗ trợ tất cả các giá trị được cung cấp trong các tệp b OEIS cho chuỗi đó, bất kỳ số nào không có trong các tệp b không cần phải được hỗ trợ.

Chấm điểm

Điểm của bạn sẽ là số byte trong mã của bạn, với ít byte sẽ tốt hơn.


1
Điểm của bạn sẽ là số byte trong mã của bạn, với ít byte sẽ tốt hơn. - Tại sao không phải là mã golf được gắn thẻ này , sau đó?
Ông Xcoder

@ Mr.Xcoder tôi quên mất. Đừng đọc những thứ này quá nhiều;)
Wheat Wizard

Vì vậy, mã nên xuất trình tự của một số độ dài (xác định hay không?) Hoặc phần tử thứ n của chuỗi?
Dead Possum

@DeadPossum lần thứ n .
Ông Xcoder

@WheatWizard đoán tôi đang tìm một nơi khác, nhưng theo dõi.
Cái

Câu trả lời:



5

Python 3 , 62 byte, A017016 ( Cracked )

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

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


Tôi đã cố gắng làm cho nó bị xáo trộn hết mức có thể ...
Ông Xcoder

1
@officialaimm Tôi đã làm điều đó trên mục đích. Tôi muốn làm cho điều này bị xáo trộn. Tôi không thực sự quan tâm đến việc chơi gôn, bởi vì Python sẽ không giành chiến thắng trong một cuộc thi đánh gôn mã: p
Ông Xcoder


Nhân tiện, đó có phải là giải pháp dự định không?
hoàn toàn phi thường

@totallyhuman Vâng, đó là giải pháp được bảo vệ.
Ông Xcoder

4

Japt , 13 byte ( Cracked )

Có (ít nhất) một giải pháp khác, nếu có ai muốn đâm vào nó.

p#A000012uCnG

Dùng thử trực tuyến
A000012


Giải trình

#theo sau là một nhân vật trong Japt cung cấp cho chúng ta mã số của nhân vật đó, do đó #A=65, phần còn lại của số đó sẽ được thêm vào, cho chúng ta 65000012hoặc 65000290.

ulà phương pháp modulo (nó khác với %ở chỗ nó sẽ luôn trả về một số dương).

Các nphương pháp trừ số nó được áp dụng cho từ số truyền cho nó. CGlà hằng số Japt cho 11 & 15, tương ứng. Vì vậy, CnGcho chúng tôi 4.

Bây giờ chúng ta có 65000012%4=065000290%4=2. Cácp phương pháp làm tăng số lượng nó được áp dụng để (trong trường hợp này có nghĩa là, mặc nhiên, số nguyên đầu vào U) với sức mạnh của các số được truyền cho nó, cho chúng tôi 2 công thức cuối cùng của U**0U**2.



1
@officialaimm: Đúng, được thực hiện độc đáo.
Xù xì

Vì tôi không biết Japt, tôi đã cho rằng sức mạnh được tăng lên là (sum_of_numbers_in_oeis(excluding 'A') + 1)%4. : D
chính thức tuyên bố

1
@officialaimm: Tôi thích nhìn thấy những tên cướp bẻ khóa những ngôn ngữ mà chúng không biết :) Tôi thực sự đã đăng bài này với hy vọng rằng đó sẽ là một người không quen thuộc với Japt, người sẽ bẻ khóa nó.
Xù xì

A020338 cũng có thể hoạt động nếu đầu vào chuỗi được cho phép (1 chỉ mục).
Bong bóng

4

MATL , 30 29 byte (Đã bẻ khóa )

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

A077430

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

-1 byte nhờ @Sanchises


1
Nên sửa ngay bây giờ
Cinaski

1
Chỉ cần một gợi ý: bạn có thể thay thế `3` bằng I1 byte.
Sanchise

@Sanchise Cảm ơn! Không biết Iđược khởi tạo thành 3
Cinaski

2
Bạn nên xem Bảng 3. Cùng với l(một) và O(không), bạn hầu như không bao giờ phải sử dụng khoảng trắng trong các chương trình MATL của mình. Trên một lưu ý liên quan, hãy xem Bảng 7, trong đó có nhiều hằng số được xác định trước hữu ích (mặc dù hãy cẩn thận, ví dụ như 4X2Z%có một tốc ký 1Z%)
Sanchises



3

Python 2, 43 byte, A000079 ( Cracked )

Dùng thử trực tuyến

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


@TheLethalCoder Vâng .. Nó phù hợp, nhưng nó không phải là cái tôi đã chọn. Ngoài ra tôi đã chỉnh sửa trước bình luận của bạn và nó không còn phù hợp nữa
Dead Possum

5
Bạn đã thay đổi nó sau khi đăng? Một chút không công bằng.
TheLethalCoder

@TheLethalCoder Tôi đã làm điều đó để bảo vệ khỏi chuỗi dương tính giả này: C
Dead Possum

1
Tôi không biết về việc chỉnh sửa mục nhập, nhưng từ các quy tắc trong OP, " Nếu một tên cướp quản lý để xác định chuỗi của bạn là gì (hoặc một chuỗi khác phù hợp với tiêu chí) bạn trả lời bị bẻ khóa ", chỉ là FYI.
alleks

3

C #, 75 byte, (Đã bẻ khóa )

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

A000244

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



@Lynn Cái gì đã cho đi? Trình tự đầu tiên?
TheLethalCoder

3
Bạn đang lấy số OEIS % 2- vì vậy chương trình chỉ có thể thực hiện hai việc , tùy thuộc vào kết quả của điều đó: một cho 0và một cho 1. Vì vậy, tôi đặt một số lẻ vào vị trí của nó, và thử thách đã tự phá vỡ.
Lynn

@Lynn Ah giả sử, không nghĩ rằng làm xáo trộn phần đó.
TheLethalCoder

2

Python 2 , 53 byte, A000012 [đã bẻ khóa]

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

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

Chuỗi tiếp theo là A055642 (độ dài các chữ số trong một số thập phân). Theo đó, con số tự ước lượng, vì tổng các chữ số trong OEIS bằng 22; do đó, len (...) tính theo chiều dài thực tế của số đầu vào cho 'A055642'. Đối với các chuỗi A000012 (hoặc bất kỳ chuỗi nào khác ngoài A055642. Len sẽ luôn bằng một, vì số bị đánh giá sẽ là '1'.



1

Python 3, 65 byte, A000027, đã bị bẻ khóa

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

Yay điên số học!


Ừm, A004526, cho n=12cái nào có vẻ đúng, nhưng kết quả sẽ bị tắt bởi một chỉ số - tôi đã bẻ khóa với lỗi hay rơi vào một cá trích đỏ rất thông minh?
Jonathan Allan

Cũng không; bạn đã giải thích sai A004526, trong đó nêu rõ a(n) = floor(n/2); trình tự được liệt kê bắt đầu bằng 0. Tuy nhiên, đó là giải pháp dự định.
pppery

Ồ vâng, bù đắp - đúng (whew), cảm ơn! Thôi thì nứt rồi.
Jonathan Allan

1

Smalltalk, 148 byte, an toàn!

|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

Lấy một số nguyên làm đầu vào, chuỗi là 1 dựa trên.

Chuỗi thứ hai dự định là A133020 . Trong phần viết cho A018253 là một liên kết đến một danh sách các mục cho các chuỗi liên quan đến các ước của số . Trong danh sách đó, A133020 nằm dưới các ước số của hình vuông: 100² . Nếu bạn muốn xem toàn bộ chuỗi, chèn Transcript show: o printString; cr.trước ^câu lệnh return trong mã.


1

Haskell, 226 byte, an toàn!

Không chắc là thông minh hay xấu xí, có thể cả ...

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)

Vì vậy, bây giờ điều này tính A001906 , nhưng nó sẽ có thể tạo ra rất nhiều chuỗi.

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


Dung dịch: A131078

Tự hỏi nếu điều này là quá khó khăn hoặc không ai cố gắng?

o 1đến o 6là các chữ số của số series, mlà một danh sách các hoạt động. llà một danh sách vô hạn được xác định đệ quy với hai giá trị đầu tiên được lấy từ số sê-ri và các giá trị còn lại được tính từ hai giá trị trước bằng cách sử dụng thao tác cố định từ m. Trong trường hợp A001906, định nghĩa có thể được đơn giản hóa thành

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

(flip(+))là (thường) giống như (+), và chúng ta có một định nghĩa nổi tiếng (nhưng không phải là ngắn nhất) về các số Fibonacci. Sơ đồ đệ quy này có thể tính toán trực tiếp A001906, nhưng cần một thao tác phức tạp hơn các thao tác trong m. Một ví dụ khác: sử dụng giá trị bắt đầu 12và các hoạt động (*)cung cấp cho các loạt A000301 . Nó được tính bằng mã của chúng tôi khi số sê-ri được thay thế bằng ?103206.

Cuối cùng, hàm flập chỉ mục vào danh sách l, nhưng chỉ sau một số biến đổi của đầu vào. Đối với A001906, phần giữa giảm xuống (*)2, do đó chúng ta chỉ nhận được các số Fibonacci tại các vị trí chẵn. Phần bên phải trở thànhflip const 1 , đó là chức năng nhận dạng và không can thiệp thêm.

Đối với các giải pháp A131078, các giá trị khởi điểm l10, và các hoạt động là flip const, cho phép lđược 1,0,1,0,.... Phần giữa ftrở thành (flip div 4), dẫn đến 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,.... Đây trông giống như một câu trả lời hay, nhưng sau đó tôi thấy rằng A131078 bắt đầu n=1, vì vậy tôi đã thêm phần đúng của fnó, ở đây làflip(-)1 để trừ đi một phần.

Ý tưởng của tôi là làm cho nó hơi bị xáo trộn bằng cách sử dụng mvà lập chỉ mục vào nó với các chữ số từ các số sê-ri, sau đó nó trở nên khó hiểu hơn (các thuật ngữ phức tạp) để làm cho nó hoạt động (có thể tôi đã không tìm kiếm đủ lâu để thay thế); và sau đó nó trở nên khó hiểu hơn (phần bên phải f) để làm cho nó thực sự hoạt động. Tuy nhiên, tôi nghĩ rằng một số đoán và cố gắng có thể đã phá vỡ nó.


Tôi đã thử một vài chuỗi và chúng thường phân chia theo số không, lỗi số mũ âm hoặc dường như chạy mãi mãi. Thành thật mà nói, Haskell khiến tôi hoảng sợ, dường như tôi không thể quấn đầu xung quanh nó, tôi đã dành quá nhiều thời gian cho thủ tục.

Nếu bạn chỉ đang thử, có một vấn đề nữa là ngay cả giải pháp cũng đưa ra lỗi "chỉ số âm" khi đưa ra 0. Điều đó là tốt bởi vì nó chỉ bắt đầu lúc 1! Bắt đầu từ 1cũng nên loại bỏ một số lỗi "chia cho số không". Tôi ngạc nhiên bởi các ví dụ chạy mãi mãi. Có lẽ việc chuyển đổi chỉ số tạo ra những giá trị rất lớn trong những trường hợp này ...
Christian Sievers


0

Python 3.6, 114 byte, bị bẻ khóa

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) trả về giá trị thứ n của chuỗi cho n> = 0.

random.choices(s,k)là phiên bản mới trong Python 3.6, nó trả về kcác mục được chọn từ sthay thế.


Cảm thấy rất giống như mã hóa / băm.
pppery

@ppperry - nếu điều đó trái với quy tắc, tôi sẽ xóa nó.
RootTwo


0

Chip , 67 byte, bị bẻ khóa bởi Yimin Rong

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

A000012 . Một chút táo tợn, vâng.

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

Sử dụng byte cho i / o, vì vậy tôi đã rất hay và xây dựng một trình bao bọc bashy / pythony.


Trình tự thay thế là A060843 . Hãy thử trực tuyến cho đầu vào 1..4.

Yimin Rong linh cảm, một chương trình Chip ngắn như vậy chỉ có thể tính toán những điều rất đơn giản. Chuỗi ban đầu là tất cả của một người, và chuỗi thay thế là các số hải ly bận rộn, trong đó chỉ có 4 được biết.

Những con số này, 1, 6, 21, 107đơn giản là được mã hóa cứng cho các đầu vào 1..4.

Một điều thú vị khi sử dụng Chip cho thử thách này là các chữ số 0- 9không phải là số, mà là các yếu tố logic. Cụ thể, 0- 7là tám bit giải quyết phần đầu của ngăn xếp 8và chỉ có một tặng cho tiềm năng -9 là các nút đọc và ghi. Điều đó làm cho điều này thú vị hơn một chút và khó hiểu hơn nhiều.

ADxuất hiện, có nghĩa là chúng ta chỉ có 4 bit để lập chỉ mục chuỗi. Điều này có nghĩa là có thể có tối đa 16 giá trị khác nhau. Trong thực tế, chỉ A- Cthực sự được sử dụng cho chuỗi thay thế, đưa ra tối đa 8 giá trị khác nhau.

Đối với bất kỳ ai có thể quan tâm, đây là cùng một mã, loại bỏ các phần tử không sử dụng và không được sử dụng:

.

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

Chỉ để loại trừ điều hiển nhiên, bạn không cố gắng lẻn vào một chuỗi trống, ví dụ A290000 ? Về mặt kỹ thuật, bởi vì mã của bạn không trả về gì cho đầu vào bằng 0, chuỗi này sẽ khớp!

Ha, có ít nhất một giá trị trong chuỗi khác :) Ngoài ra, tôi nên nói rằng, tôi đã thiết kế giá trị này thành 1 chỉ mục, vì đó là cách OEIS được lập chỉ mục.
Phlarx

(Nevermind, tôi đã tìm thấy các mẫu phản ứng. Mã của tôi vẫn là 1 chỉ mục.)
Phlarx

Vì vậy, tôi đã nghiên cứu thêm về nó và việc không làm gì là lỗi của trăn. Nó không đưa ra bất kỳ đầu ra nào cho số không, vì vậy mã của tôi không bao giờ chạy. Tôi đã sửa nó trong liên kết TIO ngay bây giờ. (Đã cho độ dài bit một tầng là 1 byte).
Phlarx

1
Nứt .
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.