Bu tamsayı dizisini yazdıran programı bulun (Robbers dizisi)


20

Bu soyguncuların iş parçacığı. Polislerin konusu burada .

Polisler iş parçacığında görev, pozitif (veya negatif olmayan) bir tam sayı alan ve başka bir sayı (mutlaka tamsayı değil) veren / döndüren bir program / işlev yazmaktı. Soyguncuların görevi, bu çıktıyı üretmek için kullanılan polislerin kodunu çözmek.

Kırık kodun uzunluğu aynı olduğu ve ortaya çıkan karakterler doğru konumda olduğu sürece aynı olması gerekmez. Dil de aynı olmalıdır (sürüm numaraları farklı olabilir). Çıktı elbette aynı olmalıdır.

Soyguncunun çözümünde op-op kullanılamaz.

Soyguncular iş parçacığının galibi 7 Mayıs 2016'ya kadar en çok başvuruda bulunan kullanıcı olacaktır. Beraberlik olursa en uzun kombine kod ile başvuruda bulunan kullanıcı kazanacaktır.

Gönderme şu şekilde biçimlendirilmelidir:

Dil, nn karakterleri (yanıtlama bağlantısı dahil), Polisin kullanıcı adı

Kod:

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

Çıktı

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

İsteğe bağlı açıklama ve yorumlar.


Buradaki kurallar atılan polislerden farklıdır, burada: Aynı çıktı kümesini üreten önerilen herhangi bir kaynak kodu da
flawr

Örnekler birden fazla OEIS serisiyle eşleşirse ne olur? Bu Adnan ve benimle oldu
FliiFe

@FliiFe Geçerli kurallar altında, polisin koduyla eşleşen ve değerleri polisin örnekleriyle çakışan bir OEIS dizisi çıkaran herhangi bir kod geçerli bir çatlaktır.
Mego

Bu bitti mi? Bir kazanan var mı?
Andrew Savinykh

Yanıtlar:



5

Altıgen , 7 bayt, Adnan , A005843

?{2'*!@

veya

 ? {
2 ' *
 ! @

Çevrimiçi deneyin!

Girişi iki katına çıkarır (ve pozitif girişi varsayar). Kod (bir defaya mahsus) okuma sırasına göre yürütülür. Kod , bellek işaretçisi gösterildiği gibi başlayacak şekilde üç bellek kenarı A , B , C kullanır :

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.

Tam olarak ne vardı! :)
Leaky Nun

@KennyLau Ben çözüm rollerini takas özgü yukarı olduğunu düşünüyorum Bve C.
Martin Ender

4

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

kod

2+*:@p:

Çıktı

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

J.js ile deneyin .

Nasıl çalışır

Dizi A061725 olarak tanımlanır bir (n): p = n ² + 2 , s , n ise (n + 1) inci asal sayı.

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.

İyi iş! Kodu XD
Conor O'Brien


4

JavaScript, 10 bayt , kullanıcı81655 , A033999

Sanırım anladım. Evet. Bu gerçekten zordu. Gönderiyi seviyorum çünkü ağırlıklı olarak önceliklere dayanıyor.


A033999 dizisi :

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

Kaynak

t=>~t.z**t

açıklama

Bu kodu JavaScript operatörü önceliklerine göre böldüğünüzde :

  1. .(öncelik 18 ) önce değerlendirilir ve t.zgeri döner undefined.
  2. ~(öncelik 15 ) yayınlamaya çalışır undefined, sonuçlanır 0ve -1bitsel değil sonra döner .
  3. **(öncelik 14 ) döndürecektir -1 ^ tburada, tbir tek veya çift , elde -1ya da 1.

gösteri

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

Satın almadan önce deneyin


Bu havalı Polis gönderisinde 100 tekrar ödül kazanacağım.


1
Haklısın, tebrikler! :)
user81655

Javascript konusunda bilgili olduğumu düşünüyorum, ancak bunun nasıl çalıştığı hakkında hiçbir fikrim yok .
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Bir açıklama ekledim. Umarım yeterince iyi açıklar.
insertusernameburada

Bu yüzden kaba kuvvet onu bulamadı. Yanlış operasyon önceliği olan bir transpiler kullandım> _ <
Conor O'Brien

3

Öğe , 7 bayt , PhiNotPi , A000042

_'[,1`}

