Шукаю таємні послідовності обміну


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
Вашим балом буде кількість байтів у вашому коді, при цьому менше байтів буде кращим. - Чому тоді це не позначений код-гольф ?
Містер Xcoder

@ Mr.Xcoder я забув. Не читайте занадто багато в цих речах;)
Wheat Wizard

Отже, код повинен виводити послідовність певної довжини (визначена чи ні?) Або n-й елемент послідовності?
Мертвий Поссум

@DeadPossum n- й термін .
Містер Xcoder

@WheatWizard здогадуюсь, що я шукав десь ще, але монітор. My bad
Dead Possum

Відповіді:



5

Python 3 , 62 байти, A017016 ( тріщини )

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

Спробуйте в Інтернеті!


Я намагався зробити це максимально
затуманеним

1
@officialaimm Я зробив це спеціально. Я хочу зробити це заплутаним. Мене не дуже цікавить гольф, тому що Python не виграє конкурс кодового гольфу з обфускації: p
Містер Xcoder


До речі, це було намічене рішення?
повністюлюдський

@totallyhuman Так, це було рішення, на яке було сказано.
Містер Xcoder

4

Japt , 13 байт ( Cracked )

Є (принаймні) ще одне рішення, якщо хтось інший захоче прийняти його на удар.

p#A000012uCnG

Спробуйте в Інтернеті
A000012


Пояснення

#Слідом за символом у Japt надає нам код цього персонажа, тобто #A=65, до якого решта числа потім додається, даючи нам 65000012або 65000290.

uє модульним методом (він відрізняється %тим, що завжди поверне додатне число). Метод віднімає число він застосовується, з числа переданого йому. і є константами Japt для 11 і 15 відповідно. Отже, дає нам . Зараз у нас є і . Метод підвищує число він застосовується до (в даному випадку , тобто, неявно, вхідний ціле число ) в ступінь числа переданого йому, що дає нам 2 остаточних формул і .

nCGCnG4

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



1
@officialaimm: Правильно, добре виконано.
Shaggy

Оскільки я не знаю Джапта, я вважав, що сила, яку потрібно підвищувати, була (sum_of_numbers_in_oeis(excluding 'A') + 1)%4. : D
officialaimm

1
@officialaimm: Я люблю бачити, як грабіжники розбивають проблеми на мовах, яких вони не знають :) Я насправді розмістив це з надією, що хтось буде незнайомий з Japt, хто зламає це.
Кудлатий

A020338 також може працювати, якщо дозволено введення рядків (1-індексований).
Бубон

4

MATL , 30 29 байт ( тріщини )

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

A077430

Спробуйте в Інтернеті!

-1 байт завдяки @Sanchises


1
Має бути виправлено зараз
Cinaski

1
Лише підказка: ви можете замінити `3` Iна 1 байт.
Санчіз

@Sanchises Дякую! Не знав I, ініціалізовано до 3
Cinaski

2
Ви повинні перевірити таблицю 3. Поряд з l(один) та O(нуль), ви майже ніколи не повинні використовувати пробіл у своїх програмах MATL. У відповідній примітці ознайомтеся і з Таблицею 7, яка містить багато корисних заздалегідь визначених констант (хоча будьте обережні, наприклад, 4X2Z%що це скорочення 1Z%)
Sanchises



3

Python 2, 43 байти, A000079 ( тріщини )

Спробуйте в Інтернеті

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


@TheLethalCoder Ну .. Це підходить, але я вибрав не той. Також я змінив ваш коментар, і він більше не підходить
Dead Possum

5
Ви змінили його після публікації? Трохи несправедливо.
TheLethalCoder

@TheLethalCoder Я зробив це для захисту від цієї хибнопозитивної послідовності: C
Dead Possum

1
Я не знаю про редагування запису, але з правил в ОП: " Якщо грабіжнику вдасться визначити, яка ваша послідовність (або інша послідовність, яка відповідає критеріям), ви відповідаєте, це зламається ", просто FYI.
алекс

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

Спробуйте в Інтернеті!



@Lynn Що це подарувало? Перша послідовність?
TheLethalCoder

