Полиглот Анаграммы Нить Копов


44

Эта задача состоит из двух потоков. Это нить полицейских. Нить грабителей находится здесь .

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

Программы должны выводить десятичное число с последующим необязательным пробелом в STDOUT. Программы могут выводить в STDERR, однако это следует игнорировать, и если скрытый случай делает это, необходимо четко указать, что это так.

При желании вы также можете выводить по коду символа. Однако, если вы делаете это в своем скрытом решении, вы должны указать это в теле вашего представления.

Затем вы предоставите номер OEIS, исходный код и название одного языка, на котором он находится.

Грабители взломают ваше представление, если они найдут анаграмму исходного представления, которая работает на языке, отличном от того, который вы уже представили. Чтобы найти ответ, они должны найти только любой язык и программу, которая производит последовательность и является анаграммой оригинала, а не обязательно ответом, о котором вы думали.

Таким образом, вы заинтересованы в том, чтобы как можно сложнее было найти любой язык, который выполняет задачу, используя их список символов.

счет

Это поэтому победителем станет самая короткая не взломанная программа.

Языки

Языки будут считаться разными, если два предложенных решения не выполнят задачу на обоих языках. Это будет включать разные версии одного и того же языка, если ни решение копа, ни решение грабителя не дают правильного вывода на языке другого.

т.е. если есть два решения 1 и 2 на языке A и B, соответственно, решение 2 не должно выдавать правильный вывод на языке A, а решение 1 не должно выдавать правильный вывод на языке B.

безопасности

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


4
Чтобы просмотреть случайные последовательности OEIS для поиска идей, перейдите по ссылке oeis.org/webcam
mbomb007

Как это будет работать с языками, которые любят использовать флаги для интерпретатора, такими как Perl? Они дисквалифицированы? Считаются ли флаги частью кода? Являются ли флаги «свободными» (не включены в код или вообще не разглашаются)?
Emigna

Может ли скрытая программа завершить работу с ошибкой (после выдачи результата)? Это должно быть указано в ответе?
Луис Мендо

1
Не уверен, будет ли это полезным для кого-то еще, но при этом выделяются все оставшиеся недостающие символы или дубликаты: codepen.io/anon/pen/BQjxRK
Дом Гастингс,

1
Было бы неплохо, если бы был фрагмент стека, показывающий неоткрытые ответы, сначала самый старый.
mbomb007

Ответы:


15

Python 2, 118 байт, A042545 Cracked

i=input();s=1/(801**.5-28);a=[0,1]
for p in range(i):a+=[a[-2]+a[-1]*int(s)];s=1/(s-int(s))
print a[i]#,,,.//000fhlmo|

Мне не хотелось реализовывать тривиальную последовательность, поэтому я решил использовать свой идентификатор пользователя PPCG. Сначала я написал это на другом языке, который должен дать вам представление о том, что это за язык, хотя я бы поспорил на 100 долларов, что он будет взломан на языке игры в гольф, прежде чем он будет взломан на другом языке.

Примечание. Из-за погрешностей точности с плавающей запятой, эта точность является точной только при входном значении 14. Предполагаемое решение аналогично.

Целевое решение, JavaScript (ES7)

for(i=prompt(),s=1/(801**.5-28),a=[1,0];i--;s=1/(s-n))
  n=s|0,a.unshift(a[1]+a[0]*n);
alert(a[0])  //#+2:[]giiiiinnpt

Работает почти так же, как и решение Python, хотя последовательность хранится по порядку, а не по наименьшему из-за того, что JS не поддерживает отрицательную индексацию.


2
Я не могу заставить дело A042545 (15) работать. OEIS говорит, что это 53000053, но ваша программа говорит, что это 27666361 (по крайней мере, на моей машине).
boboquack

@boboquack Вывод для 16фактически 53000053, но после этого, похоже, нет соответствующих терминов. Интересно, почему ...
ETHproductions

Может быть, ошибка с плавающей точкой, которая становится все хуже?
boboquack


