30 ngôn ngữ, 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))"""
Chỉnh sửa: Beatnik đã bị xóa do thử nghiệm nguyên thủy trong Beatnik có thể không thực hiện được.
Mã này có các tab trong đó (được xáo trộn bởi Stack Exchange) và một dòng mới, vì vậy đây là 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))""".
Ngoài ra, bạn có thể sao chép và dán mã từ "Thử trực tuyến!" liên kết .
Điều này khá tệ khi chơi golf, nhưng tôi muốn thể hiện ý tưởng rằng, một khi bạn có đủ ngôn ngữ, số byte không còn quan trọng nữa. Phải nói rằng có một số ngôn ngữ tôi vẫn có thể dễ dàng thêm (ví dụ Objeck) nhưng hiện tại quá dài để không hữu ích. Tôi đang cạn kiệt ngôn ngữ tốt, vì vậy tôi có thể dừng ở đây bây giờ.
Chạy tất cả các chương trình với </dev/null 2>/dev/null
(tức là đầu vào trống, STDERR đã thay thế).
Lời giải thích khá dài, vì vậy đây là một bản tóm tắt điều hành:
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 là một dẫn xuất Brainfuck với các lệnh bổ sung, một trong số đó là đầu ra số. Bất cứ điều gì không hợp lệ đều bị bỏ qua, vì vậy chương trình được thực hiện chỉ là
MoO OOM
làm tăng ô lên 1 rồi in ra dưới dạng số.
2. CoffeeScript (bao gồm trình thông dịch)
CoffeeScript thấy:
# comments
###
multiline comment
###;alert 2# comment
mà chỉ đơn giản là cảnh báo 2.
(Vâng, có lẽ sẽ tốt hơn nếu một ngôn ngữ khác lấy vị trí này, nhưng tôi quá lười để cải tổ lại vào thời điểm này: P)
Lisp thường gặp (clisp) thấy:
#|
multiline comment
|#(write(if(= 1/5 .2)26 3))"""
1/5
là một tỷ lệ hợp lý và không bằng 0.2
, vì vậy 3 được in. Quá trình tố tụng """
là một lỗi cú pháp.
Lưu ý rằng print
dường như xuất ra một dòng mới và dấu cách ở trước trong Common Lisp. Tuy nhiên, may mắn thay, write
hoạt động trong cả Sơ đồ chung và gà.
Giới hạn được giới thiệu : Mỗi dòng thứ hai bắt đầu từ dòng đầu tiên cần phải là một biểu thức chính quy hợp lệ.
Mỗi cặp dòng tạo thành một giai đoạn thay thế, thay thế các trường hợp khớp của biểu thức chính quy của dòng thứ nhất bằng dòng thứ hai. Ở giữa, chúng tôi có cặp
"" "
thay thế chuỗi trống ban đầu bằng """
. Dòng trống cuối cùng, không phải là một phần của bất kỳ cặp nào, được coi là giai đoạn khớp, đếm số lượng trận đấu của regex. Có bốn trường hợp của chuỗi rỗng """
, cụ thể là 1"2"3"4
.
Befunge là ngôn ngữ 2D và các hướng dẫn liên quan là
# # 15g,@
trong dòng đầu tiên, và 5
trong 25
dòng. #
bỏ qua hướng dẫn tiếp theo, 15g
lấy char ở vị trí (1, 5)
trong mã ( 5
trong 25
dòng), ,
xuất ra char và @
tạm dừng.
Python thấy:
# comments
25
print(4^2 +7)/2
"""
multiline string
"""
(4^2+7)/2 = (xor(4,2)+7)/2 = (6+7)/2 = 13/2 = 6
, được print
ed.
Rail là ngôn ngữ 2D và việc thực thi bắt đầu từ $
chức năng chính, hướng về phía đông nam. Do đó, phần liên quan của mã là
$'main'
7
o
J
với o
và J
đến từ các dòng được sử dụng bởi TRANSCRIPT. Sau khi xuất 7, tàu chạm vào một J
hướng dẫn không được nhận dạng , làm hỏng chương trình.
Giới hạn được giới thiệu: Không nên đăng ký trước chương trình ETA etaoinsh
.
ETA chỉ nhận ra các chữ cái etaoinsh
và phiên bản chữ hoa của chúng, có nghĩa là mã bắt đầu bằng
NSaIeoe
n...e
đẩy một số cơ sở 7 dựa trên những gì trong delimiters, mà cho SaI
là 624
hay 312 trong hệ thập phân. o
sau đó xuất ra dưới dạng char, rõ ràng là sau modulo 256, đưa ra char 8
(mã điểm 56). e
sau đó cố gắng phân chia với một ngăn xếp trống, thất bại.
Giới hạn được giới thiệu: Không quá một ()
trong bất kỳ cột nào, ()
khớp với việc đọc một cột tại một thời điểm, không có vòng lặp vô hạn gây ra bởi ()
.
Điều này đòi hỏi trình thông dịch Python phải NUMERIC_OUTPUT = True
thiết lập.
Mở đầu là một ngôn ngữ trong đó mỗi dòng được thực hiện riêng biệt. Rất nhiều ký tự được thực thi, nhưng phần quan trọng là
9!
trên dòng thứ hai, xuất ra 9. ()
trong Prelude biểu thị một vòng lặp, nhưng nhờ sự nổi bật của #
s (bật ra từ ngăn xếp), các đỉnh của các ngăn xếp luôn bằng 0 tại thời điểm một vòng lặp được đánh, vì vậy không ai trong số chúng đang chạy ()
Mặc dù hạn chế mã nguồn của Prelude liên quan đến việc giới thiệu một số không gian bên ngoài.
Phần này (và> <>) hoạt động giống như câu trả lời của Martin . Mã liên quan là
# ;n@0ea
Gol> <> là ngôn ngữ 2D và #
phản ánh IP, khiến nó di chuyển sang trái. Nó quấn quanh, đẩy 10, 14 và 0 vào ngăn xếp. @
sau đó xoay ngăn xếp, đưa 10 lên trên cùng, n
xuất nó và ;
tạm dừng chương trình.
Phần này cũng tương tự như câu trả lời của Martin.
cái ác bỏ qua tất cả mọi thứ trừ chữ thường. Bỏ qua một vài ký tự, phần có liên quan là
aeeeaeeaww
trong đó a
gia tăng biến A
, e
là chức năng dệt của cái ác xáo trộn các bit A
và w
đầu ra A
. Do đó chúng tôi đầu ra 1
hai lần, cho 11
.
Nhưng những gì về phần còn lại của các hướng dẫn, và đặc biệt là w
trên dòng cuối cùng? Chúng ta hãy nói rằng đôi khi thật dễ dàng để chỉ lộn xộn với mã và cầu nguyện nó vẫn hoạt động trong mọi thứ mà ở đây, bằng cách nào đó, nó đã ...
Foo xuất ra bất cứ thứ gì giữa hai dấu ngoặc kép, vì vậy phần có liên quan là
"12"
trên dòng thứ hai. Tuy nhiên, vì chúng tôi cần trích dẫn kép sau đó, chúng tôi sử dụng một phương pháp tương tự như câu trả lời của Martin để loại bỏ lỗi Foo, cụ thể là trước đó #-1@
. Không rõ lý do tại sao nó hoạt động trong một ngôn ngữ mà những người lính đối mặt với ngăn xếp trống rỗng và phân chia bởi các lỗi không, nhưng tôi rất vui vì điều đó.
Giống như Python, Ruby thấy:
# comments
25
print(4^2 +7)/2
"""
multiline string
"""
Tuy nhiên, nó có giá trị lưu ý rằng chuỗi multiline thực sự là ba chuỗi riêng biệt ( ""
, "..."
, ""
) nối với nhau. Đầu ra dòng in (4^2+7) = xor(4,2)+7 = 6+7 = 13
, trước khi lỗi cố gắng chia nil
cho 2.
Phần này giống như phần Gol> <>, ngoại trừ @
đưa phần 14 lên trên thay vào đó, được xuất ra.
Brian & Chuck là một dẫn xuất BF với hai băng, trong đó con trỏ lệnh của băng là con trỏ bộ nhớ của băng khác. Trong trường hợp không có ```
, hai dòng đầu tiên của mã nguồn được sử dụng để khởi tạo các băng.
Các ký tự liên quan trong hai dòng đầu tiên là:
?15
# >.>.
Băng ?
trong Brian chuyển giao quyền kiểm soát cho Chuck trong tế bào được chỉ vào (cái #
) là khác không. Chuck sau đó thực thi >.>.
, xuất ra hai ký tự sau dấu chấm hỏi.
Sử dụng STL
cho không gian, tab và nguồn cấp dữ liệu tương ứng, bắt đầu chương trình là:
SSSTSSSSL
TL
STL
L
L
Dòng đầu tiên đẩy 16 ( +10000
cơ sở 2), dòng trước TLST
in nó dưới dạng số. Ba dòng tiếp theo dừng chương trình.
Lưu ý, tuy nhiên, chương trình này là thông dịch viên cụ thể. Phần còn lại của các lỗi cú pháp mã trong hầu hết các trình thông dịch, do đó, cần có một trình thông dịch nhẹ nhàng hơn, giống như một trình thông dịch được liên kết ở trên.
Trong dòng đầu tiên, một loạt các lệnh được thực thi, nhưng các lệnh có liên quan là
kkmmao#/
Do hạn chế của ETA, chúng tôi sử dụng k
để giảm biến B thay vì a
tăng nó. kk
giảm B xuống -2 và mm
bình phương B hai lần thành 16, tăng lên 17 với a
. Điều này sau đó được xuất ra với o
.
#
sau đó được sử dụng để đặt lại B về 0 và /
khiến chương trình bị lỗi thông qua phép chia cho 0.
Giới hạn được giới thiệu: Không có hướng dẫn trước chương trình Axo thay đổi hướng của IP
Một lần nữa, một loạt các lệnh được thực thi trong dòng đầu tiên, nhưng các lệnh có liên quan là
# # 15 ,@ 9 9 + { \
Axo là một ngôn ngữ 2D như Befunge, và #
tương tự như một cây cầu bỏ qua hướng dẫn tiếp theo, nhưng chỉ khi đỉnh của ngăn xếp bằng không. 15,
đẩy vào ngăn xếp, nhưng ngăn xếp được làm trống với @
. 99+
sau đó đẩy 18, {
đầu ra và \
dừng lại.
Labyrinth là một ngôn ngữ 2D khác và các hướng dẫn được thực hiện là
#|#
[9!@
#
đẩy chiều dài của ngăn xếp, bằng 0 lần đầu tiên. |
là bit OR, không thay đổi bất cứ điều gì vì ngăn xếp chỉ có 0s tại thời điểm này và lần thứ hai #
bây giờ đẩy 1 do số 0 đơn độc. Chúng tôi rẽ phải do 1, 9
chuyển đổi 1 này thành 1*10+9 = 19
, !
in nó và @
tạm dừng.
Chương trình này dựa trên thực tế [
hiện tại không phải là một hướng dẫn được công nhận và do đó được coi là một bức tường.
Giới hạn được giới thiệu: Tất cả +
các phải có ít nhất một không gian trước
Nếu chúng ta loại bỏ các ký tự không được nhận dạng, phần có liên quan của mã là
, +.. +
,
là đầu vào, nhưng vì chúng ta dẫn từ /dev/null
không có, đẩy 0 vào ngăn xếp. A +
với n >= 5
các khoảng trắng trước đẩy n-5
, vì vậy lệnh tiếp theo đẩy 2. ..
sau đó xuất hai chữ số này theo thứ tự ngược lại.
Tiếp theo chúng ta có một +
không gian trước duy nhất, trùng lặp. Tuy nhiên, ngăn xếp trống, vì vậy chúng tôi lỗi.
Phần liên quan duy nhất cho phân hạch là
*"12"L
L
sinh ra một nguyên tử di chuyển sang trái, "21"
in 21 và *
dừng lại.
Giới hạn giới thiệu: Không .
trước lần đầu tiên[
Điều này đòi hỏi một trình thông dịch cung cấp 0 trên EOF và có các ô 8 bit. Mã liên quan là
,+-[>.>.-+.>,>]-[>+<-----]>-..
Inital -
là để bù lại +
, và lần đầu tiên [...]
không được thực thi vì ô là 0. Phần sau đây -[>+<-----]>-
đặt ô thành mã char 2
và ..
xuất ra hai lần.
Julia thấy:
# comments
25
print(4^2 +7)/2
Những gì được in là 4^2+7 = pow(4,2)+7 = 16+7 = 23
và các lỗi chương trình cố gắng chia nothing
cho 2. Lưu ý rằng Julia dường như không bận tâm đến thực tế rằng phần còn lại của mã sẽ gây ra lỗi cú pháp.
Lily thấy:
# comment
#[
multiline comment
]## comment
print (7/6*24)# comment
7/6*24 = 1*24 = 24
được in.
GolfScript thấy:
# comments
25
print(
GolfScript dựa trên ngăn xếp, vì vậy 25 được đẩy lên ngăn xếp, sau đó xuất hiện và in bằng print
. (
sau đó cố gắng giảm chuỗi rỗng ẩn trên ngăn xếp, lỗi này và lỗi chương trình.
Chicken Scheme có #| ... |#
cú pháp nhận xét đa dòng giống như Common Lisp. Tuy nhiên, trong
(write(if(= 1/5 .2)26 3))
1/5
là một phao mà là tương đương 0.2
, vì vậy 26 được outputted thay thế.
Thue là một ngôn ngữ dựa trên việc viết lại chuỗi. Phần liên quan đầu tiên là
f::=~27
::=
trong đó xác định một sự thay thế f -> 27
sau đó biểu thị sự kết thúc của sự thay thế bằng ::=
. Các đơn độc f
trong if
sau đó được thay thế bằng 27
, được xuất ra.
Perl 6 có một cú pháp nhận xét mới, cụ thể #`(some bracket)
là một nhận xét đa dòng cho đến khung phù hợp. Do đó, Perl 6 thấy:
# comments
#`{
multiline comment
}# comment
print (7/6*24)# comment
mà in 7/6*24 = 28
.
Picolisp thấy:
# comment
#{
multiline comment
}#(prin 29)
trong đó in 29. Dòng sau đó gây ra lỗi cú pháp.
TRANSCRIPT là một esolang theo chủ đề được mô phỏng theo các cuộc phiêu lưu văn bản. Các dòng không được nhận dạng bị bỏ qua (cho phép bạn thêm văn bản câu chuyện / hương vị bổ sung trong số các hướng dẫn mã thực tế), vì vậy các dòng có liên quan là:
Jo is here.
>Jo, 30
>X Jo
Dòng đầu tiên khai báo một biến chuỗi Jo
, sử dụng tên hai chữ cái vì tên một chữ cái dường như không thành công. Dòng thứ hai đặt chuỗi này thành "30"
, được xuất ra bởi X
("tests") trong dòng thứ ba.
2.7.1
để2.7.n
. (Trên thực tế, sweerpotato làm điều đó với các phiên bản chính.)