Мини-вызовы с ограниченным доступом

33

Нить грабителя

Ваша задача как полицейских состоит в том, чтобы выбрать три вещи:

  • Язык программирования

  • Последовательность OEIS

  • Набор байтов

Затем вы должны тайно написать программу на этом языке, которая вычисляет n-ю последовательность терминов, используя только байты из набора. Вы раскроете три части информации, чтобы грабители могли попытаться выяснить программу.

Ответы будут оцениваться по количеству байтов в наборе байтов, причем большее количество баллов будет хорошим. Взломанные ответы имеют автоматический балл 0. Если ваш ответ не был взломан через одну неделю, вы можете раскрыть предполагаемую программу и пометить ваш ответ как «безопасный».

Ответы должны быть способны вычислять каждый термин в b-файлах последовательности, но не обязаны вычислять какие-либо термины после.

Последовательности могут быть проиндексированы как 1, так и 0 как для полицейских, так и для грабителей.

Вот скрипт Python, который проверяет, соответствует ли ваш код заданному набору байтов.

Мастер пшеницы
источник
1
Чем ниже балл, тем лучше? Или выше? Итак, в сущности, мы пытаемся найти ограниченный набор символов, который затруднит для кого-то еще создание программы на выбранном языке после того, как мы уже разработали решение?
BradC
1
Нужно ли нам использовать все байты в нашем наборе? Я бы предположил, что да, но это должно быть указано в вызове.
Лохматый
1
@ Шэгги, как правило, нет, вы можете включить других для красной сельди, но грабители могут использовать все
Стивен
1
Могут ли грабители использовать один и тот же байт дважды или более?
г-н Xcoder
2
@Azulflame b-файлы - это файлы, которые связаны с каждой последовательностью, к которой можно получить доступ, заменив ее на Aa bи добавив a .txt. Например, oeis.org/b4.txt получит доступ к b-файлам для этой последовательности.
Пшеничный волшебник

Ответы:

11

Haskell , A209229 , ( треснувший )

11 символов (включая перевод строки):

s<=[ ]
how!

Выводит True / False как функцию индикатора для степеней 2:

1 => True
2 => True
3 => False
4 => True
5 => False
6 => False
7 => False
8 => True
9 => False
...

Входные данные являются положительными целыми числами.

XNOR
источник
0 дает Ложь?
H.PWiz
@ H.PWiz Мой код не работает для 0, ваш кряк может делать все, что вы хотите для него.
xnor
Трещины! Очень умный ~
Линн
@ Линн Отлично сделано!
xnor
5

Python 2 , A000045 ( треснувший )

ml:= input(as,forge)

он содержит пробелы и символ новой строки.
Попробуйте онлайн!
Предполагаемое решение

прут
источник
1
+1 Я удивлен , это не использовать +вообще
г Xcoder
2
Поздравляю с 10k между прочим :)
Аднан
Трещины
Аднан
@ Mr.Xcoder Не очень хорошо знаешь Python, но plusсработает?
JAD
@JarkoDubbeldam Нет, sumбы
г -
5

Haskell, A000045 ( треснувший )

Я принял решение, думаю, мне нравится tбольше, чем s.

Итак, давайте вместо этого будем использовать эти 30 байтов (включая символ новой строки):

abcdeFgh|jklmnopqrtTuvwxyz
=()

Обратите внимание, что общее описание вызова требует, чтобы

Ответы должны быть способны вычислять каждый член в b-файлах последовательности [...].

В этом случае b-файл поднимается до 2000-го числа, что намного больше того, что можно вычислить с помощью Int.

Кристиан Сиверс
источник
Трещины !
Линн
4

Октава, A000290 , Трещины !

Последовательность представляет собой квадратные числа: 0, 1, 4, 9, 16, 25, 36, 49 ... (так что вам не нужно проверять ссылку).

'()/@^_
Стьюи Гриффин
источник
Трещины!
Конор О'Брайен
Это было действительно намеченное решение :)
Стьюи Гриффин
4

Haskell, A000045 ( треснувший )

Все любят числа Фибоначчи, мне нравится Хаскелл ...

Я тщательно отобрал 30 байт для вас: строчных букв , за исключением f, iи tвы получите прописные буквы Fи Tи символ трубы |вместо этого, и три символа =(), и символ новой строки. Вот они снова:

abcdeFgh|jklmnopqrsTuvwxyz
=()
Кристиан Сиверс
источник
4

