Temukan program yang mencetak urutan bilangan bulat ini (Utang perampok)


20

Ini adalah utas perampok. Utas polisi ada di sini .

Di utas polisi, tugasnya adalah menulis program / fungsi yang mengambil bilangan bulat positif (atau non-negatif) dan menampilkan / mengembalikan nomor lain (tidak harus bilangan bulat). Tugas perampok adalah mengurai kode polisi yang digunakan untuk menghasilkan output ini.

Kode yang retak tidak harus identik, asalkan memiliki panjang yang sama dan setiap karakter yang terungkap berada di posisi yang benar. Bahasanya juga harus sama (nomor versi bisa berbeda). Outputnya tentu saja harus identik.

No-ops dapat digunakan dalam solusi perampok.

Pemenang utas perampok adalah pengguna yang telah memecahkan kiriman paling banyak pada 7 Mei 2016. Jika ada dasi, pengguna yang telah memecahkan kiriman dengan kode gabungan terpanjang akan menang.

Pengajuan harus diformat seperti ini:

Bahasa, nn karakter (termasuk tautan ke jawaban), nama pengguna Cop

Kode:

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

Keluaran

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

Penjelasan dan komentar opsional.


Aturan-aturan di sini berbeda dari polisi yang dicuri, di mana dikatakan: Namun, setiap kode sumber yang diusulkan yang menghasilkan serangkaian output yang sama juga dianggap valid, asalkan juga ditemukan di OEIS.
flawr

Apa yang terjadi jika contohnya cocok dengan beberapa seri OEIS? Ini Baru saja terjadi dengan Adnan dan saya
FliiFe

@ FliiFe Di bawah aturan saat ini, kode apa pun yang cocok dengan kode polisi dan menghasilkan urutan OEIS yang nilainya bertepatan dengan contoh-contoh polisi adalah celah yang valid.
Mego

Sudah selesai? Apakah ada pemenang?
Andrew Savinykh

Jawaban:



5

Hexagony , 7 byte, Adnan , A005843

?{2'*!@

atau

 ? {
2 ' *
 ! @

Cobalah online!

Cukup gandakan input (dan asumsikan input positif). Kode ini (sekali saja) dieksekusi dalam urutan membaca. Kode menggunakan tiga tepi memori A , B , C dengan penunjuk memori dimulai seperti yang ditunjukkan:

masukkan deskripsi gambar di sini

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

Persis sama dengan apa yang saya miliki! :)
Leaky Nun

@ KennyLau Saya pikir solusinya unik hingga bertukar peran Bdan C.
Martin Ender

4

J, 7 byte, Cᴏɴᴏʀ O'Bʀɪᴇɴ

Kode

2+*:@p:

Keluaran

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

Cobalah dengan J.js .

Bagaimana itu bekerja

Urutan A061725 didefinisikan sebagai (n): = p n ² + 2 , di mana p n adalah bilangan prima (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.

Pekerjaan yang baik! Anda memahami kode lebih dari yang saya lakukan XD
Conor O'Brien


4

JavaScript, 10 byte , user81655 , A033999

Saya rasa saya mengerti. Ya. Yang ini sangat sulit. Saya suka pengajuan karena sangat bergantung pada prioritas.


Ini urutan A033999 :

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

Sumber

t=>~t.z**t

Penjelasan

Jika Anda membagi kode ini sesuai dengan prioritas operator JavaScript yang Anda dapatkan:

  1. .(diutamakan 18 ) akan dievaluasi terlebih dahulu dan t.zakan kembali undefined.
  2. ~(diutamakan 15 ) mencoba untuk melemparkan undefined, menghasilkan 0, dan kembali-1 setelah bitwise tidak.
  3. **(diutamakan 14 ) akan kembali -1 ^ t, di mana tadalah aneh atau bahkan , yang mengakibatkan -1atau 1.

Demo

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

Coba sebelum membeli


Saya akan memberikan hadiah 100 rep atas pengiriman Cop keren ini.


1
Anda benar, selamat! :)
user81655

Saya menganggap diri saya berpengalaman dalam javascript, tetapi saya tidak tahu bagaimana ini bekerja.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Saya sudah menambahkan penjelasan. Semoga ini menjelaskan dengan cukup baik.
masukkan nama pengguna di sini

Itu sebabnya brute-force tidak menemukannya. Saya menggunakan transpiler dengan presedensi operasi yang salah> _ <
Conor O'Brien

3

Elemen , 7 byte , PhiNotPi , A000042

_'[,1`}

Catatan: Saya telah lama disesatkan oleh }soooooo. Jadi itu juga cocok[ .

Cobalah online!


Bagaimana itu bekerja:

_'[,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());
      }  }

Bagus! Saya sudah mencoba ini, tetapi saya tidak tahu bagaimana cara ,untuk menghentikannya.
Dana Gugatan Monica

Trik saya adalah ,$menghasilkan 1, yang memberi saya alasan untuk memasukkan ,operator yang benar-benar membingungkan dalam program saya.
PhiNotPi

Saya terjebak di }foroooo lama :(
Leaky Nun


3

MATL , 9 byte, gelas , A022844

Kode (dengan spasi putih di akhir):

3x2xYP*k 

Cobalah online!

Menemukan tiga kecocokan berikut dengan naskah yang saya tulis:

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

Saya mencoba melakukan yang pertama, yang pada dasarnya dilakukan dengan YP*k:

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


3

Java, 479 byte , Daniel M. , A000073

Kode:

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 )));
    }
}

