Penafian: Ini sangat terinspirasi oleh "Polyglot the OEIS!" tetapi memperbaiki masalah yang menyebabkan penutupan (lihat bagian output) dan diposting kembali untuk tidak membatalkan jawaban.
pengantar
Kita semua tahu dan menyukai ensiklopedia online dari integer sequence ( OEIS ). Jadi bagaimana jika kita membuat versi offline dari urutan yang menarik? Yah, itu akan agak terlalu mudah, bukankah begitu dan bagaimana Anda memilih urutan dengan antarmuka standar kami !? Tidak. Kami membutuhkan solusi yang lebih mudah untuk ini. Poliglot!
Memasukkan
Input Anda akan berupa bilangan bulat non-negatif n
.
Keluaran
Output Anda akan menjadi
- The
n
-th masuknya urutan Oei OR n
Entri pertama dari urutan OEIS.
Anda dapat menggunakan indeks berbasis 1 atau 0 sesuai keinginan.
Untuk tidak membuat pertanyaan ini, duplikat urutan konstan printer integer serbaguna dilarang. Ini juga harus meningkatkan tingkat kesulitan pengiriman dan menghindari solusi "membosankan";)
Urutan tidak konstan jika ada dua anggota urutan yang tidak sama.
Uhm, jadi di mana Tantangannya?
Anda harus polyglot fungsi di atas. Itu jika Anda mendukung bahasa A, B dan C semua harus menerapkan urutan OEIS yang berbeda. Pilihan urutan tidak terbatas kecuali bahwa Anda memerlukan yang berbeda untuk semua bahasa.
Yaitu, jika Anda menjalankan program yang disediakan dalam bahasa A, maka urutan X akan dihasilkan, jika Anda menjalankan program yang disediakan dalam bahasa B, maka urutan Y akan dihasilkan (dengan X! = Y) dan jika Anda menjalankan program yang disediakan dalam bahasa C, maka urutan Z akan dihasilkan (dengan X! = Z && Y! = Z).
Yang menang?
Jawaban dengan pasangan urutan / bahasa terbanyak menang. Tie-breaker pertama adalah ukuran kode (dalam byte) dengan yang lebih rendah lebih baik. Tie-breaker kedua adalah waktu pengiriman dengan sebelumnya menjadi lebih baik.
Ada Kata / Aturan akhir?
- Anda harus mendeklarasikan bahasa mana yang akan menghasilkan urutan mana.
- Aturan I / O standar berlaku.
- Jika pengkodean berbeda digunakan antara bahasa, kedua program harus menggunakan urutan byte yang sama.
- Revisi Bahasa (Python 2/3) memang dihitung sebagai bahasa yang berbeda. Implementasi bahasa yang berbeda (seperti Browser JS vs Node.js) juga dihitung sebagai bahasa yang berbeda.
- Celah standar berlaku.
Jawaban:
3 bahasa (1 byte) - Pyth ( A001477 ), MATL ( A000027 ), Braingolf ( A000217 )
Bagaimana?
Q
melakukan hal berikut:Dalam MATL, artinya
+ 1
, jadi pada dasarnya dievaluasiinput + 1
.Dalam Pyth, itu berarti input, jadi itu hanya output input.
Dalam Braingolf, itu adalah built-in untuk bilangan segitiga.
Mini-polyglot
Pyth dapat digantikan oleh salah satu bahasa berikut: GolfScript , Pyke , Brachylog atau Brain-Flak .
sumber
10 bahasa, 122 byte
Saya pasti bisa menambahkan banyak lagi. 1-diindeks kecuali ditentukan lain.
Perhatikan bahwa saya mungkin tidak terkini tentang tautan TIO ketika saya yakin perubahan yang lebih baru tidak memengaruhi program yang lebih lama - Anda dapat mengujinya jika Anda mau, tetapi menyalin 10+ tautan TIO baru setiap kali saya melakukan perubahan akan melelahkan setelah sedikit. Saya akan menyalin yang baru setiap 5 pembaruan.
cQuents v0, A000007
Kode yang relevan:
#|A=1:0;
#|A
menangkap input dan ada untuk komentar Python.=1
berarti item pertama adalah1
,:0
berarti sisanya0
, menghasilkann
input istilah yang diberikann
. cQuents v0 memiliki bug / fitur aneh yang ketika token yang tidak terduga tetapi valid, seperti;
, dibaca, menyebabkan parsing berakhir.Cobalah online!
PingPong, A001478
Kode yang relevan:
#|A=1:0;~@
Keluaran melalui kode keluar.Diindeks 0.
#
melewatkan char berikutnya.=
tidak melakukan apa pun di sini.1
mendorong1
, dan:
mencetak1
ke STDOUT.0
mendorong0
.)
tidak melakukan apa-apa.;
mendorong input,~
muncul dan mendorong-n-1
.@
berakhir. Kode keluar adalah bagian atas tumpukan.Cobalah online!
axo, A001477
Kode yang relevan:
}{\
Diindeks 0.
}
membaca dan mendorong bilangan bulat dari STDIN (memerlukan trailing baris baru karena alasan tertentu),{
mencetak bagian atas tumpukan, dan\
mengakhiri program. Saya tidak yakin apa yang dilakukan karakter sebelumnya, tetapi tidak ada yang penting dalam kasus ini.Cobalah online!
brainfuck, A000027
Kode yang relevan:
,[.,]
Program kucing sederhana dari esolangs.org. Menghasilkan input.
Cobalah online!
> <>, A000030
Kode yang relevan:
#
...;oi
#
cermin dan membungkus ke kanan, yang mengarahkannya untuk membacaio;
, yang menampilkan karakter pertama dari input. Diindeks 0.Cobalah online!
Ruby, A023443
Kode yang relevan:
print (0 and gets.to_i-1
...)
Diindeks 0. Mencetak input minus 1.
0
benar di Ruby, tetapi falsey dengan Python.Cobalah online!
Python 3, A000578
Kode yang relevan:
print (0 and gets.to_i-1 or int(input())**(2+(1/2>0)));quit()
Merobek posting asli HyperNeutrino, tetapi ini adalah polyglot yang cukup terkenal.
quit()
mengakhiri program.Cobalah online!
Python 2, A000290
Kode yang relevan:
#coding:utf-8
diperlukan untuk barang-barang Arang untuk bekerja. Juga merobek pos asli HyperNeutrino.quit()
mengakhiri program.Cobalah online!
Arang, A001489
Kode yang relevan:
⎚I±N»
Diindeks 0.
⎚
membersihkan konsol (Charcoal mencetak ASCII apa adanya) danI±N
mencetak negatif dari input.»
adalah kesalahan parse dan menghentikan program.Terima kasih kepada ASCII-only untuk bantuan dalam obrolan.
Cobalah online!
Kardinal, A020725
Kode yang relevan:
Tambahkan 1 ke input, dan remas semua pointer lainnya.
Cobalah online!
sumber
5 bahasa ( 05AB1E , Sebenarnya , CJam , Jelly , MATL ), 7 byte
Cobalah online !:
sumber
3 bahasa: Proton, A000583 ; Python 3, A000578 ; Python 2, A000290
Proton , 49 byte
Cobalah online!
Python 3 , 49 byte
Cobalah online!
Python 2 , 49 byte
Cobalah online!
Penjelasan
Proton tidak memiliki
'''...'''
string, sehingga(''',''')
menjadi('' ',' '')
, yang entah bagaimana tidak menyebabkan masalah. Ini mengevaluasi''
, membuat(''',''')!=','
mengevaluasiTrue
.Python memang memiliki string ini, sehingga
(''',''')
hanya','
begitu(''',''')!=','
mengevaluasi keFalse
.Python 2 menggunakan pembagian lantai untuk bilangan bulat, jadi
1/2>0
salah dalam Python 2 dan true dalam Python 3.sumber
1//1;print(int(input())**(2+(1/2>0)+((''',''')!=',')));quit()
dan kemudian menambahkan bahasa seperti JavaScript sesudahnya5 Bahasa, 107 byte
Perl: A000035
Menggunakan
=
sebagai pembatas untuks///
sarana kita dapat dengan mudah mengecualikan kode kita tidak ingin, dan menggunakan)
sebagai pembatas untukq{}
sarana setelahprint
ingq
dalam semua bahasa lainnya, kita hanya dapat bekerja pada<>
langsung, tanpa mengkhawatirkan.Cobalah online!
Ruby: A001477
Di Ruby,
//
sebenarnya/
(dibagi dengan)/.../
(pertandingan regex), jadi selama regex diakhiri, dan dikonversi ke angka, kita dapat membaginya dengan aman.__id__
lebih pendek dari.to_s.ord
, maka kita hanya berisi sisa kode yang tidak kita inginkan dalam'
s, setq
kegets
danprint
dengan yang lainnya.Cobalah online!
Python 2: A005843
Menggunakan trik standar untuk membedakan 2 dari 3 dan melampirkan hal-hal yang tidak kita inginkan
"""
dan komentar.Cobalah online!
Python 3: A008585
Cobalah online!
JavaScript (browser ES6): A000027
Cukup mudah untuk JS, itu berakhir menjadi lebih mudah untuk tidak menggunakan kembali yang sudah ada
print
dan pergi untuk SpiderMonkey, tapi itu juga mungkin.sumber
6 bahasa: Cubically 5/6/7/8/9/10,
444032 byteDicoret 44 masih teratur 44; (
Ini mencetak:
Penjelasan:
Cobalah online! (Cubically 6x6x6)
sumber