3
Ви берете номер OEIS % 2- тому програма може буквально робити лише дві речі , залежно від результату цього: один для 0і один для 1. Тому я поставив непарне число на його місце, і виклик начебто зламався.
Лінн

@Lynn Ах, припустимо, не думав, що обдумує цю частину.
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)

Так, божевільна арифметика!


Гм, A004526, дає n=12виглядати правильно, але результат буде відхилений на один індекс - я тріщив з помилкою чи потрапив на дуже розумну червону оселедець?
Джонатан Аллан

Ні; ви неправильно трактували A004526, що чітко стверджує a(n) = floor(n/2); перелічена послідовність починається з 0. Це, однак, призначене рішення.
пліпер

О так, компенсація - правильно (колись), дякую! Добре тріснув тоді.
Джонатан Аллан

1

Малий розмову, 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.перед ^кодом повернення вставте в код.


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 1to 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), щоб змусити його дійсно працювати. Ще я думаю, що деякі здогадки та спроби могли зламати це.


Я спробував кілька послідовностей, і вони зазвичай давали поділ на нульові помилки, негативні помилки експонента або просто здавались, що вони працюють назавжди. Якщо чесно кажучи, Хаскелл злякав мене , просто не можу, мовляв, обернути голову, пробув занадто довго в процедурному порядку.

Якщо ви просто намагаєтеся, є додаткова проблема, що навіть рішення дає помилку "негативного індексу", коли дається 0. Це добре, тому що воно починається тільки з 1! Починаючи з, 1слід також усунути деякі помилки "поділ на нуль". Мене дивують приклади, що працюють назавжди. Можливо, перетворення індексу створює в цих випадках дуже великі значення ...
Крістіан Сіверс


0

Python 3.6, 114 байтів, тріснув

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) повертає n-е значення послідовності для n> = 0.

random.choices(s,k)Нове в Python 3.6, він повертає kелементи, вибрані sіз заміни.


Ви відчуваєте, як шифрування / хешування.
pppery

@ppperry - якщо це суперечить правилам, я його видалю.
RootTwo


0

Чіп , 67 байт, розтрісканий Іміном Ронгом

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

A000012 . Трохи нахабний, так.

Спробуйте в Інтернеті!

Використовує байти для вводу-виводу, тому мені було приємно і створив обгортку з баші / пітонії.


Чергова послідовність - A060843 . Спробуйте в Інтернеті для введення інформації 1..4.

Yimin Rong згорбився праворуч, така коротка програма Chip може підрахувати лише дуже прості речі. Оригінальна послідовність - це все, а альтернативна послідовність - це зайняті номери бобра, з яких відомо лише 4.

Ці цифри, 1, 6, 21, 107просто, жорстко кодуються для входів 1..4.

Одна цікава річ щодо використання чіпа для цього завдання - це те, що цифри 0- 9це не числа, а логічні елементи. Зокрема, 0- 7це вісім біт, що адресують голову стека, 8і 9є перемикачами для читання та запису. Це зробило це трохи цікавішим та набагато більш заплутаним.

Потенційна віддача полягає лише в тому, що A- Dз'являються, це означає, що у нас є лише 4 біти для індексації послідовності. Це означало, що може бути не більше 16 різних значень. Насправді лише A- Cнасправді використовуються для альтернативної послідовності, даючи не більше 8 різних значень.

Для всіх, хто може вас зацікавити, тут є той самий код, позбавлений елементарних та непотрібних елементів:

.

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

Щоб виключити очевидне, ви не намагаєтесь прокрастися в порожній послідовності, наприклад, A290000 ? Технічно, оскільки ваш код нічого не повертає для введення нуля, ця послідовність відповідала б!

Ха, є хоча б одне значення в іншій послідовності :) Також, я повинен сказати, я спроектував це як 1-індексований, оскільки саме так індексується OEIS.
Фларкс

(Не маю на увазі, я знайшов контрприклади. Мій код все ще є 1-індексом.)
Фларкс

Тож я ще дещо заглядав у це, і це робити - нічого не винна пітона. Він не давав жодного виводу за нуль, тому мій код ніколи не виконувався. Я це виправив у посиланні TIO зараз. (Дайте біт-довжину підлогу в 1 байт).
Фларкс

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.