Найдите программу, которая печатает эту целочисленную последовательность (поток Робберса)


20

Это нить грабителей. Нить полицейских идет сюда .

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

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

Нет-операции могут быть использованы в решении грабителя.

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

Представление должно быть отформатировано следующим образом:

Язык, nn символов (включая ссылку на ответ), имя пользователя полицейского

Код:

function a(n)
    if n<2 then
        return n
    else
        return a(n-1) + a(n-2)
    end
end

Выход

a(0) returns 0
a(3) returns 2

Необязательное объяснение и комментарии.


Эти правила здесь отличаются от копов, где сказано: Однако любой предложенный исходный код, который производит тот же набор выходных данных, также считается действительным, если он также найден в OEIS.
flawr

Что произойдет, если примеры соответствуют нескольким сериям OEIS? Это только что случилось со мной и Аднаном
FliiFe

@FliiFe В соответствии с текущими правилами, любой код, который соответствует коду полицейского и выводит последовательность OEIS, значения которой совпадают с примерами полицейского, является действительным взломом.
Mego

Это закончено? Есть ли победитель?
Андрей Савиных

Ответы:



5

Гексагония , 7 байтов, Аднан , A005843

?{2'*!@

или

 ? {
2 ' *
 ! @

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

Просто удваивает ввод (и предполагает положительный ввод). Код (на этот раз) просто выполняется в порядке чтения. В коде используются три ребра памяти A , B , C, причем указатель памяти начинается, как показано:

введите описание изображения здесь

?    Read integer from STDIN into edge A.
{    Move memory pointer forwards to edge B.
2    Set edge B to 2.
'    Move memory pointers backwards to edge C.
*    Multiply edges A and B and store result in C.
!    Print result to STDOUT.
@    Terminate program.

То же самое с тем, что я имел! :)
Утренняя монахиня

@KennyLau Я думаю, что решение является уникальным вплоть до обмена ролями Bи C.
Мартин Эндер

4

J, 7 байт, Cᴏɴᴏʀ O'Bʀɪᴇɴ

Код

2+*:@p:

Выход

   f =: 2+*:@p:
   f 0
6
   f 2
27

Попробуйте его с J.js .

Как это устроено

Последовательность A061725 определяется как (n): = p n ² + 2 , где p n - это (n + 1) -ое простое число.

2+*:@p:  Monadic verb. Argument: n

    @    Atop; combine the verbs to the right and to the left, applying one after
         the other.
     p:  Compute the (n+1)th prime number.
  *:     Square it.
2+       Add 2 to the result.

Хорошая работа! Вы понимаете код больше, чем я XD
Конор О'Брайен


4

JavaScript, 10 байт , user81655 , A033999

Я думаю, что понял. Да. Это было действительно сложно. Мне нравится представление, потому что оно сильно зависит от прецедентов.


Это последовательность A033999 :

a (n) = (-1) ^ n.

Источник

t=>~t.z**t

объяснение

Если вы разделите этот код в соответствии с приоритетами оператора JavaScript, вы получите:

  1. .(приоритет 18 ) оценивается первым и t.zвозвращается undefined.
  2. ~(приоритет 15 ) пытается выполнить приведение undefined, в результате чего 0, и возвращает -1после поразрядной нет.
  3. **(приоритет 14 ) будет возвращать -1 ^ t, где tэто нечетное или даже , в результате чего -1или 1.

демонстрация

console.log(
    (t=>~t.z**t)(0),
    (t=>~t.z**t)(1),
);

Попробуй перед покупкой


Я получу награду в 100 повторений за эту классную работу полицейского.


1
Вы правы, поздравляю! :)
user81655

Я считаю себя хорошо разбирающимся в javascript, но я понятия не имею, как это работает.
Конор О'Брайен

@ CᴏɴᴏʀO'Bʀɪᴇɴ Я добавил объяснение. Надеюсь, это объясняет это достаточно хорошо.
insertusername здесь

Вот почему грубая сила не нашла его. Я использовал транспортер с неправильным приоритетом операций> _ <
Конор О'Брайен

3

Элемент , 7 байтов , PhiNotPi , A000042

_'[,1`}

Примечания: я был введен в заблуждение }оооочень долго. Так что это тоже соответствует [.

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


Как это устроено:

_'[,1`}
_        main_stack.push(input());
 '       control_stack.push(main_stack.pop());
  [      Object temp = control_stack.pop();
         for(int i=0;i<temp;i++){
   ,         Object a = main_stack.pop(); //is actually zero
             main_stack.push(a.toChars()[0]);
             main_stack.push(a);
    1        main_stack.push(1);
     `       System.out.println(main_stack.pop());
      }  }

Ницца! Я пытался это, но я не мог понять, как заставить ,прекратить ломать вещи.
Фонд Моника Иск

Мой трюк состоял в том, чтобы сделать ,$1, что дало мне повод добавить действительно запутанный ,оператор в мою программу.
PhiNotPi

Я застрял на }слишком долго :(
Leaky Nun


3

MATL , 9 байт, мензурка , A022844

Код (с пробелом в конце):

3x2xYP*k 

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

Нашел следующие три совпадения со сценарием, который я написал:

Found match: A022844
info: "name": "Floor(n*Pi).",

Found match: A073934
info: "name": "Sum of terms in n-th row of triangle in A073932.",

Found match: A120068
info: "name": "Numbers n such that n-th prime + 1 is squarefree.",

Я попытался сделать первый, который в основном делается с YP*k:

3x2x       # Push 3, delete it, push 2 and delete that too
    YP     # Push pi
      *    # Multiply by implicit input
       k   # Floor function


3

Ява, 479 байт , Даниэль М. , A000073

Код:

import java.util.*;
public class A{

    public static int i=0;
    public boolean b;

    static A a = new A();

    public static void main(String[] args){
        int input = Integer.parseInt(args[0]);

        LinkedList<Integer> l = new LinkedList<>();
        l.add(1);
        l.add(0);
        l.add(0);

        for(int ix = 0; ix<=input; ix++)if(ix>2){
            l.add(0,l//d
            .get(1)+l.peekFirst()+     l.get(2));
        }

        System.out.println(input<2?0:l.pop()
              +(A.i        +(/*( 5*/ 0 )));
    }
}

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


1
Очень отличается от исходного кода, но все же поздравляю!
Даниэль М.


3

05AB1E , 4 байта, Пол Пикард , A001317

Код:

$Fx^

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

Объяснение:

$      # Pushes 1 and input
 F     # Pops x, creates a for-loop in range(0, x)
  x    # Pops x, pushes x and 2x
   ^   # Bitwise XOR on the last two elements
       # Implicit, ends the for-loop
       # Implicit, nothing has printed so the last element is printed automatically

Последовательность в основном представляет собой двоичный треугольник Серпинского:

f(0)=      1                    =1
f(1)=     1 1                   =3
f(2)=    1 0 1                  =5
f(3)=   1 1 1 1                 =15
f(4)=  1 0 0 0 1                =17

И переводит в формулу a (n) = a (n - 1) XOR (2 × a (n - 1))

К счастью, я вспомнил об этом :)


1
И это точно такой же, действительно: D
Пол Пикард


2

Джольф, 5 персонажей , Cᴏɴᴏʀ O'Bʀɪᴇɴ , A033536

Код:

!K!8x

Выход:

a(2) = 8
a(10) = 4738245926336

Это был точно такой же ответ, который у меня был. Я собирался опубликовать это. :(
Фонд Моники Иск

Ни один из ответов не является оригиналом, но они функционально одинаковы.
Конор О'Брайен,

@QPaysTaxes Извините :(
Утренняя монахиня

2

Reng v3.3 , 36 байт , Cᴏɴᴏʀ O'Bʀɪᴇɴ , A005449

iv:#+##->>)2%æ~¡#~
#>:3*1+*^##</div>

Выход

a(1) = 2
a(3) = 15

объяснение

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

На самом деле полезные команды здесь:

iv      >>)2%æ~
 >:3*1+*^

Растягивается на прямую линию:

i:3*1+*)2%æ~

С объяснением:

i:3*1+*)2%æ~ stack
i            [1]      takes input
 :           [1,1]    duplicates
  3          [1,1,3]  pushes 3
   *         [1,3]    multiplies
    1        [1,3,1]  pushes 1
     +       [1,4]    adds
      *      [4]      multiplies
       )     [4]      shifts (does nothing)
        2    [4,2]    pushes 2
         %   [2]      divides
          æ  []       prints
           ~ []       halts

Формула есть a(n) = n(3n+1)/2.


+1 для </div>, закрывающий тег HTML, который каким-то образом появился в коде Reng.
user48538

@ zyabin101 Неправильное место?
Утренняя монахиня

Нет. Мне просто нравится находить скрытые секреты в коде. :-P
user48538

Ну, это в коде полицейского, так что ...
Дрянная Монахиня

2

05AB1E, 3 байта , Adnan , A000292

LLO

Выход

a(9) = 165
a(10) = 220

Как это устроено

LLO Stack
L   [1,2,3,4,5,6,7,8,9]                         range
 L  [1,1,2,1,2,3,1,2,3,4,...,1,2,3,4,5,6,7,8,9] range of range
  O sum all of them

Математический эквивалент sum(sum(n)), где sumнаходится summation.


Хорошая работа, это было точно такое же решение :)
Аднан

2

Джольф, 11 байт, QPaysTaxes , A000005

aσ0xxdxxxxx

Достаточно просто: aвозьмите σ0(количество делителей) x, затем положите бесполезные вещи в конце.

Попробуйте онлайн! Кнопка набора тестов немного сломалась, но все равно показывает правильные результаты.

(Вы могли бы сделать это до двух байтов! Просто σ0было бы неплохо.)


1
Вот это да! Le builtins minuscules! +1
Аднан

1
Это не похоже на то, что у меня было, но это точно работает. У меня было так долго, потому что у вас не было никаких упоминаний о поиске делителей в документах.
Фонд Моника иск

@QPaysTaxes Думаю, мне нужно обновить документы: P А если серьезно, просто Ctrl + F, исходный код;)
Конор О'Брайен,

Я добавлю свой оригинальный код в мой вопрос, если вы хотите его увидеть. Оглядываясь назад, я должен был показать разных персонажей: P
Fund Monica's судебный процесс

2

Python 2, 87 байт , Sp3000 , A083054

n=input()
_=int(3**.5*n)-3*int(n/3**.5)########################################
print _

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



2

JavaScript (ES6), 119 байт, Cᴏɴᴏʀ O'Bʀɪᴇɴ , A178501

x=>(n="=>[[["|x|"##r(###f#n###;##")|n?Math.pow("#<1##].c####t.##pl##[####nc#"|10,"y([###(###(#]###)"|x-1|``):0|`#h####`

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

Без всех игнорируемых символов алгоритм просто x=>x?Math.pow(10,x-1):0.


2

05AB1E , 5 байтов, Луис Мендо , A051696

Код:

Ðms!¿

Объяснение:

Ð      # Triplicate input.
 m     # Power function, which calculates input ** input.
  s    # Swap two top elements of the stack.
   !   # Calculate the factorial of input.
    ¿  # Compute the greatest common divisor of the top two elements.

Таким образом, в основном это вычисляет gcd (n !, n n ) , который является A051696 .

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









1

Pyth , 70 байтов, FliiFe , A070650

Код (с обфусцированной версией ниже):

DhbI|qb"#"qb"#"R!1Iqb"#";=^Q6+""s ]%Q27  ;.qlY+Q1Ih+""Z##;.q)=Z+Z1;@YQ
DhbI|qb"#"qb"#"R!1Iqb"#"#####+""s####2###;##lY+Q1Ih+""Z#####)=Z+Z1;@YQ (obfuscated)

Это в основном делает:

=^Q6%Q27

Он вычисляет a (n) = n 6 % 27 , что составляет A070650 . Объяснение:

=^Q6       # Assign Q to Q ** 6
    %Q27   # Compute Q % 27
           # Implicit output

Попробуй здесь


К сожалению, это не тот. Я обновил свой ответ другим
FliiFe

Из правил это действительно. Поздравляю!
FliiFe

Полагаю, теперь я могу рассказать вам последовательность, это A007770 (0-indexed)
FliiFe

@FliiFe О, я бы никогда не догадался, что: p
Аднан,

На самом деле, если вы знаете последовательность, ее легко заметить, но если вы не знаете, это становится действительно трудно
FliiFe

1

Python, 108, CAD97 , A005132

def a(n):
 if n == 0: return 0
 f=a(n-1)-n
 return f if f>0 and not f in(a(i)for i in range(n))else a(n-1)+n

Запутанный код:

def a(n):
 ###n####0######n#0
 f=a#######
 return f #f#####a###### f ####a(##f###i#i###a####n##else a#######

Выходы:

>>> a(0)
0
>>> a(4)
2
>>> a(16)
8
>>> a(20)
42

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