1
Черт возьми, я был прав! :( Это было так близко, как я получил: gist.github.com/dom111/bd9be933cb8ccd0e303601bf73d525b6 В любом случае, спасибо за тренировку, я нуждался, |()но просто не мог их получить
Дом Хастингс

10

Brain-Flak, 24 байта, A000290 , Сейф

Еще одно квадратное решение. На этот раз нет ничего, кроме скобок

({(({}[()])()){}[()]}{})

Предполагаемое решение было в Brain-Flueue , версии мозговых атак , которая использует очереди вместо стеков. Программа была:

({(({})[()]){}}{})[()()]

Языки считаются различными, потому что ни одна из двух программ не останавливается при запуске на другом языке.


Это будет работать в Glypho, если разрешен ввод / вывод с использованием кода символа ...
jimmy23013

@ jimmy23013 что такое глиф?
Пшеничный волшебник

6
esolangs.org/wiki/Glypho ((([{}{}{]]}[)))((){))(}
jimmy23013

@WheatWizard Если он взломан, можете ли вы отредактировать ответ, чтобы показать это?
mbomb007

@ mbomb007 Это не взломано
Wheat Wizard

7

Python 2, 38 байт, A000290 Cracked by Emigna

def e(X):return X*X
print e(input())##

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

Оригинальное решение в CJam:

ri:XX*e#def ()return X
e#pnt (input())


7

CJam , 7 байтов, A005843 треснул !

ri2*e#^

Это основная 2*nпоследовательность.

Объяснение:

r          e# read input
 i         e# convert to integer
  2*       e# multiply it by 2
    e#^    e# this is a comment that is ignored by the interpreter

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


Оригинальное решение, Морковь

#^i*2er

Морковь - это esolang, созданный мной. Я прекратил развивать это давным-давно. Причина, по которой я выбрал это, заключается в том, что я надеялся, что другим языкам будет трудно закомментировать ненужные части кода.

Объяснение:

#^            This pushes the input to the stack (anything before the ^ is the stack)
  i           Convert stack to integer
   *2         Multiply it by 2
     er       These are ignored because they are not Carrot commands
              Implicit output

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


1
ri#e^*2будет работать в желе, если бы *умножение вместо возведения в степень. Так близко ...
ETHproductions


У меня было все, кроме rв Pyth. Захватывающе увидеть оригинальный код для этого.
Emigna

1
@Emigna Я добавил оригинальный код
Kritixi Lithos

6

2sable , 15 байт, A000290 , треснул !

Прыжок на том же поезде n 2 : с.

*?"!#$&<=@\^{|}

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


2
Почти похоже на Мальбоджа с символами в таком порядке: P
ETHproductions


1
@ ConorO'Брайен Хахаха, я был почти уверен, что это невозможно в Jelly, Pyth, 05AB1E и MATL. Хорошая работа! :)
Аднан

5

Brain-Flak, 44 байт, A000290 Cracked

<({({})({}[()])}{}))()()()turpentine/"*"*4splint>

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


Оригинальное решение, Python 2

print(input()**(len(set("{}{}{}[]()<>"))/4))


Теперь мне действительно любопытно. Каким было ваше первоначальное решение? Я могу сказать, что это python, потому что я вижу len set inputи print(и потому что я знаю, что вы любите python), но я не могу понять, как это
возводит в

@DrMcMoylex добавлено
Мастер пшеницы


5

Python 2, 25 байт, A000583 , взломан

Y=input("");print`Y**4`,X

Эта программа завершает работу с ошибкой после вывода на печать.


Мой скрытый код (существенно отличается от взломанного решения!):

На самом деле , 25 байтов

4,n`*`Y")ii(*nppruttY;="X

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

Объяснение:

4,n`*`Y")ii(*nppruttY;="X
4,n                        input, repeat 4 times
   `*`Y                    do * until the stack stops changing (fixed-point combinator)
       ")ii(*nppruttY;="X  push this string and immediately pop and discard it


5

Python, 118 байт, A042545 , сейф