Notlar: }Soooooo için uzun süre yanıltılmıştım . Yani eşleşir [.

Çevrimiçi deneyin!


Nasıl çalışır:

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

Güzel! Bunu deniyordum, ama bir ,şeyleri kırmayı nasıl durduracağımı anlayamadım .
Monica'nın Davası

Benim işim ,$, kafa karıştırıcı ,operatörü programımın içine koymak için bir bahane veren bir 1 üretmekti .
PhiNotPi

Ben sıkışmıştım }Uzun tooooo için :(
Leaky Nun


3

Matl , 9 bayt, ölçek , A022844

Kod (sonunda boşluk ile):

3x2xYP*k 

Çevrimiçi deneyin!

Yazdığım bir senaryo ile aşağıdaki üç eşleşmeyi buldum:

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

Ben temelde yapılan ilk olanı yapmaya çalıştım 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 bayt , Daniel M. , A000073

Kod:

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

Açıklanmayan karakterleri kaçırırsanız, bunların yerine boşluklar gelir.


1
Orijinal koddan çok farklı, ama yine de tebrikler!
Daniel


3

05AB1E , 4 bayt, Paul Picard , A001317

Kod:

$Fx^

Çevrimiçi deneyin!

Açıklama:

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

Dizi temel olarak bir ikili Sierpinski üçgeni:

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

Ve aşağıdaki formüle çevirir a (n) = a (n - 1) XOR (2 × a (n - 1))

Neyse ki, ben hatırladım bunu :)


1
Ve aynı şey, gerçekten: D
Paul Picard



2

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

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

Çıktı

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

açıklama

Önceden belirlenmiş komutları tamamen göz ardı ettim, ancak )Yeterli yerim olmadığı geldim.

Aslında kullanışlı komutlar burada:

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

Düz bir çizgiye gerilmiş:

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

Açıklama ile:

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

Formül a(n) = n(3n+1)/2.


+1 için </div>, Reng kodunda bir şekilde görünen bir HTML kapatma etiketi.
user48538

@ zyabin101 Yanlış yer?
Leaky Nun

Hayır! Kodda gizli sırlar bulmayı seviyorum. :-P
user48538

Bu polisin kodunda, bu yüzden ...
Leaky Nun

2

05AB1E, 3 bayt , Adnan , A000292

LLO

Çıktı

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

Nasıl çalışır

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

Matematiksel eşdeğerdir sum(sum(n))burada, sumbir summation.


İyi iş çıkardın, aynı çözüm :)
Adnan

2

Jolf, 11 bayt, QPaysTaxes , A000005

aσ0xxdxxxxx

Yeterince basit: alert σ0(bölenlerin sayısı)x , daha sonra sonunda yararsız şeyler koymak.

Çevrimiçi deneyin!Test takımı düğmesi biraz kırıldı, ancak yine de doğru sonuçları gösteriyor.

(İki bayta kadar golf oynayabilirdin! Sadece iyi σ0olurdu.)


1
Vaov! Le inşa minuscules! +1
Adnan

1
Bu benim sahip olduğum şeye benzemez, ama kesinlikle işe yarıyor. Benimki çok uzundu çünkü dokümanlardaki bölenleri bulmaktan bahsetmedin.
Monica'nın Davası

@QPaysTaxes Sanırım belgeleri güncellemem gerekiyor: P Ama cidden, sadece kaynak kodu Ctrl + F;)
Conor O'Brien

Görmek isterseniz orijinal kodumu soruma ekledim. Geçmişe baktığımda, farklı karakterler göstermeliydim: P
Monica'nın Davası

2

Python 2, 87 bayt , Sp3000 , A083054

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

Aslında o kadar da zor değil. Sadece verilen alanda oluşturulabilecek bir tane bulana kadar kısıtlamaları karşılayan dizileri aradım.



2

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

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

Eminim bundan daha zor bir sıra oluşturur, ancak sadece iki çıkış ile, bu OEIS sırası basit ve onları eşleştirir.

Yok sayılan tüm karakterler olmadan, algoritma sadece x=>x?Math.pow(10,x-1):0.










1

Pyth , 70 bayt, FliiFe , A070650

Kod (aşağıda gizlenmiş sürümle):

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)

Bu temelde şunları yapar:

=^Q6%Q27

Bu hesaplar bir (n) = n- 6 ,% 27 olduğu, A070650 . Açıklama:

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

Burada deneyin


Hata! Bu değil. Cevabımı başka biriyle güncelledim
FliiFe

Kurallardan, bu geçerlidir. Tebrikler !
FliiFe

Sanırım şimdi diziyi söyleyebilirim, bu A007770 (0 endeksli)
FliiFe

@FliiFe Oh, bunu asla tahmin edemezdim: p
Adnan

Aslında, sıralamayı biliyorsanız, kolayca fark edilebilir, ancak eğer yapmazsanız, gerçekten zorlaşır
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

Gizli kod:

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

Çıktılar:

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

Tam olarak ne vardı. Dürüst olmak gerekirse, kolay olması bekleniyordu.
CAD97
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.