(Sabit olmayan) OEIS!


24

Feragatname: Bu, "OEIS Polyglot!" ancak kapanmaya neden olan sorunu giderir (çıktı bölümüne bakın) ve cevapları geçersiz kılmayacak şekilde yeniden gönderildi.

Giriş

Hepimiz tamsayı dizilerinin çevrimiçi ansiklopedisini ( OEIS ) biliyor ve seviyoruz . Peki ya ilginç dizilerin çevrimdışı bir versiyonunu yapsaydık? Bu çok kolay olurdu, değil mi ve standart arayüzümüzle nasıl bir sekans seçersiniz? Hayır. Bunun için daha kolay bir çözüme ihtiyacımız var. Bir çokgrup!

Giriş

Girişiniz negatif olmayan bir tamsayı olacak n.

Çıktı

Çıktınız ya olacak

  • nBir OEIS dizisinin inci giriş TD
  • nBir OEIS dizisinin ilk girişleri.

Dizini tercihinize göre 1 tabanlı veya 0 tabanlı olarak alabilirsiniz.

Bu soruyu yapmamak için Çok yönlü tam sayı yazıcının sabit dizileri yasaklandı. Bu aynı zamanda başvuruların zorluk seviyesini arttırmalı ve "sıkıcı" çözümlerden kaçınmalıdır;)

Eşit olmayan iki dizi üyesi varsa bir dizi sabit değildir.

Uhm, Meydan nerede?

Yukarıdaki işlevselliği polyglot yapmanız gerekir. Bu, eğer A, B ve C dillerini destekliyorsanız, hepsinin farklı OEIS dizileri uygulaması gerekir. Dizi seçimi, tüm diller için farklı dillere ihtiyaç duymanız dışında, sınırlı değildir.

Diğer bir deyişle, eğer sağlanan programı A dilinde çalıştırırsanız, o zaman X dizisi oluşturulur, eğer sağlanan programı B dilinde çalıştırırsanız, o zaman Y dizisi oluşturulur (X! İle = Y) ve verilen programı çalıştırırsanız C dilinde, daha sonra Z dizisi oluşturulur (X! = Z && Y! = Z ile).

Kim kazanır?

En dizi / dil çiftleri ile cevap kazanır. İlk bağlayıcı kırıcı daha düşük olmakla birlikte kod boyutundadır (bayt cinsinden). İkinci tie-breaker daha önce daha iyi olması ile birlikte teslim süresidir.

Son bir Söz / Kural Var mı?

  • Hangi dilin hangi diziyi üreteceğini açıklamalısınız.
  • Standart I / O kuralları geçerlidir.
  • Diller arasında farklı kodlamalar kullanılıyorsa, her iki programın da aynı byte dizisini kullanması gerekir.
  • Dil (Python 2/3) revizyonları yapmak farklı dil olarak sayılır. Bir dilin farklı uygulamaları (örneğin, Tarayıcı JS vs Node.js) farklı diller olarak sayılır.
  • Standart boşluklar uygulanır.

4
Bu gönderi bu Meta Soru-Cevap'ya uygun olarak yapıldı .
SEJPM

Farklı dillerin farklı dizinleri olabilir mi?
Stephen,

2
@StepHen evet yapabilirler.
SEJPM

Yanıtlar:


16

3 dil (1 bayt) - Pyth ( A001477 ), MATL ( A000027 ), Braingolf ( A000217 )

Q

Nasıl?

Q aşağıdakileri yapar:

  • MATL'de, demek + 1ki temel olarak değerlendirir input + 1.

  • Pyth'te giriş anlamına gelir, bu yüzden yalnızca girdiyi verir.

  • Braingolf'ta, üçgen sayılar için yerleşiktir.

Mini dil bilen

Pyth , aşağıdaki dillerden biriyle değiştirilebilir: GolfScript , Pyke , Brachylog veya Brain-Flak .


1
İyi kesinlikle bu bir 1 doğru dilleri aldı: P
HyperNeutrino

1
@HyperNeutrino Ben sadece cevabımı oradan taşıdım, ama o zamanlar çok iyi diller seçtim, o yüzden evet: P - Teşekkürler!
Bay Xcoder

Unutmayın, bu kod golf değil, dil sayısıdır: P
Stephen

@StepHen 3 makul olduğunu düşünüyorum.
Bay Xcoder

14

10 dil, 122 bayt

