30 dil, 248 bayt, 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))"""
Düzenleme: Beatnik'te ilkellik testi yapılamayacağından Beatnik kaldırıldı.
Kodun içinde (Stack Exchange tarafından yönetilen) sekmeleri ve izleyen bir satırsonu var, işte burada 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))""".
Alternatif olarak, bu kodu "Çevrimiçi deneyin!" Den kopyalayıp yapıştırabilirsiniz. bağlantı .
Bu oldukça kötü bir şekilde golf oynuyor, ancak yeterince diliniz olduğunda bayt sayısının artık çok önemli olmadığı fikrinden vazgeçmek istedim. Kolayca ekleyebileceğim bazı diller olduğunu söyleyerek (örneğin Objeck) ancak şu anda faydalı olmak için çok uzun. Yine de iyi dillerden bitiyorum, o yüzden burada durabilirim.
Tüm programları </dev/null 2>/dev/null
(örn. Boş giriş, basılı STDERR) çalıştırın.
Açıklama oldukça uzun, işte yönetici özeti:
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, biri sayısal çıktı olan ek komutlara sahip bir Brainfuck türevidir. Geçersiz bir şey yoksayılır, bu nedenle yürütülen program yalnızca
MoO OOM
hücreyi 1'e yükselten sayıyı yazdırır.
CoffeeScript şunları görür:
# comments
###
multiline comment
###;alert 2# comment
hangi sadece 2 uyarır.
(Evet, bu dilimi başka bir dilde almış olsaydı daha iyi olurdu, ama bu noktada değişiklik yapmak için çok tembelim: P)
Common Lisp (clisp) şöyle görür:
#|
multiline comment
|#(write(if(= 1/5 .2)26 3))"""
1/5
rasyoneldir ve eşittir değildir 0.2
, bu nedenle 3 basılır. İşlem """
bir sözdizimi hatası.
print
Common Lisp'te bir önceki satırdan ve sondan bir boşluk çıktığını görün . Ancak, neyse ki, write
hem Common Lisp hem de Chicken Scheme'de çalışır.
Kısıtlamalar : İlk baştan başlayan her ikinci satırın geçerli bir regex olması gerekiyor.
Her satır çifti, ilk satırın regex'in eşleşme örneklerini ikinci satırla değiştirerek değiştirme aşaması oluşturur. Ortada çift var
"""
İlk boş dize ile değiştirir """
. Herhangi bir çiftin parçası olmayan son boş satır, regex'in maç sayısını sayarak bir maç aşaması olarak değerlendirilir. Boş dize dört örnekleri de vardır """
yani 1"2"3"4
.
Befunge 2B bir dildir ve ilgili talimatlar
# # 15g,@
Birinci çizgi, ve 5
de 25
hat. #
Bir sonraki talimat atlar 15g
pozisyonda kömürü alır (1, 5)
kodu (içinde 5
de 25
hat), ,
kömürü verir ve @
durur.
Python görüyor:
# comments
25
print(4^2 +7)/2
"""
multiline string
"""
(4^2+7)/2 = (xor(4,2)+7)/2 = (6+7)/2 = 13/2 = 6
, print
ed alır .
Ray 2B bir dildir ve yürütme $
ana işlevden başlar ve güneydoğu yönünde ilerler. Dolayısıyla, kodun ilgili kısmı
$'main'
7
o
J
ile o
ve J
transkript tarafından kullanılan hatlar gelen. 7 çıkışından sonra, tren J
, programın çökmesine neden olan tanınmayan bir eğitime çarpar .
Kısıtlamalar: ETA programından önceki karakterlerde olmamalıdır etaoinsh
.
ETA sadece harfleri etaoinsh
ve onların büyük harf versiyonlarını tanır , bu da kodun başlayacağı anlamına gelir.
NSaIeoe
n...e
sınırlayıcıların içinde ne SaI
olduğu 624
, ya da ondalık sayıdaki 312 değerine dayanarak bir taban 7 numarasını iter . o
daha sonra char olarak çıktı olarak, görünüşe göre modulo 256'dan sonra char'ı verir 8
(kod noktası 56). e
sonra başarısız olan boş bir yığınla bölmeye çalışır.
Kısıtlamalar:()
Herhangi bir sütunda birden fazla ()
, bir anda bir sütunu okumakla eşleştirilmiş, neden olduğu sonsuz döngüler yok ()
.
Bu, Python yorumlayıcısının NUMERIC_OUTPUT = True
ayarlanmış olmasını gerektirir .
Prelude, her satırın ayrı ayrı yürütüldüğü bir dildir. Çok sayıda karakter idam edilir, ancak önemli olan
9!
()
Prelude'de 9. basan ikinci satırda bir döngü ifade eder, ancak #
s'nin (yığından çıkan) belirginliği sayesinde yığınların üst kısımları bir döngü çarptığında her zaman 0 olur, yani hiçbiri koşuyorlar. Prelude'un kaynak kodu kısıtlamaları ()
olsa da bazı yabancı alanlar da getirildi.
Bu bölüm (ve> <>) Martin'in cevabı gibi çalışır . İlgili kod
# ;n@0ea
Gol> <> 2B bir dildir ve #
IP'yi sola doğru hareket ettirerek yansıtır. Etrafına sarılır, yığına 10, 14 ve 0 basın. @
Daha sonra, en üstüne 10 getiren, yığın döner n
o kadar çıkar ve ;
bir program durdurulur.
Bu bölüm aynı zamanda Martin'in cevabına benziyor.
kötülük küçük harfler hariç her şeyi görmezden gelir. Birkaç karakter yoksayıldığında, ilgili kısım
aeeeaeeaww
burada a
değişken artırır A
, e
bit karıştırır en kötü örgü fonksiyonudur A
ve w
çıkışları A
. Dolayısıyla 1
iki kere çıktı vererek veriyoruz 11
.
Ancak talimatların geri kalanına ve özellikle w
son satırdakilere ne dersiniz ? Diyelim ki, bazen kodla uğraşmak ve dua etmek için en kolay olan şey, hala burada bir şekilde yaptığı her şeyde çalışması için dua etmek ...
Foo, çift tırnak arasında herhangi bir şey çıkarır, yani ilgili kısım
"12"
İkinci satırda. Ancak, daha sonra çift alıntıya ihtiyacımız olduğu için, Foo hatasını düzeltmek için bir önceki adı geçen Martin'in cevabına benzer bir yöntem kullanıyoruz #-1@
. Neden askerlerin boş yığın ve bölme karşısında sıfır hatayla karşılaştıkları bir dilde işe yaradığı belli değil, ama sevindim.
Python gibi, Ruby şöyle görür:
# comments
25
print(4^2 +7)/2
"""
multiline string
"""
Ancak, çok satırlı dize aslında üç ayrı dizeleri olduğunu belirtmek gerekir ( ""
, "..."
, ""
) birbirine bağlanır. Baskı çizgisi (4^2+7) = xor(4,2)+7 = 6+7 = 13
, 2'ye bölünmeye çalışırken hata vermeden önce çıkar nil
.
Bu kısım, Gol> <> kısmıyla aynıdır, ancak @
bunun yerine 14 tanesini çıkarıp alır.
Brian & Chuck, iki kasetli bir BF türevidir; bir kasetin komut işaretçisi diğer kasetin hafıza işaretçisidir. Yokluğunda ```
, kaynak kodunun ilk iki satırı bantları başlatmak için kullanılır.
İlk iki satırdaki ilgili karakterler:
?15
# >.>.
?
Brian bant hücresi (işaret edilen olarak Chuck'la kontrol geçer #
sıfır olmayan). Daha sonra Chuck >.>.
, iki işareti çıktırarak soru işaretinden sonra yürütür .
Kullanılması STL
sırasıyla uzay, sekme ve satır besleme için, programın başlatılmasının:
SSSTSSSSL
TL
STL
L
L
İlk satır 16'ya basar ( +10000
taban 2), önceki TLST
sayı bir sayı olarak basar. Sonraki üç yeni hat programı durdurur.
Ancak, bu programın tercümana özel olduğunu unutmayın. Kod sözdiziminin geri kalanı çoğu tercümanda hata yapar, bu nedenle yukarıda verilen bağlantıda olduğu gibi daha yumuşak bir tercüman gerekir.
İlk satırın bir dizi talimatı yerine getirildi, ancak ilgili olanlar
kkmmao#/
ETA'nın kısıtlaması nedeniyle, k
B değişkenini azaltmak yerine azaltmak için kullanırız a
. kk
B ila -2 arasında azalma ve mm
B ile iki kez 16 arasındaki kareler, bu sayı 17 ile artırılır a
. Bu daha sonra ile verilir o
.
#
sonra B'yi 0'a sıfırlamak için kullanılır ve /
programın 0'a bölünmesiyle hata yapmasına neden olur.
Kısıtlamalar: IP yönünü değiştiren Axo programından önce talimat yok
Bir kez daha, ilk satırda bir takım talimatlar yerine getirilir, ancak ilgili talimatlar
# # 15 ,@ 9 9 + { \
Axo, Befunge gibi bir 2D dilidir ve #
benzer şekilde bir sonraki talimatı atlayan bir köprüdür, ancak yalnızca yığının üstü sıfırsa. 15,
yığına itin, ancak yığın ile boşaltılır @
. 99+
sonra 18 iter, {
çıktılar ve \
durur.
Labirent başka bir 2D dilidir ve yürütülen talimatlar
#|#
[9!@
#
ilk kez 0 olan yığının uzunluğunu zorlar. |
bittiğinde VEYA, bu noktada yığının sadece 0 değeri olduğundan hiçbir şey değişmez ve ikincisi de #
artık sıfır nedeniyle 1 iter. 1 nedeniyle sağa dönüyoruz, 9
bunu 1'e dönüştürüyor 1*10+9 = 19
, !
yazdırıyor ve @
duruyoruz.
Bu program [
şu anda tanınmış bir talimat olmadığı gerçeğine dayanmaktadır ve bu nedenle duvar olarak değerlendirilmektedir.
Kısıtlamalar tanıtıldı: Tüm +
ler en az bir önceki boşluk olmalıdır
Tanınmayan karakterleri kaldırırsak, kodun ilgili kısmı
, +.. +
,
giriştir, ancak biz /dev/null
oradan boru bağlantısı yaptığımız için, 0'ı yığına iterek. Yukarıdaki boşluklara +
sahip A n >= 5
iter n-5
, bu yüzden bir sonraki komut 2'ye basar. ..
Sonra bu iki basamağı ters sırada verir.
Daha sonra +
, çoğaltan tek bir boşluğa sahibiz . Ancak, yığın boştur, bu yüzden hata veriyoruz.
Fisyon için tek ilgili bölüm
*"12"L
L
sola hareket eden bir atomun doğuşunu yapar, "21"
21 basar ve *
durur.
Sunulan kısıtlamalar: İlkinden .
önce hayır[
Bu, EOF'de 0 veren ve 8 bit hücreli tercüman gerektirir. İlgili kod
,+-[>.>.-+.>,>]-[>+<-----]>-..
Girişim -
, hücre dengesini bozmaktır +
ve ilki [...]
, hücre 0 olduğu için gerçekleştirilmez. Aşağıdaki -[>+<-----]>-
, hücreyi char koduna ayarlar 2
ve ..
iki kez verir.
Julia görüyor:
# comments
25
print(4^2 +7)/2
Basılı 4^2+7 = pow(4,2)+7 = 16+7 = 23
olan programdır ve program nothing
2'ye bölünmeye çalışırken hata verir. Julia'nın kodun geri kalanının yine de bir sözdizimi hatasına neden olacağı gerçeğine dikkat etmediğini unutmayın.
Lily görüyor:
# comment
#[
multiline comment
]## comment
print (7/6*24)# comment
7/6*24 = 1*24 = 24
yazdırılır.
GolfScript şunları görür:
# comments
25
print(
GolfScript yığın tabanlıdır, bu nedenle yığın yığına 25 itilir, ardından atılır ve birlikte yazdırılır print
. (
sonra yığındaki boş boş dizgeyi düşürmeye çalışır, bu da başarısız olur ve programı geçersiz kılar.
Chicken Scheme, #| ... |#
Common Lisp ile aynı multiline yorum sözdizimine sahiptir . Ancak, içinde
(write(if(= 1/5 .2)26 3))
1/5
Bir halka açık olan eşit 0.2
, yani 26 yerine çıkılır.
Thue, dize yeniden yazmaya dayalı bir dildir. İlk ilgili kısım
f::=~27
::=
bu bir ikameyi tanımlar, f -> 27
daha sonra ile ikamelerin sonunu belirtir ::=
. Sonra yalnız olan f
çıktı if
ile değiştirilir 27
.
Perl 6 yeni bir yorum sözdizimine sahiptir, yani #`(some bracket)
eşleştirme dirseğine kadar çok satırlı bir yorumdur. Böylece, Perl 6 görür:
# comments
#`{
multiline comment
}# comment
print (7/6*24)# comment
hangi yazdırır 7/6*24 = 28
.
Picolisp görüyor:
# comment
#{
multiline comment
}#(prin 29)
Bu, 29 yazdırır. Sonra satır, bir sözdizimi hatasına neden olur.
TRANSCRIPT, metin maceralarından sonra modellenen tematik bir esolang'dır. Tanınmayan satırlar yoksayılır (bu, gerçek kod yönergelerinin arasına fazladan hikaye / lezzet metni eklemenize izin verir), bu nedenle ilgili satırlar:
Jo is here.
>Jo, 30
>X Jo
İlk satır, bir Jo
harfli isimler başarısız gibi gözüktüğü için iki harfli bir isim kullanan bir dize değişkeni bildirir . İkinci satır bu dizgiyi üçüncü satırda ("inceleyin") "30"
çıktısı olarak ayarlar X
.
2.7.1
sunar2.7.n
. (Aslında, sweerpotato sadece büyük sürümleri ile bunu yapar.)