Знайдіть програму, яка друкує цю цілу послідовність (нитка Розбійника)


20

Це нитка розбійників. Сюди йде нитка копів .

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

Зламаний код не повинен бути ідентичним, якщо він має однакову довжину і будь-які виявлені символи знаходяться в правильних положеннях. Мова також повинна бути однаковою (номери версій можуть бути різними). Зрозуміло, вихід повинен бути однаковим.

У розчині грабіжника не можна застосовувати жодних опцій.

Переможцем розбійного потоку стане той користувач, який зламав більшість матеріалів до 7 травня 2016 року. Якщо буде зв'язано, виграє той, хто зламав подання з найдовшим комбінованим кодом.

Подання має бути відформатоване так:

Мова, nn символів (включаючи посилання на відповідь), ім'я користувача Cop

Код:

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.
недолік

Що станеться, якщо приклади відповідають декільком серіям OEIS? Це щойно сталося з Аднаном і мною
FliiFe

@FliiFe Згідно з чинними правилами, будь-який код, який відповідає коду поліцейського і виводить послідовність OEIS, значення якого збігаються з прикладами поліцейського, є дійсним тріском.
Мего

Це закінчилося? Чи є переможець?
Андрій Савіних

Відповіді:



5

Шестикутник , 7 байт, Аднан , A005843

?{2'*!@

або

 ? {
2 ' *
 ! @

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

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

enter image description here

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

Точно так само з тим, що я мав! :)
Leaky Nun

@KennyLau Я думаю, що рішення є унікальним аж до заміни ролей Bта C.
Мартін Ендер

4

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

Код

2+*:@p:

Вихідні дані

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

Спробуйте його з J.js .

Як це працює

Послідовність A061725 визначається як A (N): = р п ² + 2 , де р п є (п + 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
Conor O'Brien


4

JavaScript, 10 байт , користувач81655 , 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
Ви праві, вітаю! :)
користувач81655

Я вважаю себе добре розробленим JavaScript, але поняття не маю, як це працює.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Я додав пояснення. Сподіваємось, це пояснює це досить добре.
insertusernamehere

Тому груба сила не знайшла. Я використав транспілятор із неправильним пріоритетом> _ <
Conor O'Brien

3

Елемент , 7 байт , PhiNotPi , A000042

_'[,1`}

Примітки. Мене }довгий час ввели в оману для soooooo. Так воно і відповідає [.

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


Як це працює:

_'[,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

Jolf, 3 байта , Easterly Irk , A001477

axx

Складається з простої кішки ( ax), за якою слідує не-оп Не впевнений, для чого тут збирався коп.


Це, безумовно, не функція ідентичності. Це попередження введення. Є фактичні функції ідентичності: P
Conor O'Brien

3

Java, 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

Це була точно та сама відповідь. Я збирався його опублікувати. :(
позов Фонду Моніки

Жодна відповідь не є оригінальною, але вони функціонально однакові.
Conor O'Brien

@QPaysTaxes Вибачте :(
Leaky Nun

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.
користувач48538,

@ zyabin101 Неправильне місце?
Leaky Nun

Ні. Мені просто подобається пошук прихованих секретів у коді. :-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
Оце Так! Ле вбудований мінус! +1
Аднан

1
Це не що інше, як у мене, але це впевнено працює. Моє було так довго, тому що ви не мали жодної згадки про пошук дільників у документах.
Позов по

@QPaysTaxes Я думаю, мені потрібно оновити документи: P Але серйозно, просто Ctrl + F вихідний код;)
Conor O'Brien

Я ставлю свій оригінальний код у своєму питанні, якщо ви хочете його побачити. З ретроспективою я повинен був показати різних персонажів: P
Фонд позову Моніки

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.










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-індексовано)
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.