#|A=1:0;~@}{\,[.,];oi
#coding:utf-8
print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()#⎚I±N»
# x
#x%:+.

Kesinlikle bir demet daha ekleyebilirim. Aksi belirtilmedikçe 1 indeksli.

Yeni değişikliklerin eski programları etkilemediğinden emin olduğumda TIO bağlantılarında güncel olamayabileceğimi unutmayın - isterseniz bunları test edebilirsiniz, ancak her değişiklik yaptığımda 10+ yeni TIO bağlantısını kopyalayın biraz sonra yorucu oluyor. Her 5 güncellemede yenilerini kopyalayacağım.

cQuents v0, A000007

İlgili kod: #|A=1:0;

#|Agirişi yakalar ve Python yorumları için oradadır. =1İlk madde olarak yerleştirilmiştir 1, :0geri kalanı anlamına olan 0, çıktılar ngiriş verilen inci terimi n. cQuents v0, beklenmeyen ancak geçerli bir belirteç ;okunduğunda ayrıştırmanın sona ermesine neden olan garip bir hataya / özelliğe sahiptir .

Çevrimiçi deneyin!

PingPong, A001478

İlgili kod: #|A=1:0;~@

Çıkış kodu ile çıkış yapar. 0 endeksli.

#sonraki karakteri atlar. =burada hiçbir şey yapmaz. 1iter 1ve STDOUT'a :yazdırır 1. 0iter 0. )hiç birşey yapmıyor. ;girişi iter, ~çıkar ve iter -n-1. @sonlandırır. Çıkış kodu yığının en üstündedir.

Çevrimiçi deneyin!

axo, A001477

İlgili kod: }{\

0 endeksli. }STDIN'den bir tamsayı okur ve iter (bazı sebeplerden dolayı takip eden yeni satır gerektirir), {yığının üstüne yazdırır ve \programı sonlandırır. Önceki karakterlerin ne yaptığından emin değilim ama bu durumda önemli olan hiçbir şey yok.

Çevrimiçi deneyin!

beyin fırtınası , A000027

İlgili kod: ,[.,]

Esolangs.org sitesinden basit bir kedi programı. Girişi çıkarır.

Çevrimiçi deneyin!

> <>, A000030

İlgili kod: #...;oi

#io;girişin ilk karakterini veren ve okumaya yönlendiren sağa yansıtır ve sarar . 0 endeksli.

Çevrimiçi deneyin!

Ruby, A023443

İlgili kod: print (0 and gets.to_i-1...)

0 endeksli. Girdi eksi 1 yazdırır 0. Ruby'de truthy, ancak Python'da falsey.

Çevrimiçi deneyin!

Python 3, A000578

İlgili kod: print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()

HyperNeutrino'nun orjinal gönderisinden koptu, ama bu oldukça iyi bilinen bir çok dilli. quit()programı sonlandırır.

Çevrimiçi deneyin!

Python 2, A000290

İlgili kod:

#coding:utf-8
print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()

#coding:utf-8Kömür işlerinin çalışması için gereklidir. Ayrıca, HyperNeutrino'nun orijinal gönderisinden de koptu. quit()programı sonlandırır.

Çevrimiçi deneyin!

Kömür, A001489

İlgili kod: ⎚I±N»

0 endeksli. konsolu temizler (Kömür ASCII'yi olduğu gibi I±Nbasar ) ve girişin negatifini basar. »ayrıştırma hatasıdır ve programı sonlandırır.

ASCII'ye yalnızca sohbet konusundaki yardımları için teşekkürler.

Çevrimiçi deneyin!

Kardinal, A020725

İlgili kod:

 x
x%:+.

Girdiye 1 ekler ve diğer tüm işaretleyicileri sıkar.

Çevrimiçi deneyin!


PingPong'un çıkış kodu ToS gibi görünüyor, 64 bit imzalı bir tamsayıdan beklendiği gibi 2 ^ 32 değerinde kaydırılıyor .
Jonathan Allan,

@ JonathanAllan harika, teşekkürler.
Stephen

Kömür kodu zaten programın sonundaysa, gerçekten bir ayrıştırma hatasıyla çıkmanız gerekiyor mu?
MD XF

@MDXF hayır, ben (am) sonunda daha fazla eklemeyi planlıyordum
Stephen

10

5 dil ( 05AB1E , Aslında , CJam , Jelly , MATL ), 7 bayt

UD>li)+

