30 bahasa, 248 byte, 248/30 ^ 3 = 0,009185
#|#?15g,@ kkmNmSaIeoe99+{\#/-;n@0ea
#[9!@>.>.eeaww#-1@*"12" L
#{
###
#`{
25
print(4^2 +7)/2
"""
Jo is here.
$'main'MoO OOM
7
>Jo, 30
>X Jo
f::=~27
::=]##}#(prin 29)
print (7/6*24)###;alert 2#-[>+<-----]>-.|#(write(if(= 1/5 .2)26 3))"""
Sunting: Beatnik dihapus karena pengujian primitif di Beatnik mungkin tidak dimungkinkan.
Kode memiliki tab di dalamnya (yang menjadi hancur oleh Stack Exchange) dan baris tambahan, jadi inilah xxd
:
00000000: 237c 233f 3135 672c 4020 2020 0920 2020 #|#?15g,@ .
00000010: 206b 6b6d 4e6d 5361 4965 6f65 3939 2b7b kkmNmSaIeoe99+{
00000020: 5c23 2f2d 3b6e 4030 6561 0a23 5b39 2140 \#/-;n@0ea.#[9!@
00000030: 3e2e 3e2e 6565 6177 7723 2d31 402a 2231 >.>.eeaww#-1@*"1
00000040: 3222 094c 0a23 7b20 090a 2323 230a 2360 2".L.#{ ..###.#`
00000050: 7b0a 3235 0a70 7269 6e74 2834 5e32 202b {.25.print(4^2 +
00000060: 3729 2f32 0a0a 0a22 2222 0a4a 6f20 6973 7)/2...""".Jo is
00000070: 2068 6572 652e 0a24 276d 6169 6e27 4d6f here..$'main'Mo
00000080: 4f20 4f4f 4d0a 2037 0a3e 4a6f 2c20 3330 O OOM. 7.>Jo, 30
00000090: 0a3e 5820 4a6f 0a66 3a3a 3d7e 3237 0a3a .>X Jo.f::=~27.:
000000a0: 3a3d 5d23 237d 2328 7072 696e 2032 3929 :=]##}#(prin 29)
000000b0: 0a70 7269 6e74 2028 372f 362a 3234 2923 .print (7/6*24)#
000000c0: 2323 3b61 6c65 7274 2032 232d 5b3e 2b3c ##;alert 2#-[>+<
000000d0: 2d2d 2d2d 2d5d 3e2d 2e7c 2328 7772 6974 -----]>-.|#(writ
000000e0: 6528 6966 283d 2031 2f35 202e 3229 3236 e(if(= 1/5 .2)26
000000f0: 2033 2929 2222 220a 3))""".
Atau, Anda dapat menyalin dan menempelkan kode dari ini "Coba online!" tautan .
Ini sangat buruk golf, tetapi saya ingin mengemukakan gagasan bahwa, setelah Anda memiliki bahasa yang cukup, jumlah byte tidak terlalu penting. Setelah mengatakan bahwa ada beberapa bahasa saya masih bisa dengan mudah menambahkan (misalnya Objeck) tetapi saat ini terlalu lama untuk berguna. Saya kehabisan bahasa yang baik, jadi saya mungkin berhenti di sini untuk saat ini.
Jalankan semua program dengan </dev/null 2>/dev/null
(mis. Input kosong, STDERR surpress).
Penjelasannya cukup panjang, jadi inilah ringkasan eksekutif:
No. Lang. Non-esolang? 2D esolang? BF/BF-deriv?
--------------------------------------------------------------------------
1 COW ✓
2 CoffeeScript ✓
3 Common Lisp ✓
4 Retina
5 Befunge-93 ✓
6 Python 2 ✓
7 Rail ✓
8 ETA
9 Prelude
10 Gol><> ✓
11 evil
12 Foo ✓
13 Ruby ✓
14 ><> ✓
15 Brian & Chuck ✓
16 Whitespace
17 3var
18 Axo ✓
19 Labyrinth ✓
20 Starry
21 Fission ✓
22 Brainfuck ✓
23 Julia ✓
24 Lily ✓
25 GolfScript
26 Chicken Scheme ✓
27 Thue
28 Perl 6 ✓
29 Picolisp ✓
30 TRANSCRIPT
COW adalah turunan Brainfuck dengan perintah tambahan, salah satunya adalah output numerik. Apa pun yang tidak valid diabaikan, jadi program yang dijalankan hanyalah
MoO OOM
yang menambah sel ke 1 lalu mencetaknya sebagai angka.
2. CoffeeScript (termasuk juru bahasa)
CoffeeScript melihat:
# comments
###
multiline comment
###;alert 2# comment
yang hanya memberi peringatan 2.
(Ya, mungkin akan lebih baik jika bahasa lain mengambil slot ini, tapi saya terlalu malas untuk melakukan perombakan pada saat ini: P)
Common Lisp (clisp) melihat:
#|
multiline comment
|#(write(if(= 1/5 .2)26 3))"""
1/5
adalah rasional dan tidak sama dengan 0.2
, jadi 3 dicetak. Prosesnya """
adalah kesalahan sintaksis.
Catatan yang print
tampaknya menampilkan baris sebelumnya dan ruang tambahan di Common Lisp. Namun, untungnya, write
bekerja di Common Lisp dan Chicken Scheme.
Batasan yang diperkenalkan : Setiap baris kedua mulai dari yang pertama harus merupakan regex yang valid.
Setiap pasangan garis membentuk tahap penggantian, menggantikan contoh kecocokan dari regex baris pertama dengan baris kedua. Di tengah, kami memiliki pasangan
"" "
yang menggantikan string kosong awal dengan """
. Baris kosong terakhir, bukan bagian dari pasangan mana pun, diperlakukan sebagai tahap pertandingan, menghitung jumlah pertandingan regex. Ada empat contoh string kosong di """
, yaitu 1"2"3"4
.
Befunge adalah bahasa 2D, dan instruksi yang relevan adalah
# # 15g,@
di baris pertama, dan 5
di 25
baris. #
lewati instruksi berikutnya, 15g
dapatkan char pada posisi (1, 5)
dalam kode ( 5
in the 25
line), ,
output char dan @
stop.
Python melihat:
# comments
25
print(4^2 +7)/2
"""
multiline string
"""
(4^2+7)/2 = (xor(4,2)+7)/2 = (6+7)/2 = 13/2 = 6
, yang print
diedit.
Rail adalah bahasa 2D, dan eksekusi dimulai dari $
fungsi utama, menuju tenggara. Dengan demikian, bagian kode yang relevan adalah
$'main'
7
o
J
dengan o
dan J
berasal dari jalur yang digunakan oleh TRANSCRIPT. Setelah menghasilkan 7, kereta memukul J
instruksi yang tidak dikenal , yang crash program.
Batasan yang diperkenalkan: Karakter sebelum program ETA tidak boleh masuk etaoinsh
.
ETA hanya mengenali huruf etaoinsh
dan versi huruf besar mereka, yang berarti kode dimulai dengan
NSaIeoe
n...e
mendorong nomor basis 7 berdasarkan pada apa yang ada dalam pembatas, untuk SaI
apa 624
, atau 312 dalam desimal. o
kemudian output sebagai char, ternyata setelah modulo 256, memberikan char 8
(titik kode 56). e
kemudian mencoba untuk membagi dengan tumpukan kosong, yang gagal.
Batasan yang diperkenalkan: Tidak lebih dari satu ()
di kolom mana pun, ()
cocok membaca kolom pada satu waktu, tidak ada loop tak terbatas yang disebabkan oleh ()
.
Ini membutuhkan juru bahasa Python untuk NUMERIC_OUTPUT = True
mengatur.
Prelude adalah bahasa di mana setiap baris dieksekusi secara terpisah. Banyak karakter dieksekusi, tetapi yang penting adalah
9!
pada baris kedua, yang menghasilkan 9. ()
dalam Prelude menunjukkan sebuah loop, tetapi berkat keunggulan #
s (yang muncul dari tumpukan), bagian atas tumpukan selalu 0 pada saat loop dipukul, sehingga tidak satupun dari mereka dijalankan. Pembatasan kode sumber Prelude tentang ()
memperkenalkan beberapa ruang asing.
Bagian ini (dan> <>) bekerja seperti jawaban Martin . Kode yang relevan adalah
# ;n@0ea
Gol> <> adalah bahasa 2D dan #
mencerminkan IP, membuatnya bergerak ke kiri. Itu membungkus, mendorong 10, 14 dan 0 ke tumpukan. @
kemudian memutar tumpukan, membawa 10 ke atas, n
mengeluarkannya dan ;
menghentikan program.
Bagian ini juga mirip dengan jawaban Martin.
kejahatan mengabaikan segalanya kecuali huruf kecil. Mengabaikan beberapa karakter lagi, bagian yang relevan adalah
aeeeaeeaww
di mana a
peningkatan variabel A
, e
adalah fungsi menenun kejahatan yang mengocok bit A
, dan w
output A
. Karenanya kita menghasilkan 1
dua kali, memberi 11
.
Tetapi bagaimana dengan sisa instruksi, dan terutama w
pada baris terakhir? Katakan saja bahwa kadang-kadang lebih mudah untuk hanya mengacaukan kode dan berdoa itu masih berfungsi dalam segala hal yang, di sini, entah bagaimana ...
Foo menampilkan apa pun di antara tanda kutip ganda, jadi bagian yang relevan adalah
"12"
di baris kedua. Namun, karena kita perlu tanda kutip ganda nanti kita menggunakan metode yang mirip dengan jawaban Martin untuk membuat kesalahan Foo, yaitu sebelumnya #-1@
. Tidak jelas mengapa itu bekerja dalam bahasa yang digunakan prajurit dalam menghadapi tumpukan kosong dan pembagian dengan nol kesalahan, tapi saya senang itu terjadi.
Seperti Python, Ruby melihat:
# comments
25
print(4^2 +7)/2
"""
multiline string
"""
Namun, perlu dicatat bahwa string multiline sebenarnya tiga senar yang terpisah ( ""
, "..."
, ""
) concatenated bersama-sama. Garis cetak menampilkan (4^2+7) = xor(4,2)+7 = 6+7 = 13
, sebelum gagal mencoba membagi nil
dengan 2.
Bagian ini sama dengan bagian Gol> <>, kecuali @
membawa 14 ke atas sebagai gantinya, yang akan dikeluarkan.
Brian & Chuck adalah turunan BF dengan dua kaset, di mana pointer instruksi satu tape adalah pointer memori tape lainnya. Dengan tidak adanya ```
, dua baris pertama dari kode sumber digunakan untuk menginisialisasi kaset.
Karakter yang relevan di dua baris pertama adalah:
?15
# >.>.
Dalam ?
rekaman Brian melewati kontrol ke Chuck dalam sel yang menunjuk (tidak #
) adalah nol. Chuck kemudian mengeksekusi >.>.
, mengeluarkan dua karakter setelah tanda tanya.
Menggunakan STL
masing-masing untuk ruang, tab, dan garis, awal program adalah:
SSSTSSSSL
TL
STL
L
L
Baris pertama mendorong 16 ( +10000
basis 2), yang sebelumnya TLST
mencetaknya sebagai angka. Tiga baris baru berikutnya menghentikan program.
Namun, perhatikan bahwa program ini khusus untuk penerjemah. Sisa kesalahan sintaksis kode pada sebagian besar penafsir, sehingga diperlukan juru bahasa yang lebih lunak, seperti yang ditautkan di atas.
Dari baris pertama, banyak instruksi dijalankan, tetapi yang relevan adalah
kkmmao#/
Karena pembatasan ETA, kami menggunakan k
untuk mengurangi variabel B daripada a
menambahnya. kk
mengurangi B ke -2 dan mm
kotak B dua kali menjadi 16, yang bertambah menjadi 17 dengan a
. Ini kemudian di-output dengan o
.
#
kemudian digunakan untuk mengatur ulang B ke 0, dan /
menyebabkan program untuk kesalahan melalui pembagian oleh 0.
Batasan diperkenalkan: Tidak ada instruksi sebelum program Axo yang mengubah arah IP
Sekali lagi, banyak instruksi dieksekusi di baris pertama, tetapi yang relevan
# # 15 ,@ 9 9 + { \
Axo adalah bahasa 2D seperti Befunge, dan #
juga jembatan yang melewatkan instruksi berikutnya, tetapi hanya jika bagian atas tumpukan adalah nol. 15,
dorong ke tumpukan, tetapi tumpukan dikosongkan dengan @
. 99+
kemudian mendorong 18, {
output dan \
berhenti.
Labyrinth adalah bahasa 2D lain, dan instruksi yang dijalankan adalah
#|#
[9!@
#
mendorong panjang tumpukan, yaitu 0 pertama kali. |
adalah bitwise ATAU, tidak mengubah apa pun karena tumpukan hanya memiliki 0 pada saat ini, dan yang kedua #
sekarang mendorong 1 karena nol tunggal. Kami berbelok ke kanan karena angka 1, 9
mengonversi angka 1 menjadi 1*10+9 = 19
, !
mencetaknya, dan @
berhenti.
Program ini bergantung pada fakta bahwa [
saat ini tidak ada instruksi yang diakui, dan karenanya diperlakukan sebagai tembok.
Batasan yang diperkenalkan: Semua +
s harus memiliki setidaknya satu ruang sebelumnya
Jika kami menghapus karakter yang tidak dikenal, bagian kode yang relevan adalah
, +.. +
,
adalah input, tetapi karena kita pipa dari /dev/null
tidak ada, mendorong 0 ke stack. A +
dengan n >= 5
spasi sebelumnya mendorong n-5
, sehingga instruksi berikutnya mendorong 2. ..
lalu menampilkan dua digit ini dalam urutan terbalik.
Selanjutnya kita memiliki +
dengan satu ruang sebelumnya, yang duplikat. Namun, tumpukannya kosong, jadi kami galat.
Satu-satunya bagian yang relevan untuk Fission adalah
*"12"L
L
memunculkan atom bergerak ke kiri, "21"
mencetak 21 dan *
berhenti.
Pembatasan yang diperkenalkan: Tidak .
sebelum yang pertama[
Ini membutuhkan penerjemah yang memberikan 0 pada EOF dan memiliki sel 8-bit. Kode yang relevan adalah
,+-[>.>.-+.>,>]-[>+<-----]>-..
Inital -
adalah untuk mengimbangi +
, dan yang pertama [...]
tidak dieksekusi karena sel adalah 0. Berikut ini -[>+<-----]>-
mengatur sel ke kode char 2
, dan ..
mengeluarkannya dua kali.
Julia melihat:
# comments
25
print(4^2 +7)/2
Apa yang dicetak adalah 4^2+7 = pow(4,2)+7 = 16+7 = 23
, dan kesalahan program keluar mencoba untuk membagi nothing
oleh 2. Perhatikan bahwa Julia tampaknya tidak keberatan dengan fakta bahwa sisa kode akan menyebabkan kesalahan sintaksis pula.
Lily melihat:
# comment
#[
multiline comment
]## comment
print (7/6*24)# comment
7/6*24 = 1*24 = 24
dicetak.
GolfScript melihat:
# comments
25
print(
GolfScript berbasis stack, jadi 25 didorong ke stack, lalu muncul dan dicetak bersama print
. (
kemudian mencoba untuk mengurangi string kosong implisit pada tumpukan, yang gagal dan kesalahan program.
Chicken Scheme memiliki #| ... |#
sintaks komentar multiline yang sama dengan Common Lisp. Namun, dalam
(write(if(= 1/5 .2)26 3))
1/5
adalah pelampung yang adalah sama dengan 0.2
, sehingga 26 dikeluarkan sebagai gantinya.
Thue adalah bahasa yang didasarkan pada penulisan ulang string. Bagian yang relevan pertama adalah
f::=~27
::=
yang mendefinisikan substitusi f -> 27
kemudian menunjukkan akhir dari substitusi dengan ::=
. Satu-satunya yang f
masuk if
kemudian diganti dengan 27
, yang dikeluarkan.
Perl 6 memiliki sintaks komentar baru, yaitu #`(some bracket)
yang merupakan komentar multiline hingga braket yang cocok. Jadi, Perl 6 melihat:
# comments
#`{
multiline comment
}# comment
print (7/6*24)# comment
yang mencetak 7/6*24 = 28
.
Picolisp melihat:
# comment
#{
multiline comment
}#(prin 29)
yang mencetak 29. Baris sesudahnya kemudian menyebabkan kesalahan sintaks.
TRANSCRIPT adalah esolang tematik yang dimodelkan setelah petualangan teks. Baris yang tidak dikenal diabaikan (yang memungkinkan Anda untuk menambahkan teks cerita / rasa tambahan di antara instruksi kode yang sebenarnya), sehingga baris yang relevan adalah:
Jo is here.
>Jo, 30
>X Jo
Baris pertama mendeklarasikan variabel string Jo
, menggunakan nama dua huruf karena nama satu huruf tampaknya gagal. Baris kedua mengatur string ini ke "30"
, yang dikeluarkan oleh X
("memeriksa") di baris ketiga.
2.7.1
untuk2.7.n
. (Sebenarnya, sweerpotato melakukan hal itu dengan versi-versi utama.)