Jika Anda melewatkan karakter yang tidak terungkap, karakter itu akan diganti dengan spasi.


1
Sangat berbeda dari kode aslinya, tetapi tetap saja, selamat!
Daniel M.

3

Ruby, 38 byte, histokrat , A008592

->o{(s="+o++o"*5).sum==03333&&eval(s)}

Bisa berbeda dari solusi yang dimaksudkan karena saya menemukan ini dengan tangan.


Bagus sekali! Solusi dimaksudkan mirip: "+f+=f"*5.
histokrat

3

05AB1E , 4 byte, Paul Picard , A001317

Kode:

$Fx^

Cobalah online!

Penjelasan:

$      # 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

Urutan pada dasarnya adalah segitiga biner Sierpinski:

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

Dan diterjemahkan menjadi rumus a (n) = a (n - 1) XOR (2 × a (n - 1))

Untungnya, saya ingat yang ini :)


1
Dan itu persis sama, memang: D
Paul Picard



2

Reng v3.3 , 36 byte , Cᴏɴᴏʀ O'Bʀɪᴇɴ , A005449

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

Keluaran

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

Penjelasan

Saya sepenuhnya mengabaikan perintah yang ditentukan sebelumnya, kecuali ) karena saya tidak punya cukup ruang.

Perintah yang sebenarnya berguna ada di sini:

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

Membentang ke garis lurus:

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

Dengan penjelasan:

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

Rumusnya adalah a(n) = n(3n+1)/2.


+1 for </div>, tag penutup HTML yang entah bagaimana muncul dalam kode Reng.
user48538

@ zyabin101 Tempat yang salah?
Leaky Nun

Nggak. Saya hanya suka menemukan rahasia tersembunyi dalam kode. :-P
user48538

Nah ini ada dalam kode polisi, jadi ...
Leaky Nun

2

05AB1E, 3 byte , Adnan , A000292

LLO

Keluaran

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

Bagaimana itu bekerja

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

Matematika setara adalah sum(sum(n)), di mana sumadalah summation.


Kerja bagus, itu solusi yang persis sama :)
Adnan

2

Jolf, 11 byte, QPaysTaxes , A000005

aσ0xxdxxxxx

Cukup sederhana: aberi σ0(jumlah pembagi) x, lalu masukkan barang yang tidak berguna di bagian akhir.

Cobalah online! Tombol test suite agak rusak, tetapi masih menunjukkan hasil yang tepat.

(Anda bisa membuatnya menjadi dua byte! Hanya σ0 akan dilakukan dengan baik.)


1
Wow! Le builtins minuscules! +1
Adnan

1
Ini tidak seperti apa yang saya miliki, tetapi pasti berhasil. Milik saya begitu lama karena Anda tidak menyebutkan menemukan pembagi dalam dokumen.
Dana Gugatan Monica

@ QPaysTaxes Saya kira saya perlu memperbarui dokumen: P Tapi serius, cukup Ctrl + F kode sumber;)
Conor O'Brien

Saya memasukkan kode asli saya ke pertanyaan saya jika Anda ingin melihatnya. Dalam retrospeksi, saya seharusnya menunjukkan karakter yang berbeda: P
Fund Monica's Lawsuit

2

Python 2, 87 byte , Sp3000 , A083054

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

Sebenarnya tidak terlalu sulit. Hanya mencari urutan yang memenuhi kendala sampai saya menemukan satu yang bisa dihasilkan di ruang yang diberikan.



2

JavaScript (ES6), 119 byte, Cᴏɴᴏʀ O'Bʀɪᴇɴ , A178501

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

Saya yakin kode aktual menghasilkan urutan yang lebih rumit dari ini, tetapi hanya dengan dua output, urutan OEIS ini sederhana dan cocok dengan mereka.

Tanpa semua karakter yang diabaikan, algoritma itu adil x=>x?Math.pow(10,x-1):0.


2

05AB1E , 5 byte, Luis Mendo , A051696

Kode:

Ðms!¿

Penjelasan:

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

Jadi, pada dasarnya ini menghitung gcd (n !, n n ) , yaitu A051696 .

Cobalah online! .








1

J, 8 byte, Kenny Lau , A057427

Kode:

(-%- )\.

Keluaran:

a(0) = 0
a(1..29) = 1

Saya tidak berpikir ini dimaksudkan. Dan saya tidak tahu mengapa saya memiliki perilaku ini. Tapi itu berhasil.


Akan menambahkan satu lagi pembatasan xd
Leaky Nun

1

Pyth , 70 byte, FliiFe , A070650

Kode (dengan versi dikaburkan di bawah):

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)

Ini pada dasarnya tidak:

=^Q6%Q27

Ini menghitung a (n) = n 6 % 27 , yaitu A070650 . Penjelasan:

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

Coba di sini


Ups, bukan itu. Saya memperbarui jawaban saya dengan yang lain
FliiFe

Dari aturan, ini valid. Selamat!
FliiFe

Saya kira saya bisa memberi tahu Anda urutannya sekarang, A007770 (diindeks 0)
FliiFe

@FliiFe Oh, saya tidak akan pernah menduga bahwa: p
Adnan

Sebenarnya, jika Anda tahu urutannya, ini dapat dengan mudah terlihat, tetapi jika Anda tidak tahu, itu menjadi sangat sulit
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

Kode yang dikaburkan:

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

Output:

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

Persis seperti yang saya miliki. Diharapkan itu mudah, jujur.
CAD97
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.