i=int(input());s=pow(801.0,0.5);a=[0|0,1]
for Moshprtflmah in range(i):s=1./(s%1);a+=[a[-2]+a[-1]*int(s)];
print(a[i])

На этот раз это работает в 2 и 3. И нет комментариев! Что ты бы сделал?

Примечание: Как и в старом решении, это теряет точность после первых 15 членов из-за арифметических ошибок с плавающей точкой.

Целевое решение, JavaScript (ES6)

giiiiinnnnprt:
i=prompt([n=+2]);s=Math.pow(801,.5);for(a=[1,0];i--;a.unshift(a[1]+a[0]*(s|0)))s=1/(s%1)
alert(a[0])   

Хотя я сохранил несколько старых версий, мне как-то удалось потерять эту копию, но, к счастью, собрать ее вместе с остальными было не слишком сложно. Теперь я вижу, что у меня было постороннее prtв обеих программах, которые можно было бы сыграть в гольф. Ну что ж.


Я подумал, что напомню, что вы можете пометить это как безопасное, если хотите.
Пшеничный волшебник

@WheatWizard Спасибо, я добавил свое решение.
ETHproductions

5

Python 2, 124 байта, A144945 , [Safe]

Если вы взломаете это, вы получите награду в 500 представителей! Слишком поздно!

Количество способов разместить 2 ферзей на шахматной доске n X n, чтобы они атаковали друг друга.

Надеюсь, это не так просто. Я расположил свой код так, чтобы пробел был хорошо виден. Это только пробелы и переводы строк.

Примечание: предполагаемое решение выводится через код символа

n=input();print((3+2)*n*n+~0*6*n+1)*n/3;            +6;



























+7+7+7+7+7+7+7+7+7;+++++++++++++++9+9*9*9

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

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

r2=ni***p**
(


p((0 ;3+++3;+;/


)





i+++nn
 +)7
n

n+++ 


17+~
 +)7;97++++7


69+9n+ ++7+n 69
 +7+ ++7


**7+++tut

Это эквивалентно следующей программе BF:

>>,[->>>+>>>+>>>+++++<<<<<<<<<]>>>->>>>>>-<<<[[>+<-]>[>>[<<<+>>+>-]<[>+<-]<-]<<<<]>>+++>[-<-[<+<<]<[+[->+<]<+<<]>>>>>]<<<.,.

4

Нечеткое окто-гуакамоле, 26 байтов, A070627 [Safe]

49++*5^pm#]%:"?:.=:#,|"1:@

Тестовые случаи:

1 -> 1
3 -> 23
5 -> 1

Решение:

^::::|*?1=#@]","%.#49++5pm

Работает в Magistack.


Здравствуйте! Напоминаю, что этот ответ можно пометить как безопасный. Не нужно спешить, но никто не сломал его за неделю. Хорошая работа, я с нетерпением жду решения
Wheat Wizard

Круто, я сделаю это и другой раз, когда вернусь домой.
Rɪᴋᴇʀ

3

Pyth, 75 байтов, A004526 треснувший , молоко

Больше игривый тест, чем что-либо, но:

/Q/////////////////****22222 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;;;;;

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

Раствор молока (выпуклый):

2/Q2 2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2*2*2*; 2*;                 2; 2; 2;

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

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

