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


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
...

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


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

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

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

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

abcdeFgh|jklmnopqrsTuvwxyz
=()



4

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

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

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

{[abcdefghijklmnopqr uvwxyz]}.

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

head . flip drop [ floor pi .. ]



3

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

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

<=>,;!"()*%+acdfhimnoprt 

хорошо, мне было интересно, лол. в качестве аргумента командной строки?
Конор О'Брайен

Да, я
проясню

1
Трещины! это было весело: D
Конор О'Брайен

3

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

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

0

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

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


1
Почему бы не включить все байты, чтобы максимизировать ваш счет? Вы набрали наименьшее возможное количество, когда не было бы никакой разницы включать все байты.
Пшеничный волшебник

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


@muddyfish Разрешен ли ввод как символ для бред?
sonar235

@ sonar235 В общем, мы разрешаем ввод в качестве символа для мозгового удара. Хотя значения здесь превышают 255, я не думаю, что ответ, использующий их, может быть действительным.
Пшеничный волшебник



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)снова.


У Cubix есть несколько символов noop, верно? Почему бы вам не добавить их, чтобы увеличить свой счет? Или является частью проблемы, что нет noops.
Пшеничный волшебник

@WheatWizard Я решил быть милосердным и добавить, .но это может быть сделано без него.
Джузеппе

3

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

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

[0-9 ]

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

намек

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

Решение

8 47142938850356537668025719950342285215695875470457212766920093958965599014291682211474803930206233718243166021324700185443274842742744297183042397910454208210130742260519105651032450664856693714718759816232968955289663444878636053035645231246428917992493766505872029989544065894418166685284738859999912471659057565000392419689361271972485444731284404987238803115210428572945108908191097214978382112218242627719651728712577306652405452922782307249485947045215982784790396555726144526602778473387279897334709142853151393812930171163300904436548870603006549005515709074682843356844201220668045057407146751793470423217099467145255174198241606814578351260769359571053755888106818197239116973006365593563235361647743411341624822052103816968153274122434280200888824954875622811325064255818154979564925710534165572852442761249176778416688044630942040966271963723430245979221181930857841829694362184653939393940015797332978459794253176110314873994228261888801228999293570329618551223457182420746927212801550646743152754821640064626761542582557138452651970009253770914346130172884305622027370793496993281847017017643506435562229916984107083951938286577012273222191422054315198157936674247934699496471202544270325061352014830137178245082445717253260177560449757186762445707057028987371278573629077370632470496186218574320801798046510846708620502139560277546345198686675095078255875594169064796673074708822106659920187882062247609587560174781170641367430722951002242213604709887062481149928551745163110045572994991844223216663621203042075294195007458339984527333125093390189721042315604498435269143549420166732177200370228527273606218617171975362431824163269672003982537382982066136613799403024924018145511099557720492305303748099327810811511080314262364010281851651151072957475365629128068033597559560186625877942054704386175359499573139930378099420149452745731809033737756051947913924265484582800618244473333957173960222243311738522875022546610298627492222587971756897328087719407454153248557203886421828643453889090192355970705084245312184441674098515659253482621260617211786550204852895652236768886852209506535523414991099331857674826373947830587028494510697603296607361093480842935154672353288419699354739650168309017848485131553416956405911683526896232046773861961911767319373432460217755874481607587604361758089936007730253450733375831228127106295259261723611771334468553746160739548375950046831923765023329346333968732796413192682936767133122325481273354810124729664400173367781325488656859581438769940474229394692089519981810909719628263357284973442177568041416363386891516725592952892168077523560584005586276794967492051823290615767599202657060820223928678900774601616908031321346819422162123048834532926372862962159255934240435694566497798544870186550219886342379298214007368081326725550763589917206162393892085506551547475259270513853987294911388226039365971184089828739349642347312302559286882065147953715607221387657413593069535573044067517274676745306396611760657091792151803798859781616126637075577936361782593546481811651450365118155866449850474140044293772144065341051900055416408240857348697564252386403719942197789892382627153382011984996644288495699209129097948405810551134169739499539470610790009272281731894550593600643079188663110695127017324336488487580799309995227054576681630676222848231145106058050452439356753552872060820230589152143268436210090733908507724084889788244157692417246691477400856716677564609725979550100138132944851304473466485128295568194188600539248624248078558656162635444219199062786468487219220160009464328883337821175254405764395407405891483810757405446047244460754827113527540703326714751461178900155717130399854358953609995319006890674085682111514072508440632941090209366005504352890092326935445829213294943731517698438648298921337375443947066950275955144209037675013663600062205168551851984361951824731229113379464426979717688372371011461890139087487634586087688796134318950140718824105959727161482389914414206768064990410615468858520426399188835467970981786227122743162945627167772066100574532803061925537235491026486409948728571706557098859331941260622260924660292578136091523126589085799981416326395824628987154802653126685882440760385315869346960183809644486238810912663304360284449610976505715001267334297285036791711464142665122000857666018757370925847113798258537503747803972255591351740843663253694303946089997282812556281486820325652814785261116697261899511762129550421005941055852897451832731304151488058522478260009347144486599715629242208891126238083949281490804191584238425634093683587199278186505945727829025071885767559828670803412582690901456978557379916793144695491189633486065077294485660840922713748873840986104486221528464294334436081663106336911265802650605150347413103936140565054608396116572669757269475369570465915381045895991937087068526458273755454602799814909213983801968791431574508976448235055061998715636460946550584682626461010298101802277643570201189324102499951196290880892383380284543173390448406975616650185808619832614403133944687275834716343817926764699295672501869876060896683204343897481630037607159476461359111190545646447421653872016775582115425356868533678655969328210255235050133718364831289991244684695035034122861927276046255405376531096051541299607470934463981741370397268760811035606321455156217990078359217247117349544774085111287345436916077577032709684005131011429476229617901273007027774182864475737502587896225475248267937497254066190335088823904767397814233350286976811901982274477445433872253983823904938249655089770642137858608313524715533520654523880832056453080193644871440738737277389718589793074725139142291918837706550037934799585495183374639955887618135803388399608755212147742199481865453122900714456703147150994585431640652462593333773031385396586933380738103697887063571042512186708015948688088011290197524699274772775288900864690592106393483764109837848793374117655194139018455509931621247697015323332300969105814058088442693320033876473960017819576425062784644138417943454576404265382986995583045527928832

Как вы это создали?
Кристофер

@ 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-список.


1
Добро пожаловать в PPCG!
Захари


1
Лом, который я использовал .:(
Джонатан Аллан

1
Я исправил трещину.
Джонатан Аллан

1
... и перешел на Python 3.
Джонатан Аллан

2

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

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

()%cfinotu

нет 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 байтами:

$()-:=>?_~


1
Это не [code-golf]: «Ответы будут оцениваться по количеству байтов в наборе байтов с хорошим счетом». Чем больше байтов, тем лучше.
LarsW

@LarsW, с другой стороны, больше байтов также облегчает взлом :)
JAD




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печатает.


1
это будет еще веселее :)
Джузеппе

это включает новую строку?
Джузеппе

@Giuseppe Нет новых строк
JAD

1
@Giuseppe и я просто дважды проверили дважды, этот байт установлен правильно
JAD

[трещина! ] ( codegolf.stackexchange.com/a/136457/67312 ) - я (неправильно) использовал %o%до того, как понял, что %x%существует. Я предполагаю , что я мог бы сделать 'i'=='i'для 1но так или иначе работает, так.
Джузеппе
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.