Çevrimiçi deneyin!

  • 05AB1E : dizi A000027 (pozitif tamsayılar: a ( n ) = n ; 1 tabanlı)
  • Aslında : dizi A023443 (1: a ( n ) = n −1; 0 tabanlı)içeren negatif olmayan tamsayılar
  • Cjam : dizi A020725 (1: a ( n ) = n + 1; 1-bazlıhariç pozitif tamsayılar)
  • Jöle : sekans A005843 (negatif olmayan çift sayılar: a ( n ) = 2 * n ; 0 bazlı)
  • Matl : sekans A000290 (kareler: bir ( n ) = n- 2 1-bazlı). Çıktı üretildikten sonra hata ile çıkıyor.

7

3 dil: Proton, A000583 ; Python 3, A000578 ; Python 2, A000290

Proton , 49 bayt

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

Çevrimiçi deneyin!

Python 3 , 49 bayt

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

Çevrimiçi deneyin!

Python 2,49 bayt

print(int(input())**(2+(1/2>0)+((''',''')!=',')))

Çevrimiçi deneyin!

açıklama

Proton yok '''...'''yani dizeleri (''',''')olur ('' ',' '')nasılsa sorunlarına neden olmadığı,. Değerlendirir '', (''',''')!=','değerlendirir True.

Python yüzden, bu dizeleri var (''',''')adildir ','böylece (''',''')!=','için değerlendirir False.

Python 2, tamsayılar için taban bölünmesini kullanır 1/2>0, Python 2'de yanlıştır ve Python 3'te doğrudur.


Python satırını açar 1//1;print(int(input())**(2+(1/2>0)+((''',''')!=',')));quit()ve daha sonra JavaScript gibi diller eklerseniz, daha fazla dil ekleyebilir
Stephen

@StepHen Tabii, işe yarayabilir, teşekkürler. Bunu JavaScript eklemeye
başladığımda yapacağım

6

5 Dil, 107 bayt

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/.__id__;'
alert(+prompt()+1);`"""#=;#';q=gets
print(q)#)|<>%2)#`

Perl: A000035

Kullanılması =için ayırıcı olarak s///biz kolayca istemiyoruz kodu hariç tutabilir araçlarla ve kullanma )için ayırıcı olarak q{}sonra araçlarla printing qtüm diğer dillerde, sadece üzerinde çalışabilirsiniz <>endişe verici olmadan doğrudan.

s/1...q/i...#/;
print(<>%2)

Çevrimiçi deneyin!

Yakut: A001477

Ruby'de, //aslında /(böle) /.../(regex eşleşmesi), yani regex sonlandırılıp bir sayıya dönüştürüldüğü sürece, güvenli bir şekilde bölebiliriz. __id__daha kısadır .to_s.ordo zaman sadece biz istemiyoruz kod kalanını içeren 's, sette qiçin getsve printtüm diğer kullanıcılarla.

s=1/2;1//2..."/.__id__;'...';q=gets
print(q)

Çevrimiçi deneyin!

Python 2: A005843

2'yi 3'ten ayırmak için standart numarayı ve istemediğimiz şeyleri """ve yorumları dahil ederek kullanın .

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/...`"""
print(q)

Çevrimiçi deneyin!

Python 3: A008585

Çevrimiçi deneyin!

JavaScript (ES6 tarayıcı): A000027

JS için oldukça basittir, mevcut olanı tekrar kullanmamak printve SpiderMonkey'i kullanmak daha kolay olmamıştı ama bu da mümkün olabilir.

s=1/2;1//2;q=int(input())*([2,3][s>0]);"""/.__id__;'
alert(+prompt()+1);`"""#=;#';q=gets
print(q)#)|<>%2)#`


3

6 dil: Kübik olarak 5/6/7/8/9/10, 44 40 32 bayt

44'ü geçti, hala 44'dür;

DDR'DDR$:_0?{R'DDRDDB'%0}!{+00%}

Bu yazdırır:

Açıklama:

DDR'DDR$:_0?{R'DDRDDB'%0}!{+00%}
DDR'DDR                            get top face sum to 2 (all versions)
       $:                          read input and set notepad to it
         _0                        set notepad to input modulo 2
           ?{...........}          if truthy
             R'DDRDD                reset cube
                    B'              set top face to Cubically version number
                      %0            print top face
                         !{....}   if falsy
                           +00      add 2 to notepad twice
                              %     print

Çevrimiçi deneyin! (Kübik olarak 6x6x6)

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.