/*///;2/;// ///22/Q//2;///;//;***2222222222222222222222                    

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

Принимает ввод в виде 2 перед последней точкой с запятой и выводит правильное количество Q.

Последовательность индексируется 0 (т. Е. 0 - 0, 1 - 0, 2 - 1, ...)

Нашли небольшие синтаксические ошибки в ///, поэтому отредактировали все решения.



3

MATL, 7 байтов, A000217 , трещины

:sp{1}x

Последовательность n(n+1)/2(треугольные числа), начиная с ввода , n=1как указано на вызов: 1, 3, 6, 10, ... (выход для ввода 0не гарантируется быть одинаковым в обеих программах).

Программа на другом языке завершает работу с ошибкой (после выдачи правильного вывода в STDOUT).

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

:            % Push [1 2 ... n], where n is implicit input
 s           % Sum of that array. Gives the desired result
   p         % Product of that. Gives the same number
    {1}      % Push a cell array containing number 1
       x     % Delete it


@ StevenH. Отлично! Мое оригинальное решение былоx:ps{}1
Луис Мендо


3

Python 3, 27 байт, A000012 , Cracked

На этот раз нет ввода!

if 1:
    if 1:
        print( '1' )

Отступы являются вкладками, но не для сохранения байтов - они необходимы для пробелов.

Я не думаю, что для этого нужна ссылка или объяснение TIO!

(Вероятно, не займет много времени, чтобы взломать каким-то образом)

Предполагаемый ответ (пробел):

-Start-


    if1:if1:print('1')
-End-

(Начало и конец не является частью программы)

Извините, я забыл добавить, что он печатает в STDERR:

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



Я чувствую, что это должен быть пробел, но это вывело бы ошибку в STDERR, так как ему не хватает требуемого перевода строки для завершения в [LF] [LF] [LF].
Мартин Эндер

1
@milk Не ты снова! : D
boboquack

1
@boboquack Это делает работу, но делает печать на STDERR (которые вы можете увидеть, активировав режим отладки на TIO), и вызов говорит , что ответы должны указать ли скрытые языковые записи в STDERR.
Мартин Эндер


3

Нечеткое окто-гуакамоле , 11 байт, A001844 [Безопасно!]

hha02^d+**+

Трещина такого рода работ dh*h++^2*0aв Pyth. Это не правильный формат вывода, хотя.

Мой код все еще там! (и это не в Pyth)

Тестовые случаи:

0 -> 1
1 -> 5

Решение:

^++d0ah*2*h

В джолфе.


1
Клянусь, похоже, это было сделано для Джольфа, но я просто не могу понять, что d...
ETHproductions

Трещины (надеюсь ...)
ETHproductions

@ETHproductions ах, приятно. Не уверен, если это имеет значение, хотя? Смотрите редактировать.
Rɪᴋᴇʀ

Мой код печатает новую строку, но без пробела. То же самое с действительным кодом.
Rɪᴋᴇʀ

@EasterlyIrk Несмотря на то, что я сказал, я не считаю, что ответ дал трещину. Все, что я сказал, все еще остается верным, однако я не считаю лидирующие пробельные символы допустимыми, и я исправлю вопрос, чтобы отразить это.
Пшеничный Волшебник


2

JavaScript ES6, 38 байт, A000290 , Cracked

J=>eval(Array(J).fill(J).join`+`)|2-2;

Этот квадратный поезд довольно изящен, но никуда не едет быстро. (Получите это? Квадратный поезд? Как в, колеса? Нет? Хорошо, хорошо. Критики .)


Предполагаемый ответ: Reticular ( попробуйте онлайн! ),

in2Jo;=>eval(Array(J).fill(J).j`+`)|-2
in      take input, convert to number
  2J    raise to the second power
    o;  output and terminate; ignores following chars

2
Ваш код пытается убедить меня в том, что другим языком является J: P
ETHproductions


2

MATL , 13 байт, A002275 треснул !

i:"@ax'1']
v!

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

Объяснение:

i           % Grab input
 :          % Push (range(1,input))
  "         % For each element in this range:
   @        %   Push it
    a       %   Is is truthy?
     x      %   Delete it
      '1'   %   Push '1'
         ]  %   End loop
v           % Join all of these '1's together
 !          % Transpose and display

1
Я чувствую, что это в Vim, но из-за своей жизни я не могу взломать это
Wheat Wizard


2

2sable , 13 байт, A002378 , треснул !

Надеюсь, я ничего не пропустил. Вычисляет a (n) = n × (n + 1) :

>*?"!&)<=@\\}

Моя версия:

?"\>@&*})<\=!

Или развернутая версия:

  ? " \
 > @ & *
} ) < \ =
 ! . . .
  . . .

Обратите внимание, что >в верхнем левом углу не используется (за исключением программы 2sable). Я сделал это, чтобы запутать грабителей (но это явно не сработало, ха-ха).

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



@MartinEnder Отличная работа! Я обновлю свой ответ оригинальной отправкой :).
Аднан


2

Befunge 93 , 14 байтов, A121377 , Трещины молоком !

&52* %68*+ .@Q

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

Мое решение в Pyth. & @ напечатать ошибку, но это относится к STDERR, который в соответствии с OP игнорируется.

+%Q*5 2*6 8.&@


2

Python 2, 35 байт, A048735 , сейф

print(lambda u:u&u<<1)(input())>>1

Оригинальное решение было на моем собственном языке программирования Wise .

:<<>&>print(lambda uuu1)(input())1

Большинство персонажей не имеют никакого отношения к операции. Важными персонажами являются первые шесть. :создает две копии первого элемента в стеке. <<>бит сдвигается дважды влево и один раз вправо, что эквивалентно сдвигу бита один раз влево. &берет побитовый и верхний и второй элемент (оригинал и битовая копия). Наконец >немного сдвигается вправо.


2

05AB1E, 5 байтов, A000012 , Сейф

$;$1?

Последовательность 1-х. Попробуйте онлайн

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

1;$$?

Попробуйте онлайн . Я не смог найти документацию для этого языка, поэтому не имею объяснения, как он работает точно.


Глупая точка с запятой ... Я мог бы почти использовать Retina, но у меня не может быть обоих 1и ;.
mbomb007

1
Это не было взломано
Wheat Wizard

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

Разве этот ответ не должен быть помечен как принятый сейчас?
mbomb007

1

Python 2, 70 байт, A000217 треснул !

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

o=input()
v=0
i=1
while o:
 v+=i
 i+=1
print v


#|  d00->1@@@++-^,,[

После этого я понял, что неправильно запутал код (это не меняет достоверность опубликованного ответа). Вот код, с которого я начал в Haystack:

v
0
v
0
i
1
-
>      d0[v
^-1@+@d+1@?,,o|


1

05AB1E , 9 байт, A000042 треснул !

1×,1*-^$)

Это унарное представление натуральных чисел (OEIS). Так что, если вход был 3, например, то был бы вывод 111.

Объяснение:

                    # implicit input
1                   # pushes 1 to the stack   
 ×                  # pushes "1" × (the input)
  ,                 # outputs the stack
   1*-^$)           # irrelevant

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


Оригинальное решение, Морковь

1^*$-1×^)

объяснение

1^             Push "1" to the stack
  *            Multiply the string by
   $-1         ...the input (as an integer) minus 1 times
      ×,)      Ignored by the interpreter

В *умножает струнный по (n+1)времени, так что a^*3приводит aaaaи не aaa. Вот почему я вычел 1из ввода.

Только теперь я понимаю, что это не )имеет отношения к обоим языкам: D

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



Какой был оригинальный скрытый язык?
Пшеничный волшебник

@WheatWizard Ой, спасибо, что нашли это. Я добавил язык сейчас
Kritixi Lithos

1

J, 2 байта, A000290 , Треснутая

*~

Что ж, с таким же успехом можно начать переходить на эти два байта. Выходит n × n или n 2 .

предполагаемое решение, Jolf, 2 байта

*~

Что ж. Да. Это мой собственный язык, и я думаю, что он работает, потому что ~ищет расширенный символ, но не находит его, поэтому он просто игнорирует его. ¯ \ _ (ツ) _ / ¯ К сожалению.



@StevenH. хорошая работа! Я редактировал с намеченным решением.
Конор О'Брайен

@ ConorO'Brien ваше намеченное решение не было допустимым решением. Чтобы языки считались отличимыми, ни оригинал, ни решение не могут быть полиглотом на обоих языках
Wheat Wizard

@WheatWizard Ох. Это неловко.
Конор О'Брайен



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.