Haskell, A034262 , 43 байта, трещины

!"#%',.=?ABCDEFGHIJKLMNOPQRSTUVWXYZ[]_{|}~

Вычисляет a(n) = n³ + n.

Laikoni
источник
Не могу получить b-файл сейчас. Возвращение Intдостаточно хорошо?
Кристиан Сиверс
1
Трещины ?
Кристиан Сиверс
@ChristianSievers Да, это именно мое решение.
Лайкони
4

Haskell, A009056 ( треснувший )

Еще один простой, теперь снова с достаточным количеством букв, чтобы он выглядел как обычный Haskell, и, может быть, вы удивите меня, найдя решение, совершенно отличное от моего.

Последовательность Numbers> = 3, и кодировка состоит из этих 30 байтов:

{[abcdefghijklmnopqr uvwxyz]}.

Крэк имеет несколько приятных приемов. Я просто думал об этом:

head . flip drop [ floor pi .. ]

Кристиан Сиверс
источник
1
Трещины .
Ними
3

C (C99), A000005 , 25 байт #, треснул!

Это байты для полной задачи, принимает n в качестве аргумента командной строки и выводит ответ на стандартный вывод (пробел включен в byountount).

<=>,;!"()*%+acdfhimnoprt 
dj0wns
источник
хорошо, мне было интересно, лол. в качестве аргумента командной строки?
Конор О'Брайен
Да, я
проясню
1
Трещины! это было весело: D
Конор О'Брайен
3

Унарный , A002275 , 1 байт

Набор байтов:

0

Я должен был по крайней мере попробовать это: 3

(Я не думаю, что это будет особенно трудно увидеть, поскольку каждая команда на языке доступна)

sonar235
источник
1
Почему бы не включить все байты, чтобы максимизировать ваш счет? Вы набрали наименьшее возможное количество, когда не было бы никакой разницы включать все байты.
Пшеничный волшебник
Я думал, что мы собираемся на низкую оценку (извините, я новичок здесь).
sonar235
1
Треснувший
Синий
@muddyfish Разрешен ли ввод как символ для бред?
sonar235
@ sonar235 В общем, мы разрешаем ввод в качестве символа для мозгового удара. Хотя значения здесь превышают 255, я не думаю, что ответ, использующий их, может быть действительным.
Пшеничный волшебник
3

JavaScript (ES6), 17 байт, A000290 ( Cracked )

Опять же, это простая квадратная последовательность a (n) = n 2 .

Набор байтов:

$()=>CI`abelotv{}
Arnauld
источник
3

Hexagony , A057077 , 77 байтов

Периодическая последовательность 1, 1, -1, -1. Как список:

a(0) = 1
a(1) = 1
a(2) = -1
a(3) = -1
a(4) = 1
a(5) = 1
a(6) = -1
   ...

Набор символов (отредактированный), который включает символ новой строки и пробел:

!% & (), 0123456789;? @ ABCDEFGHIJKLMOPQRSTUVWXYZ ^ АБВГДЕЖЗИКЛМНОПРСТУФХЧШЭЮЯ [] #. 

Попробуйте онлайн!

Аднан
источник
По какой причине вы изменили набор символов?
Poke
1
@Poke, очевидно, чем выше число байтов, тем лучше, поэтому я просто добавил кучу бесполезных команд.
Аднан
3

Haskell, A000045 ( треснувший )

Он взломан, и я не буду запускать новую версию, но если вы хотите играть больше: это возможно без y, и возможно быть эффективным.


Я прошу прощения за ведение вас в неправильных направлениях, давая g. Давайте сделаем то же самое без!

Вот 29 оставшихся байтов (включая перевод строки):

abcdeFh|jklmnopqrtTuvwxyz
=()

Опять же, помните, что Intэтого будет недостаточно для вычисления 2000-го числа Фибоначчи, которое необходимо, потому что оно находится в b-файле.

Кристиан Сиверс
источник
Трещины
Ними
3

Haskell, A000045 ( треснувший )

Это своего рода (как объявлено) не новая версия, но совершенно другая. (Правильно?)

Я все еще надеюсь, что смогу переоткрыть мое милое маленькое наблюдение.

На этот раз вас просят реализовать последовательность Фибоначчи, используя набор символов размером 17, который (насколько я знаю) содержит только один два ненужных символа:

eilnt=(,).[ ]_:0!

Обратите внимание, что нет новой строки (но не стесняйтесь показывать версию, которая имеет их для удобства чтения) и помните, что вы должны быть в состоянии вычислить 2000-е число Фибоначчи.

Кристиан Сиверс
источник
Трещины .
Ними
3

Cubix, A000027 (SAFE) 17 баллов

!&')-/0;@Oiru.NSQ

Мое решение:

!O!;i)!/u&!!r-)0'u;;!@

смотреть онлайн здесь

Первоначально я делал это без, .NSQно я решил, что могу добавить их безопасно.

Объяснение:

Эта последовательность просто "Положительные целые числа". Тем не менее, Cubix имеет три команды ввода i, которые читаются в виде одного символа (нажатие, -1если ввод пуст), Aкоторые читаются в остальной части ввода как символы (нажатие a -1на вершину стека), и I, который читает следующий номер с входа (нажатие, 0если нет совпадения). Естественно, я предоставил только то, iчто читается цифрами как их значение ascii. э-э-о. Кроме того, -1это обычный маркер для конца ввода, в сочетании с которым ?я избавился ?, заставляя меня использовать !(пропустите следующую инструкцию, если TOS не ноль) для потока управления. Наконец, я подумал, что мне нужно &объединить цифры для печати сO (который выводит вершину стека как число), но теперь я понимаю, что в этом тоже не было необходимости!

Изначально другая часть задачи заключалась в том, чтобы не иметь .неактивного персонажа, но вы можете использовать пары !вместо, если вы осторожны:

    ! O
    ! ;
i ) ! / u & ! !
r - ) 0 ' u ; ;
    ! @
    . .

i) : чтение ввода, приращение.

!/ : если вершина стека равна нулю (конец ввода), поверните налево

left:: ;O.@выскакивает вершина стека, выводится как число, остановка.

иначе:

u'0: вставьте код символа 0в начало стека

)-r: увеличивать, вычитать и вращать

;; : поп вершина стека дважды

u& : объединить цифры

!!: чистый нулевой эффект, теперь мы находимся i)снова.

Giuseppe
источник
У Cubix есть несколько символов noop, верно? Почему бы вам не добавить их, чтобы увеличить свой счет? Или является частью проблемы, что нет noops.
Пшеничный волшебник
@WheatWizard Я решил быть милосердным и добавить, .но это может быть сделано без него.
Джузеппе
3

Seed , A005408 (Нечетные числа) - Сейф

Вот немного более сложный. Вы можете использовать любые символы, действительные в Seed:

[0-9 ]

Вы не должны быть в состоянии перебить это в течение недели, если у вас нет монстра компьютера. Удачи! Это можно взломать.

намек

Это программа Befunge-98, используемая в моем решении: 9&2*1-.@(ее 9можно удалить, но мое решение просто имеет

Решение

8 47142938850356537668025719950342285215695875470457212766920093958965599014291682211474803930206233718243166021324700185443274842742744297183042397910454208210130742260519105651032450664856693714718759816232968955289663444878636053035645231246428917992493766505872029989544065894418166685284738859999912471659057565000392419689361271972485444731284404987238803115210428572945108908191097214978382112218242627719651728712577306652405452922782307249485947045215982784790396555726144526602778473387279897334709142853151393812930171163300904436548870603006549005515709074682843356844201220668045057407146751793470423217099467145255174198241606814578351260769359571053755888106818197239116973006365593563235361647743411341624822052103816968153274122434280200888824954875622811325064255818154979564925710534165572852442761249176778416688044630942040966271963723430245979221181930857841829694362184653939393940015797332978459794253176110314873994228261888801228999293570329618551223457182420746927212801550646743152754821640064626761542582557138452651970009253770914346130172884305622027370793496993281847017017643506435562229916984107083951938286577012273222191422054315198157936674247934699496471202544270325061352014830137178245082445717253260177560449757186762445707057028987371278573629077370632470496186218574320801798046510846708620502139560277546345198686675095078255875594169064796673074708822106659920187882062247609587560174781170641367430722951002242213604709887062481149928551745163110045572994991844223216663621203042075294195007458339984527333125093390189721042315604498435269143549420166732177200370228527273606218617171975362431824163269672003982537382982066136613799403024924018145511099557720492305303748099327810811511080314262364010281851651151072957475365629128068033597559560186625877942054704386175359499573139930378099420149452745731809033737756051947913924265484582800618244473333957173960222243311738522875022546610298627492222587971756897328087719407454153248557203886421828643453889090192355970705084245312184441674098515659253482621260617211786550204852895652236768886852209506535523414991099331857674826373947830587028494510697603296607361093480842935154672353288419699354739650168309017848485131553416956405911683526896232046773861961911767319373432460217755874481607587604361758089936007730253450733375831228127106295259261723611771334468553746160739548375950046831923765023329346333968732796413192682936767133122325481273354810124729664400173367781325488656859581438769940474229394692089519981810909719628263357284973442177568041416363386891516725592952892168077523560584005586276794967492051823290615767599202657060820223928678900774601616908031321346819422162123048834532926372862962159255934240435694566497798544870186550219886342379298214007368081326725550763589917206162393892085506551547475259270513853987294911388226039365971184089828739349642347312302559286882065147953715607221387657413593069535573044067517274676745306396611760657091792151803798859781616126637075577936361782593546481811651450365118155866449850474140044293772144065341051900055416408240857348697564252386403719942197789892382627153382011984996644288495699209129097948405810551134169739499539470610790009272281731894550593600643079188663110695127017324336488487580799309995227054576681630676222848231145106058050452439356753552872060820230589152143268436210090733908507724084889788244157692417246691477400856716677564609725979550100138132944851304473466485128295568194188600539248624248078558656162635444219199062786468487219220160009464328883337821175254405764395407405891483810757405446047244460754827113527540703326714751461178900155717130399854358953609995319006890674085682111514072508440632941090209366005504352890092326935445829213294943731517698438648298921337375443947066950275955144209037675013663600062205168551851984361951824731229113379464426979717688372371011461890139087487634586087688796134318950140718824105959727161482389914414206768064990410615468858520426399188835467970981786227122743162945627167772066100574532803061925537235491026486409948728571706557098859331941260622260924660292578136091523126589085799981416326395824628987154802653126685882440760385315869346960183809644486238810912663304360284449610976505715001267334297285036791711464142665122000857666018757370925847113798258537503747803972255591351740843663253694303946089997282812556281486820325652814785261116697261899511762129550421005941055852897451832731304151488058522478260009347144486599715629242208891126238083949281490804191584238425634093683587199278186505945727829025071885767559828670803412582690901456978557379916793144695491189633486065077294485660840922713748873840986104486221528464294334436081663106336911265802650605150347413103936140565054608396116572669757269475369570465915381045895991937087068526458273755454602799814909213983801968791431574508976448235055061998715636460946550584682626461010298101802277643570201189324102499951196290880892383380284543173390448406975616650185808619832614403133944687275834716343817926764699295672501869876060896683204343897481630037607159476461359111190545646447421653872016775582115425356868533678655969328210255235050133718364831289991244684695035034122861927276046255405376531096051541299607470934463981741370397268760811035606321455156217990078359217247117349544774085111287345436916077577032709684005131011429476229617901273007027774182864475737502587896225475248267937497254066190335088823904767397814233350286976811901982274477445433872253983823904938249655089770642137858608313524715533520654523880832056453080193644871440738737277389718589793074725139142291918837706550037934799585495183374639955887618135803388399608755212147742199481865453122900714456703147150994585431640652462593333773031385396586933380738103697887063571042512186708015948688088011290197524699274772775288900864690592106393483764109837848793374117655194139018455509931621247697015323332300969105814058088442693320033876473960017819576425062784644138417943454576404265382986995583045527928832
TehPers
источник
Как вы это создали?
Кристофер
@ 2EZ4RTZ Уж больно, и с источником Python в качестве ссылки. Это может быть, вероятно, много в гольф, хотя.
TehPers
2

cQuents , A000027 , Cracked


 !"#%&'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Это верно! Вы получаете все ASCII! Подожди ... нет $... что $опять в cQuents? О, да, индекс встроен. Ну, удачи: /

Предполагаемое решение:

#|A:A

Попробуйте онлайн!

Стивен
источник
Трещины ?
Аднан
@ Adnan Да, это работает, я думаю, мне не следовало открывать это так много, как я: PI не мог придумать других способов сделать это, хорошая работа. Добавлено намеченное решение.
Стивен
2

Рубин , A000004 , 5 байт, трещины

Просто возиться, чтобы начать. Должно быть легко для любого, кто знаком с Ruby. Это низкий балл, но что угодно.

/np.$

Трещины, непреднамеренный подвиг

Трещины (предполагаемый ответ с использованием nфлага)

Значение чернил
источник
Трещины ?
Аднан
@ Adnan Эх, я приму это. Должен был потребоваться nфлаг (по этой причине он находится в последовательности байтов и должен быть $.равен 1)
Value Ink
2

Python 3, A007504 ( Cracked )

Это байтсеть, включая перевод строки:

bfuwo)nm1h[=(t+;0a
sig%pr, le:]

Мой код не обеспечивает бесконечного вывода, но может вычислить весь b-список.

Azulflame
источник
1
Добро пожаловать в PPCG!
Захари
1
Трещины
Джонатан Аллан
1
Лом, который я использовал .:(
Джонатан Аллан
1
Я исправил трещину.
Джонатан Аллан
1
... и перешел на Python 3.
Джонатан Аллан
2

R, A000290 , ( треснувший )

Набор байтов:

()%cfinotu
JAD
источник
нет c, а все остальное для function? Это ужасно Я знаю, как это сделать, за исключением чтения во входных данных ...
Джузеппе
@ Джузеппе woops, должен aбыл быть c. извиняюсь.
JAD
1
Это то, что я получаю за то, что делал это дерьмо вручную ...
JAD
Не стоит беспокоиться; это достаточно сложно!
Джузеппе
треснул
Джузеппе
2

cQuents , A000217 , Cracked

Byteset:

$:=1;
\-

Обратите внимание, что здесь используется функция, для которой я еще не выдвинул документацию, поэтому я добавлю ее сегодня вечером, если вы подождете до тех пор. (Или вы можете просмотреть мой исходный код ... повеселиться). Документация выдвинута. Было бы на байт меньше, если бы недавнее исправление было на TIO.

Предполагаемое решение:

=1-1:--\1$ ;$

Попробуйте онлайн!

Стивен
источник
2

JavaScript (ES6), 13 10 байт, A000045 , взломан

Это должно быть легко.

Это последовательность Фибоначчи: F (n) = F (n-1) + F (n-2) с F (0) = 0 и F (1) = 1.

Набор байтов:

$()-:<=>?[]_~

Редактировать:

Это может быть сделано даже со следующими 10 байтами:

$()-:=>?_~
Ra8
источник
Трещины!
Критиси Литос
1
Это не [code-golf]: «Ответы будут оцениваться по количеству байтов в наборе байтов с хорошим счетом». Чем больше байтов, тем лучше.
LarsW
@LarsW, с другой стороны, больше байтов также облегчает взлом :)
JAD
2

Befunge , A000142 , 29 байт (с трещинами )

Byte Set: @.$_ ^*:\v>-1&

Если вы не можете сказать, что набор байтов содержит пробел.

Это должно быть в меру легко решить.

Редактировать: Забыл "A" перед OEIS

Иордания
источник
Трещины
KSmarts
2

R, A105311 , ( треснувший )

'%(),:=acdeginpstx

Давайте попробуем это без lили o.

Так как это было взломано, предполагаемое решение:

cat(diag(diag((a=scan()))%x%diag((a==a):a)),sep=''), diagинтересная функция, которую можно использовать тремя различными способами. Когда представлено единственное целое число ( diag(n)), это создает матрицу NxN с 1 на диагонали. Когда представлен вектор ( diag(1:n)), он создает матрицу NxN с вектором на диагонали. Когда он представлен с помощью matrix ( diag(diag(n))), он возвращает диагональ как вектор. %x%вычисляется произведение Кронекера двух матриц, где каждый элемент матрицы 1 умножается на каждый элемент матрицы 2 отдельно. Делая это с nединичной матрицей длины и 1:nдиагональной матрицей, создает n^2диагональную матрицу длины с 1:nповторяющимися nвременами. diagизвлекает это снова и catпечатает.

JAD
источник
1
это будет еще веселее :)
Джузеппе
это включает новую строку?
Джузеппе
@Giuseppe Нет новых строк
JAD
1
@Giuseppe и я просто дважды проверили дважды, этот байт установлен правильно
JAD
[трещина! ] ( codegolf.stackexchange.com/a/136457/67312 ) - я (неправильно) использовал %o%до того, как понял, что %x%существует. Я предполагаю , что я мог бы сделать 'i'=='i'для 1но так или иначе работает, так.
Джузеппе