Ben aradığınız dil değilim!


181

Bir kod parçası bulduğunda ve hangi dilde yazıldığını bilmediğinde sinir bozucu olmaz mı? Bu meydan okuma bunu bir şekilde çözmeye çalışır.

Meydan okuma

İki farklı dilde çalıştırdığınızda dizgenin çıktısını alacak bir program yazmanız gerekecek:

This program wasn't written in <language program compiled/interpreted in>, it was built for <other language the program can be run in>!

  • Çıktıda, dil adlarının resmi büyük harfle yazılması gerekir. örneğin: CJam, C ++

  • Her iki program da kullanıcıdan herhangi bir girdi almamalıdır.

  • Her iki dilde çalıştırıldığında, çıktı stdout veya eşdeğeri olmalıdır.

  • Her iki programda da stderr için çıktı olmamalıdır.

  • Yorumları iki dilde de kullanabilirsiniz.

  • Aynı dilin iki farklı sürümü, farklı diller olarak sayılır.

    • Bu yapılırsa, program ana sürüm numarasını vermeli ve iki farklı küçük sürümde çalışıyorsa küçük sürümü de bildirmelidir.

    • Önceden oluşturulmuş sürüm işlevlerini kullanmamalısınız (buna çalışma zamanında zaten değerlendirilmiş olan değişkenleri içerir).

Örnek çıktı:

Perl ve Yakut:

  • Perl: This program wasn't written in Perl, it was built for Ruby!

  • Yakut: This program wasn't written in Ruby, it was built for Perl!

Python ve C:

  • Python: This program wasn't written in Python, it was built for C!

  • C: This program wasn't written in C, it was built for Python!

Python 2 ve Python 3:

  • Python 2: This program wasn't written in Python 2, it was built for Python 3!

  • Python 3: This program wasn't written in Python 3, it was built for Python 2!

Python 2.4 ve Python 2.7:

  • Python 2.4: This program wasn't written in Python 2.4, it was built for Python 2.7!

  • Python 2.7: This program wasn't written in Python 2.7, it was built for Python 2.4!

Bu kod golf yani bayt cinsinden en kısa kod kazanır.


2
"Aynı dilin iki farklı sürümü farklı diller olarak sayılıyor." Yani C öncesi ve geçmiş gibi 99 yorum kandırma gibi geçerli mi? kolay ^^
Zaibis

1
Eklendi, paradoksal hissediyor ama kurallarınıza uyuyor.
Zaibis

1
Kimse Whitespace / Python polyglot yapmıyor mu?
Charles,

boşver. 23 Uygulamayı Gördüm
Charles

Belirli bir tercümanla çalıştırılacak olan programa güvenmek girdi olarak sayılır mı? yani, açma argv[0]?
kedi

Yanıtlar:


86

Foo / CJam, 70 bayt

"This program wasn't written in ""Foo"", it was built for ""CJam"\@"!"

Foo'da, birçoklarının öğrendiği gibi, sadece her şeyi çift tırnak işaretleri içinde basar ve diğer çoğu karakteri yok sayar veya çoğu durumda çıktıyı etkilemeyen bir şey yapar. Kısacası, \@hiçbir şey yapmaz ve dizelerin tümü olduğu gibi basılır.

CJam'da, \ilk iki @öğeyi değiştirir ve 3. öğeyi, dizeleri doğru sıraya göre düzenleyen en üste taşır. Program sona erdikten sonra, yığında kalan her şey otomatik olarak yazdırılır.


7
Ve sadece eğlenmek için, Fission / CJam için benzer bir 75 baytlık çözüm var:R"This program wasn't written in ""Fission"", it was built for ""CJam"\@'!O
Martin Ender

3
Güzel. "This program wasn't written in Clip, it was built for CJam!"3{4-_36+e\}/Clip / CJam için vardı .
Dennis,

5
Bir Foo çözümü yayınlamak için bu konuya girdim, herkesin bir Foo polyglot yazmanın ne kadar kolay olduğunu bildiğini fark etmesi gerekirdi.
histocrat

Foo programlama dili spesifikasyonuna bir bağlantı var mı?
justhalf

1
@ErikE Bir açıklama eklendi.
jimmy23013

140

C89 / C99, 171 152 136 114 111 107 105 bayt

İpuçları için @Hurkyls, @Qwertiys, @ jimmy23013 ve @MD XF teşekkür ederiz.

golf versiyonu:

c;main(){c=-4.5//**/
-4.5;printf("This program wasn't written in C%d, it was built for C%d!",90-c,98+c);}

ungolfed versiyonu:

c;

main()
{
    c = -4.5//**/
    -4.5;
    printf("This program wasn't written in C%d, it was built for C%d!",90-c,98+c);
}

Küçük açıklama:

Daha önceki C99 sürümlerinde C99 bu gibi çok satırlı yorum yapmıştı:

/*foo*/

C99 ile tek satırlı yorum tanıtıldı. bunun gibi, böyle:

//foo

öyleyse, böyle bir satır derlerseniz:

c =-4.5//**/
-4.5;

c99 derleyici için derleme ile ilgili kod şöyle olacaktır:

c = -4.5 -4.5;

Bir c89 derleyici için ilgili kod olacaktır:

(birincisi /bir yorumun parçası olmadığı ve dolayısıyla işletmeci olarak kabul edeceği için)

c = -4.5 / -4.5;

10
Muhteşem bir cevap için +1. C ile aşina olmayanlar için biraz açıklama olsa güzel olurdu.
ace_HongKongIndependence 3:15

4
@ ace Ben bunun C99 tarzı yorumlara dayandığına inanıyorum. Dördüncü satırda, dikkat edin //**/. C89’da, bölüm operatörü ve ardından boş bir yorum var. C99'da, //tek satırlı bir yorum başlatır, bu nedenle satırın geri kalanı boştur. Bu nedenle, C89’da, (90-(-4.5/-4.5))89 olur (90-(-4.5-4.5)), C99’da ise 99 olur.
kirbyfan64sos

14
Birkaç bayt kaydetmek için, 188-cyerine kullanın c==99?89:99.

1
Uzay ve dış parantez içinde atama ile ihtiyacın olduğunu sanmıyorum.
PurkkaKoodari 7:15


88

JavaScript / Ruby, 170 bayt

Sadece 2.0 olabilir, en azından 2.1.5'te çalışıyor gibi görünmüyor ... Düzenleme: @Jordan'ın tavsiyelerine göre yapılan güncellemeler umarım şimdi birkaç versiyonda çalışır!

a='1';c=console=console||eval('def c.log s;$><<s end;c');c.log("This program wasn't written in "+(d=['JavaScript','Ruby'])[b= ~(a=~/1/)]+', it was built for '+d[b+1]+'!')

Suistimaller ~bu Ruby operatöre tedavi edecek =~dize (ilk maçında pozisyonunu dönen regex maç olarak 0), ancak JavaScript o kadar davranacak = ~/1/olan -1(çünkü /1/dönüştürülür NaNolan, sayısal işlemler için 0değer).


Bu cevap benim için Ruby 2.1.5'te çalışmıyor. Anladım:NoMethodError: undefined method `log' for :log:Symbol
EMBLEM

@EMBLEM Testim, OS X'te yerleşik olan Ruby 2.0'da gerçekleştirildi, bunun ötesinde bir şey test etmedim, ancak kesinlikle diğer sürümde de kırılabileceğini gösteren bir yorum ekleyeceğim!
Dom Hastings,

Ruby'nin daha yeni sürümlerinde, bir yöntem tanımı, yöntemin adını bir sembol evalolarak döndürür :log; Sanırım ;csonra koyarak düzeltebilirsin end. =~/ = ~Hile olsa harika!
Ürdün

Ayrıca kurtarabilirsin. Çift tırnak işareti $><<syerine puts sve kullanarak birkaç bayt , ters eğik çizgiyi bırakabilirsiniz wasn\'t.
Jordan

@ Jordan Teşekkürler! Nasıl \'olsa çift tırnak işaretiyle kaldırılmadı emin değilim ve $><<bahsettiğim düzeltmeyi uygulayabilir ve aynı bayt sayısını koruyabilirim anlamına gelir!
Dom Hastings,

82

Python 2 / Python 3, 92

"Standart" Python sürüm kontrolünü kullanır (tamsayı ve şamandıra bölümü).

print("This program wasn't written in Python %d, it was built for Python %d!"%(3/2*2,4-3/2))

3
Kum havuzunda konuştuk ve fikir birliği böyle bir şeye izin verecekti
Blue

14
@flawr Python ve Cobra'ya izin verilir mi? ;)
Beta Decay

7
@flawr Python aslında adı komedi ~~ grubu ~~ tanrılar, Monty Python.
Mutanto

@Mutantoe Görünen o ki "Monty" bir hayvanın adı değil, suç işe yaramaz.
Pierre Arlaud

57

Balık tutma / > <> 233 217 bytes

v++C-CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+CCCCCCC-CCCCCCCCCCCCCCCCCCC+CCCCCC
\   "This program wasn't written in ""><>"  ", it was built for Fishing!"
>r!`ol?!;32.                         Fishing                     ><>!`N

Balık tutmak , balık avlamak için dolaşan bir balıkçıya dayanan bir dildir. Bu dilde bir program yapmak için önce üzerinde dolaştığı bir rıhtım tanımlaması gerekir. Yuva, yalnızca bir programa kontrol akışı sağlar. Bu programdaki dok:

v++C-CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+CCCCCCC-CCCCCCCCCCCCCCCCCCC+CCCCCC

CKomut ne zaman bulunursa, balıkçı bir talimat yakalamak için çizgisini atar. +Ve -talimatları azaltmak ve sırasıyla onun hattının uzunluğunu artırmak. vfırlatma yönünü aşağıya doğru değiştiriyor. Bu programda yakaladığı balıklar:

`This program wasn't written in Fishing, it was built for ><>!`N

> <> suda ilerleyen bir balığa dayanan bir dildir. vKomut daha sonra sağa yansıtılır nerede, aşağıya doğru hareket eden balıkları başlar \komuta. Tırnaklar arasındaki her şey yığına itilir. İp istifin üzerine itildikten sonra, balık aşağı doğru yansıdığı diğer tarafa sarılır \. Daha sonra yığının içeriğini şu şekilde yazdırır:

>r!`ol?!;32.

Baskı döngüsünü üçüncü satırdaki boşlukta> <> ile koyarak kodunuzu 13 bayt azaltabilirsiniz (sanırım bu dili bilmesem de, balıkçılık kısmına müdahale edeceğini sanmıyorum). Bu yorumun tüm kodu nasıl idare edeceğinden emin değilim, bu yüzden işte bir hastebin linki: hastebin.com/quqinozizi (üçüncü satırdaki boşluğu bozmuş olabilirim ama her şeyin doğru şekilde hizalandığını düşünüyorum).
cole

@Cole İşe yarıyor. Aslında öneriniz aslında 16 karakter kaldırıyor.
TheNumberOne 5:15

14
Balık ve balıkçılık poliglot ... muhtemelen türünün ilk!
Mark K Cowan

bu ne komik!
D.Tate

55

23 / Malbolge, 5688 bayt

                    bCBA@?>=<;:987
                                                                                        6543210/.-,+*)
                                                                                          ('&%$#"!~}|{zy
                                                                                               xwvutsrqponmlk
                                                                                                  jihgfedcba`_^]
                                                                                     \[ZYXWVUTSRQPO
                                                                                               NMLKJIHGFEDCBA
                                                                                    @?>=<;:9y76543
                                                                210/(L,l*)(!E}
                   |B"!~}|{zyxwvu
                                                                                                     tsrqponmlkjiha
                                                                                                  fed]#a`_^]?zZY
                                                                                         XWVUTSRQ3ONMLK
                   JIHGFEDCBA:^>=
                                                                                                       <;:98705.R21q/
                                                                                               .-,+*#G'&%${"!
                                                                                            x>|{zyxwYutm3k
                                                                                                        ponmlkjihg`&^c
                                                                                     ba`_^]\[ZYXWVO
                   sSRQPONMLEi,HG
                                                                                                      FEDCBA@?>=6Z:9
                                                                                    y76543210/.-,+
                                                                                                          *)('&%$#"y?w|u
                   ;sxwvutm3qSonm
                                                                                                       fkjiha'edcba`_
                                                                                            ^]\[ZYXWVUTSRQ
                   PONM/EiIHGFEDC
                               BA@?>7[;:987w5
                                      432+O/o-,%I)('
                                     &}$#z@~}|{zsxw
                   vutsrqponmlkji
                                                                                                 ha'&dFba`_^]\U
                                                                                            yYXWVUTMRQPONM
                   LKDhH*F?DCBA@?
                                                                                                 8\<;:98765432r
                                                                                        0/.-&J*)('&f$#
                                                                                                       "!~}|{zyxwvuts
                                                                                                       rqj0nmOkjihaf_
                                                                                            %cE[!_^]\[=SwW
                                                                                                     VU7SLpPONMLEJI
                                                                                                          HAeEDC%A@?>=<;
                   :9876543210/.-
                                                                                                       ,+$H('&}${A!xw
                          ={]yxwvutsrk1o
                                                                                                 nmOejib(fedcE"
                                                                                                      `_^]?[ZYRvVUT6
                                                                                     RKo2HMLKJIHAe
                                                                                                           EDCBA@?>=<;:9
                    87w5432+O/.-,
                                                                                                 +*)('&%e#"y?w
                                                                                     |{zs9wvun4rqp
                                                                                                      onmlNjib(fedc
                                                                                           ba`_^]\[ZYXWV
                                                                                                   8TMqKPONMLKDh
                                                                                                      +GFEDCB;_?>=<
                                                                                                    ;:9y7654321*N
                    .-,+*)('&f|{A
                                                                                                       !~}|{]yxwvo5s
                                                                                             rqpinmlkjihg`
                                                                                            &dcbD`_^]\[Tx
                                                                        ;WVUTMRQJnN0F
                                                 KDhH*FEDC<A@?
     >=<5Y92765.R?

Programın takip eden bir satır besleme gerektirdiğini unutmayın. Hiçbir çizgi izleyen boşluk içermez, bu nedenle kopyala / yapıştır işleminin iyi çalışması gerekir.

Doğrulama

Malbolge kodunu bu çevrimiçi yorumlayıcıda test etmek için , Malbolge kodu alanına yapıştırın ve Load/Resetardından öğesine tıklayın Execute.

Bu çevrimiçi yorumlayıcıdaki 23 kodu test etmek için Kaynak alanına yapıştırın Enter, izleyen satır beslemesini eklemek için tuşuna basın 23, Konsol alanına yazın (varsayılan 23. kademe gösteriminden otomatik algılamaya geçmek için) ve tıklayın Run Interpreter!.


20
Dostum ... kodunda bir bomba patlamış gibi görünüyor!
D.Tate

8
o_0 Malbolge kodunu nasıl yazdınız
Pavel

55

Lua / C - 182 164 bayt

#if 0
print"This program wasn't written in Lua, it was built for C!"--[[
#endif
main(){printf("This program wasn't written in C, it was built for Lua!\n");}/*]]--*/

Lua'nın Unix shebang'lara izin vermek için ilk satırda bir karma işareti gördüğü özelliğinden faydalanır. Aksi takdirde, diğer dilin yorumlarını kendi yorumlarına sarar.

Baytları tıraş etmek için, yalnızca GCC ve Clang'da uyarıları yayınlayan örtük davranışlara güvenirim: printf'ın temel ve örtük tanımı için int'nin açık beyanı.


3
Çok akıllıca bitti!
İnekler

2
"İnclude <stdio.h>" ifadesini kaldırmak çok aşırıysa, cevabı geri döndüreceğim.
benpop

2
Neden //C kısmındaki yorumu kullanmıyorsunuz ? 2 bayt kaydeder.
BrainStone

54

JavaScript / Haskell, 158 bayt 147 bayt

Genel fikir: her birinin yorum sözdizimini diğerine gizlice sokun.

Bir satırda:

u="This program wasn't written in ";v=", it was built for ";j="JavaScript";h="Haskell";{-console.log(u+j+v+h+"!")}//-}main=putStrLn$u++h++v++j++"!"

Bu Haskell'e benziyor:

-- some variable definitions
u = "This program wasn't written in "
v = ", it was built for "
j = "JavaScript"
h = "Haskell"

-- a comment
{-console.log(u+j+v+h+"!")}//-}

-- the main method that does the dirty deed
main = putStrLn $ u ++ h ++ v ++ j ++ "!"

Bunun JavaScript'e benzemesi:

/* variables can be declared without `var` */
u = "This program wasn't written in ";
v = ", it was built for ";
j = "JavaScript";
h = "Haskell";

/* hey look, an anonymous block! */
{ 
  /* we negate the `undefined` that comes out of console.log */
  -console.log(u+j+v+h+"!")
} 
/* there are two automatic semicolon insertions here:
   one before `}` and one before EOF. */

/* a one-line comment. */
//-}main=putStrLn$u++h++v++j++"!"

3
alertgolfçü.
wizzwizz4

51

Brainfuck / Foo, 769 bayt

-[--->+<]>-.[---->+++++<]>-.+.++++++++++.+[---->+<]>+++.[-->+++++++<]>.++.---.--------.+++++++++++.+++[->+++<]>++.++++++++++++.[->+++++<]>-.--[->++++<]>-.-[->+++<]>-.--[--->+<]>--.-----.[++>---<]>++.[->+++<]>-.[---->+<]>+++.--[->++++<]>-.-----.---------.+++++++++++..+++[->+++<]>.+++++++++.-[->+++++<]>-.-[--->++<]>-.+++++.-[->+++++<]>-.+[->++<]>.---[----->+<]>-.+++[->+++<]>++.++++++++.+++++.--------.-[--->+<]>--.+[->+++<]>+.++++++++.+++[----->++<]>.------------.-[--->++<]>-.+++++++++++.[---->+<]>+++.--[->++++<]>-.-[->+++<]>-.--[--->+<]>--.+[---->+<]>+++.[->+++<]>++.[--->+<]>-.------------.+++.++++++++.[---->+<]>+++.++[->+++<]>.+++++++++.+++.[-->+++++<]>+++.+++[->++<]>.+[--->+<]>++..[--->+<]>----."This program wasn't written in Foo, it was built for Brainfuck!"

Son derece karmaşık ve karmaşık bir cevap ... ya da değil.


21
Kahretsin, bir daha değilsin Foo: D
Beta Decay

5
Düşünce tarzını beğendim.
Pierre Arlaud

13
Bunu Brainfuck'ta çalıştırırken, Brainfuck ,, sondaki metin nedeniyle girişi bekler . Bunun görev kurallarına aykırı olduğuna inanıyorum.
Simon Forsberg

1
@SimonForsberg uzun zamandır, ancak çevrimiçi denemek gibi bir tercümanda ve bence çoğu kişi ,, EOF için hücreyi 0'a ayarlıyor
Destructible Lemon

41

C / Python, 238 karakter

Bu tam olarak istenenleri% 100 yazdırmıyor, ancak oldukça yakın. Sevgililer günü kartımın
yeniden başlatılması .

#define def main(){0?
#define print printf(
#define return 0)));}
#define pass 0);

def main():
    print "This program wasn't written in ",
    pass
    print "Python",
    print ", it was built for ",
    print "C",
    return

main();

5
Kesin değilse ne yazdırır?
Beta Ayı

4
Bu iç içe
baskı

4
Bu geçerli değildir. C. Clang, hakkında defve :sonrasında şikayet eder def main()ve aslında main için bir fonksiyon gövdesi açmazsınız. Aslında cevabını C dilinde derlemeyi denedin mi?
C0deH4cker

5
Çizgi #define def main(){0?eksik
kay

3
#define returnbeni biraz ağlatıyor ...
corsiKa

32

C / C ++, 136

#include<stdio.h>
int main(){
char*a="++",z=sizeof'c'/2;
printf("This program wasn't written in C%s, it was built for C%s!\n",a+z,a+2-z);
}

Biçimlendirme için yeni satırlar eklendi. C veya C ++ ile deneyin .


32
İnt 2 bayt olan bir platformdaysam ne olur? C + derleyicisini nereden alabilirim?
immibis

@ immibis haha: P ama ciddi bir notta boş yapı numarası işe yarayabilir:struct{}s;z=2*sizeof s
grc

31

Befunge / > <> , 141 138 134 133 130 bayt

@Cole sayesinde 3 bayt kaydedildi .

Kesin olarak, Befunge-98 kullanıyorum.

\"!><> rof tliub saw ti ,egnufeB"   >" rof nettirw t'nsaw margorp sih"'T>:#,_@'~~~~~~
>l?v"!egnufeB rof tliub saw ti ,><>"^
?!;>ol

Gerçekleri kullanarak:

  • \ <>> bir ayna ve Befunge içinde takas
  • 'string''c>>> bir dize ve Befunge bir char

Befunge kodu için ihtiyacın olmadıkça (ki sanmıyorum ki), alt satırın yerini değiştirerek 3 bayt'ı tıraş edebilirsin?!;>ol
cole

23

PHP / MySQL, 147 bayt

-- $argc;die("This program wasn't written in PHP, it was built for MySQL!");
SELECT("This program wasn't written in MySQL, it was built for PHP!");

17
Sonunda bir tür anladım.
MikeTheLiar

1
İkinci satırın parantezlerinden kurtulabilmelisiniz, iki bayt daha az:SELECT"This program wasn't written in MySQL, it was built for PHP!";
msh210

2
Ancak bu artık PHP'de çalışmaz - ayrıştırma hatasına neden olur. SELECT "..." geçerli bir PHP ifadesi değil.
Razvan

22

Python 3 / > <> , 177 173 172 167 Bayt

@Mathmandan'a 5 byte tıraş için teşekkürler!

Bu da bir deneyimdi ve aynı zamanda da deneniyordu. Herhangi bir golf önerisi açıktır, çünkü bu oldukça uzun. Metni tekrar kullanmak için elimden geleni yaptım ama bu oldukça zordu.

Teknik olarak, bu programın çıkması gereken Python 3 olurdu (ve eğer özellikleri karşılamıyorsam değiştirebilirdim - ama örnekte Python / C çıktısı Pythonlistelendi).

aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!"                 #v   "><>"r~/
a=", it was built for "+v#\a
print(aa[-3::-1]+"Pytho" +"n"+a)
#  .4b;!?lor"!nohtyP r"~/

Çevrimiçi> <> tercüman ve bir Python 3 tercüman üzerinde deneyin (> <> tercüman kodu manuel olarak girmenizi gerektirir)

İade

This program wasn't written in ><>, it was built for Python!

> <> ve

This program wasn't written in Python, it was built for ><>!

Python'da.

Açıklama (Python)

Şeylerin Python tarafı için, oldukça basit. İşte umursadığımız kod (temelde #Python ile gösterilen, yorum içermeyen kod ). Python'da \dizelerde kullanıldığında bir kaçış karakteri olduğuna dikkat edin , bu nedenle dizgide \"değerlendirilir ".

aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!"
a=", it was built for "+v
print(aa[-3::-1]+"Pytho" +"n"+a)

Burada en çok önem verdiğimiz şey değişken üzerinde yapılan işlemler aa:

aa[-3::-1]: reverses the string and chops off the quotation marks (thanks to @mathmandan)

Print cümlesi böylece değerlendirir

"This program wasn't written in " + "Pytho" + "n" + ", it was built for ><>!"

Açıklama (> <>)

Şimdi daha zor kısımlara geçiyoruz. Bir kez daha, işte gereksiz bitlerin kaldırıldığı kod.

aa=" ni nettirw t'nsaw margorp sihT\"\
                          v   "><>"r~/
a=", it was built for "+v \a

   .4b;!?lor"!nohtyP r"~/

Satır 1:

aa=" ni nettirw t'nsaw margorp sihT\"\

aa=         pushes 1 onto the stack (evaluates 10==10, basically)
" ni ... \" pushes the first part plus a \ onto the stack.
\           deflects the pointer downwards

Şu anda yığın (basılmışsa): \This program wasn't written in

Hat 2:

2 /numaralı satırın, işaretçinin 1 numaralı satırdaki konumundan dolayı başladığını ve sağdan sola geçtiğini unutmayın.

v   "><>"r~/

/     deflects the pointer leftwards
~r    pops the / off the stack and then reverses it
"><>" pushes ><> onto the stack
v     deflects the pointer downwards

Şu anda yığın: ><> ni nettirw t'nsaw margorp sihT

Satır 3:

Önceki satırda olduğu gibi, bu \satır 2'den başlayarak işaretçiyi gönderdiği yerde başlar . İşaretçi, ilke ulaştığında çizginin etrafına dolandığından a, işaretçiyi nereye gittiğine (ve böylece ne yapıldığını) göre açıklamamı yazacağım.

a=", it was built for "+v \a

\aa=       deflect and push 1 onto the stack
", i ... " push the string onto the stack
+v         sum the last two values pushed and deflect

Şu anda yığın ( x"r" ve boşluk bırakarak oluşturulan karakterdir. - Gerçek karakter değil, sadece benden bir yer tutucudır):

xof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT

Satır 4:

İşaretçi basitçe aşağı doğru devam eder, böylece bu satır başka bir açıklama yapmaz.

Satır 5:

Baştan /ve sola doğru gidiyor.

.4b;!?lor"!nohtyP r"~/

~"r Python!" pops x off and adds back r and a space
r            reverses the stack
o            pops and prints a character
l?!;         pushes the length of the stack and stops if it's 0
b4.          pushes 11 then 4 then moves to that location (where o is)

Şu anda yığın (çıktı ters çevrilmiş):

!nohtyP rof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT

Ve açıklama için bu olmalı. Açıklama / kod arasında bir tutarsızlık varsa veya yanlış bir şey yaptıysam bana bildirin; Ben açıklama yazmanın ortasındayken kodumu biraz daha golf oynadım, bu yüzden eski ve yeni kodların karışık parçalarını alabilirdim.


3 eklemek zorunda kaldığımı söyleseydim yanlış olurdu, çünkü python 2 değildi.
Mavi

Bu sadece Python olsaydı, değiştirmek inanıyorum aa[:-2][::-1]ile aa[-3::-1]. Bu durumda, elbette,> <> biçimlendirmesini engelleyebilir, ancak daha önce yapmadıysanız belki de dikkate değer. Özellikle v, önceki satırın altındaki boşluğa ihtiyacınız olduğuna eminim , ancak print(aa[-3::-1]+"Pytho"aşağıdaki 24 karaktere sığacak gibi görünüyor a=", it was built for "+ve ardından onu boşluk bırakabilirsiniz +"n"+a). Bunun başka bir şeyi kırıp kırmayacağından emin değilim, ancak çalışırsa birkaç bayttan tasarruf sağlayacaktır.
mathmandan

@ mathmandan Harika bir fikir, kodumu güncelleyeceğim ve size kredi vereceğim.
cole,

İyi iş! Bilginize, bence bu Python 2'de gayet iyi sonuç verir ve Python 2'de parantezleri print deyimine bırakarak bir bayt kaydedebilirsiniz print aa[-3::-1]+"Pytho" +"n"+a. Yine de bir soru daha:> <> sürümünde 1başlangıçta yığına itilene ne oldu?
mathmandan

@ mathmandan Kullandığım tercüman geçersizse veya yazdırılan karakter hiç görünmüyorsa karakteri basmıyor sanırım. Dürüst olmak gerekirse,% 100 neden bu karakterin basılmasının önemli olmadığından emin değilim; Yanlışlıkla keşfettim.
cole

19

Toplu .BAT Dosyası / Toplu. CMD Dosyası, 194 185 Bayt

@ECHO OFF
SET a=BAT
SET b=CMD
CALL :F&&GOTO :C||GOTO :O
:C
SET a=CMD
SET b=BAT
:O
ECHO This program wasn't written for %a% File, it was built for %b% File!
GOTO :EOF
:F
md;2>nul
SET v=1

Düzenleme: 9 bayt kaydedildi ve DLosc! sayesinde bir kayıp düzeltildi

Evet, BAT ve CMD dosyaları arasında farklılıklar var. Referans. Temel olarak, CMD ERRORLEVELbir SETkomutu ayarlar, BAT bunu yapmazken, burada ERRORLEVELhatalı biçimlendirilmiş mdkomut tarafından ayarlanan SET v=1, bir versiyonda diğeri tarafından silinmez . Bu komut dosyası, bu haber grubu başlığında "Ritchie" tarafından sağlanan örneğe dayanmaktadır.

Yukarıdaki kısaltılmış betiğin ENABLEEXTENSIONSayarlanacağını varsaydığını unutmayın ON(her platformda varsayılandır). Aşağıdaki genişletilmiş komut dosyası, düzgün çalışmasını sağlamak için açıkça ayarlar. Bu olmadan, SETCMD komutu tüm uzantılara izin vermez ve (bazı sistemlerde, belki de) ERRORLEVELuygun şekilde ayarlamayabilir .

Genişletilmiş ve dikkat çekti

@ECHO OFF
setlocal ENABLEEXTENSIONS

REM Call the :FUNC subroutine and branch based on the resulting errorlevel
CALL :FUNC&&GOTO :CMD||GOTO :BAT

REM Just in case. If we reach this, though, hoo-boy ...
GOTO :EOF

:BAT
REM We're a BAT file, so set variables and goto output
SET a=BAT
SET b=CMD
GOTO :OUTPUT

:CMD
REM We're a CMD file, so set variables and goto output
SET a=CMD
SET b=BAT
GOTO :OUTPUT

:OUTPUT
REM Print out the result, then go to end of file
ECHO This program wasn't written for %a% File, it was built for %b% File!
GOTO :EOF

:FUNC
REM Simple subroutine to set the ERRORLEVEL appropriately
md;2>nul
REM Right now, ERRORLEVEL on both CMD and BAT is 1
SET v=1
REM Right now, ERRORLEVEL on CMD is 0, but BAT is still 1

... CMD ve BAT arasında bir fark var mı?
Stan Strum


16

CJam / GolfScript, 81 78 bayt

"This program wasn't written in "o"GolfScript"", it was built for ""CJam"oo"!"

Orijinal 81 bayt sürümü:

"This program wasn't written in "["CJam"", it was built for ""GolfScript"]-1a%"!"

14

PHP / Perl, 98 96 bayt

$a="HP";$b="erl";
//;$a=$b;$b=HP;
print"This code wasn't written in P$a, it was built for P$b!";

Dunno bu hile yapıyorsa veya olmasa da, PHP'yi açılış <?etiketi olmadan çalıştırmanın tek yolunu söyleyebildiğim gibi php -r $(cat codefile.php). Ama bunun yasal olduğunu varsayarsak ... //bir PHP yorumu, ama Perl'de bir regex (kendi başına bir açıklamada hiçbir şey yapmıyor). Gerisi kendi kendini açıklayıcı olmalı.

Düzenleme: Şimdi sadece Perl bölümünde bir korkak kullanarak. Bunları her iki dilde de ilk sırada kullanmak istedim, ancak PHP bunu yaparken, "stderr için çıktı olmamalı" uyarısı veriyor.


1
<?'>#';Her iki dilde de geçerli sözdizimi.
primo

14

Ruby / Python, 105 karakter

a=["Ruby","Python"];a.sort();print("This program wasn't written in "+a[0]+", it was built for "+a[1]+"!")

Bu gerçekten iyi! Özellikle hiç yorum yapılmamasını seviyorum.
styfle

14

JavaScript 1.8 / JavaScript 1.7, 89 bayt

a=![].reduce;`This program wasn't written in JS 1.${8-a}, it was built for JS 1.${7+a}!`

Çünkü Array.prototype.reduce 1.8'de yeni

EDIT: doğrudan akullanmak yerine doğrudan başlatarak 7 bayt golf yaptıreverse()

EDIT: 8 bayt tasarrufu JavaScriptolarak yazılabilirJS

EDIT: Değişken bdaha fazla kullanmazsam 3 byte daha fazla tasarruf sağlayabileceğime işaret ettiği için teşekkürler Hedi

DÜZENLEME: golfed 6 bilgisayar tarafından bayt üzerinden 7+ave 8-a, a=1tanımlandığı azaltmak halinde (JS 1.8) ve a=0eğer tanımlanmamıştır (JS 1.7)

EDIT: Hedi, şablon dizgesinin kullanılmasını öneren 6 bayt daha yayınladı

EDIT: ETHproductions, a=!![].reduce;bunun yerine 2 byte'ı öne sürdüa=[].reduce?1:0;

EDIT: no1xsyzy, boolean çekini değiştirmeyi öneren bir bayt daha attı


"JavaScript" yerine "JS" ile, iki kez "JS 1" kullanarak dizginizde b değişkenini kullanmaktan daha kısa.
Hedi

Bunu kısaltmak için şablon dizesi kullanabilirsiniz: `Bu program JS 1'de yazılmamış $ {7 a +}, JS 1 için inşa edildi $ {8 + a}`..!
Hedi

2
Ben düşünüyorum Eğer değiştirerek iki bayt kaydedebilirsiniz a=[].reduce?1:0;için a=!![].reduce;.
ETHproductions

@ETHproductions Teşekkürler, ama işe yarayacağını sanmıyorum. İhtiyacım adeğerini tutmak için 1ya 0değil, trueyafalse
Mario Trucco

@ Üzgünüm üzgünüm, haklısın, ben denedim ve işe yarıyor. Teşekkürler!
Mario Trucco,

13

SWI-Prolog 6 / SWI-Prolog 7, 156 bayt

P='SWI-Prolog ',A=6,B=7,(is_list(""),N=A,M=B;N=B,M=A),atomic_list_concat(['This program wasn\'t written in ',P,N,', it was built for ',P,M,'!'],W),write(W).

Çift tırnakların ""7'den daha eski SWI-Prolog sürümlerinde dize kodları (yani karakter kodlarının listesi) olduğu ve 7. sürümde uygun bir Dize türü olduğu gerçeğini kullanır is_list("").


12

BF / SPL, 5342 bayt

Bu sitedeki ilk Shakespeare Programlama Dili polyglot olduğundan eminim.

Muhtemelen herhangi bir ödül kazanmayacaksın. BF kodunu act / scene / program başlıklarına gizlice sokarak çalışır. SPL kodu, birkaç durum hariç, dönemler yerine ünlem işareti kullanır. Programların girdi alması gerekmediğinden, karakter bildirimlerindeki virgüller, hücreleri sıfırlayarak ve virgüllerin etrafına köşeli parantezler koyarak "yorumlanır". Aynı prosedür, enter / exeunt ifadelerinin etrafındaki köşeli parantezleri gizlerken de geçerlidir.

[-][.
Ford,.
Page,.
Act I:]+++++++++[>+++++++++<-]>+++.
Scene I:>[.
[Enter Ford and Page]
Ford:
You is sum of bad bad bad bad bad bad day and sum of bad bad bad bad day and bad bad day!Speak thy mind!
Scene II:]<<++[>++++++++++<-]>.
Page:
You is sum of bad bad bad bad bad bad day and sum of bad bad bad bad bad day and bad bad bad day!Speak thy mind!
Scene III:+.
Page:
You is sum of thyself and day!Speak thy mind!
Scene IV:++++++++++.
Page:
You is sum of thyself and sum of bad bad bad day and bad day!Speak thy mind!
Scene V:>++++[>++++++++<-]>.
Ford:
You is fat fat fat fat fat cat!Speak thy mind!
Scene VI:[-<+>]<<---.
Page:
You is sum of thyself and sum of big pig and pig!Speak thy mind!
Scene VII:++.
Page:
You is sum of thyself and fat cat!Speak thy mind!
Scene VIII:---.
Page:
You is sum of thyself and sum of big pig and pig!Speak thy mind!
Scene IX:--------.
Page:
You is sum of thyself and big big big pig!Speak thy mind!
Scene X:+++++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and sum of fat cat and cat!Speak thy mind!
Scene XI:<++++[->----<]>-.
Page:
You is sum of thyself and sum of big big big big pig and pig!Speak thy mind!
Scene XII:++++++++++++.
Page:
You is sum of thyself and sum of fat fat fat fat cat and big big pig!Speak thy mind!
Scene XIII:>.
Ford:
Speak thy mind!
Scene XIV:<++++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and fat cat!Speak thy mind!
Scene XV:<++++[->-----<]>--.
Page:
You is sum of thyself and sum of big big big big big pig and sum of fat fat fat cat and fat cat!Speak thy mind!
Scene XVI:<++++[>++++<-]>++.
Page:
You is sum of thyself and sum of fat fat fat fat cat and fat cat!Speak thy mind!
Scene XVII:-----.
Page:
You is sum of thyself and sum of big big pig and pig!Speak thy mind!
Scene XVIII:>+++++++.
Ford:
You is sum of thyself and sum of fat fat fat cat and pig!Speak thy mind!
Scene XIX:<++++++.
Page:
You is sum of thyself and sum of fat fat cat and fat cat!Speak thy mind!
Scene XX:>-------.
Ford:
You is sum of thyself and sum of big big big pig and cat!Speak thy mind!
Scene XXI:<+++.
Page:
You is sum of thyself and sum of fat cat and cat!Speak thy mind!
Scene XXII:-----.
Page:
You is sum of thyself and sum of big big pig and pig!Speak thy mind!
Scene XXIII:---------.
Page:
You is sum of thyself and sum of big big big pig and pig!Speak thy mind!
Scene XXIV:+++++++++++.
Page:
You is sum of thyself and sum of cat and sum of fat cat and fat fat fat cat.Speak thy mind!Speak thy mind!
Scene XXV:<+++[>-----<-]>.
Page:
You is sum of thyself and sum of big big big big pig and cat!Speak thy mind!
Scene XXVI:+++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and cat!Speak thy mind!
Scene XXVII:>.
Ford:
Speak thy mind!
Scene XXVIII:<-----.
Page:
You is sum of thyself and sum of big big pig and pig!Speak thy mind!
Scene XXIX:+++++.
Page:
You is sum of thyself and sum of fat fat cat and cat!Speak thy mind!
Scene XXX:>.
Ford:
Speak thy mind!
Scene XXXI:[->++<]>++.
Page:
You is sum of thyself and sum of big big big big big pig and sum of fat fat cat and cat!Speak thy mind!You is sum of thyself and sum of big pig and pig!Speak thy mind!
Scene XXXII:++++.
Page:
You is sum of thyself and big red hog!Speak thy mind!
Scene XXXIII:<+++++[>-----<-]>-.
Page:
You is sum of thyself and big big big big big pig!Speak thy mind!
Scene XXXIV:[-<+>]<------------.
Ford:
Speak thy mind!
Scene XXXV:<-----.
Page:
You is sum of thyself and sum of fat fat fat fat fat fat cat and sum of big pig and pig!Speak thy mind!
Scene XXXVI:+++++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and sum of fat cat and cat!Speak thy mind!
Scene XXXVII:>.
Ford:
Speak thy mind!
Scene XXXVIII:<+++.
Page:
You is sum of thyself and sum of fat cat and cat!Speak thy mind!
Scene XXXIX:<++++[->-----<]>--.
Page:
You is sum of thyself and sum of big big big big big pig and sum of fat fat fat cat and fat cat!Speak thy mind!
Scene XL:<++++[>++++<-]>++.
Page:
You is sum of thyself and sum of fat fat fat fat cat and fat cat!Speak thy mind!
Scene XLI:>.
Ford:
Speak thy mind!
Scene XLII:<<++++[>----<-]>-.
Page:
You is sum of thyself and sum of big big big big pig and pig!Speak thy mind!
Scene XLIII:<+++++[>++++<-]>-.
Page:
You is sum of thyself and sum of fat fat fat fat cat and sum of fat cat and cat!Speak thy mind!
Scene XLIV:------------.
Page:
You is sum of thyself and sum of big big big big pig and fat fat cat!Speak thy mind!
Scene XLV:+++.
Page:
You is sum of thyself and sum of fat cat and cat!Speak thy mind!
Scene XLVI:++++++++.
Page:
You is sum of thyself and fat fat fat cat!Speak thy mind!
Scene XLVII:>.
Ford:
Speak thy mind!
Scene XLVIII:<--------------.
Page:
You is sum of thyself and sum of big big big big pig and fat cat!Speak thy mind!
Scene XLIX:+++++++++.
Page:
You is sum of thyself and sum of fat fat fat cat and cat!Speak thy mind!
Scene L:+++.
Page:
You is sum of thyself and sum of fat cat and cat!Speak thy mind!
Scene LI:>.
Ford:
Speak thy mind!
Scene LII:>+++++++[<+++++++>-]<++.
Page:
You is sum of thyself and sum of big big big big big pig and big big big big pig!Speak thy mind!
Scene LIII:---.
Page:
You is sum of thyself and fat fat cat!Speak thy mind!
Scene LIV:----.
Ford:
You is sum of thyself and cat!Speak thy mind!
Scene LV:>+++++++[<------>-]<-.
Ford:
You is cat!
Scene LVI:>[.
[Exeunt]

BF'yi https://repl.it/E8Hh/23 adresinde test edin .

SPL kodu burada bulunan derleyicide test edilmiştir: https://github.com/drsam94/Spl/ .


11

Ruby 1.8 / Ruby 1.9, 87

puts"This program wasn't written in Ruby 1.#{?9%49}, it was built for Ruby 1.#{?8%47}!"

Ruby 1.8'de, ?98 modulo 49 olan "9" ASCII değeridir. Ruby 1.9'da "9" dizesidir ve %49"9" ifadesinde hiçbir biçim dizgesi bulunmadığından hiçbir şey yapmayan bir biçimlendirme işlemidir. o.


11

Python 2.7.9 / Python 2.7.10, 127 bayt

Küçük sürümleri kullanan birkaç gönderi yayınladık, ama hiçbiri bir sonraki seviyeye geçmedi ...

import types
n=len(dir(types))
print"This program wasn't written in Python 2.7.%d, it was made for Python 2.7.%d!"%(n%33,-n%52)

Ideone'da (Python 2.7.10) ve repl.it'te (teknik olarak Python 2.7.2, ancak 2.7.9 ile aynı sonucu vermelidir) deneyin .

Göre Python 2.7.10, değişmek :

Modüle bir __all__a eklendi types.

Bu len(dir(types)), 42'den 43'e itildi ve istenen çıktıyı üretmek için kullanabileceğimiz sayısal bir fark yarattı.


10

Python / QBasic, 160 142 bayt

Python 3 ve QBasic 1.1 ile test edilmiştir . Python 2'de from __future__ import print_function4. satıra eklenmeden çalışmaz .

1# DEFSTR A-B
a = "QBasic"
b = "Python"
'';a,b=b,a;PRINT=print
PRINT ("This program wasn't written in " + a + ", it was built for " + b + "!")
  • Python'da, 1#ifade 1(no-op), ardından bir yorumdur. QBasic'te, bir satır numarasıdır (onu a olarak işaretleyen sonek tipiyle DOUBLE). DEFSTRİfadesi isimleri başlatmak tüm değişkenler olduğunu QBasic söyler Aveya B(harf büyüklüğüne duyarsız) dize değişkenlerdir. Bu şekilde, bizim değişkenleri çağırabilir ave byerine a$ve b$(Python işe yaramaz olan).
  • QBasic'te 'bir yorum başlar. Python'da ''boş dizedir (no-op). Ardından, dil adlarını değiştiririz ve printişlev için bir takma ad tanımlarız (QBasic anahtar sözcükleri otomatik olarak büyük harfe dönüştürülür).
  • Son satırdaki parantezler QBasic'te gerekli değildir, ancak hiçbir şeye de zarar vermez.

Otomatik biçimlendiriciyi kapatmama izin verilirse ( orijinal QBasic'te olmasa da , QB64'teki bir seçenek ) Python 2'yi kullanarak 114 bayta indirebilirim :

1#DEFSTR A-B
a="QBasic"
b="Python"
'';a,b=b,a
print"This program wasn't written in "+a+", it was built for "+b+"!"

-3 bayt: Gerçek QB64'e geçin.
Hesap MakinesiFeline

Autoformatting.
Hesap MakinesiFeline

QB64 / Python 2, 131 bayttır! Veya 133 bayt için Python 3.
Hesap MakinesiFeline

9

Perl / Ruby, 129 bayt

0&&eval('def sort a,b;[b,a] end');printf"This program wasn't written in %s, it was built for %s!",(@a=sort"Perl","Ruby")[0],@a[1]

Bu ifadede düzenli ifade ihlali yok, yalnızca Ruby'nin 0 olduğu gerçeğinin çoğunu, gerçekte ve gerçekte olan evalbir tanım için sorthakikaten yapıyor . Ruby, argümanlar için listeyi kullanmaktan hoşlanmadığı için, her birini ayrı ayrı yapmak zorunda kaldım.reverseprintf


aYerel olandan farklı olarak neden örnek değişken olmak zorunda?
Nic Hartley

@QPaysTa Perl'deki @bir değişkendeki sigil'i vurgular, bunun bir liste olduğunu belirtir, Perl'de saklamak $ayerine, sonuçta, sonuç verilmez .
Dom Hastings

Ah, anlıyorum. Açıklama için teşekkürler.
Nic Hartley

9

/// ve Retina , 95 + 3 = 98 bayt

/
//

This program wasn't written in \/\/\/, it was built for Retina!
/?./....(.*)(R.*)!
$2$1///!

-sRetina'daki bayrak için +3 bayt .

/// için açıklama

İlk talimat

/
//

tüm yeni satırları kodun geri kalanından kaldırır,

This program wasn't written in \/\/\/, it was built for Retina!/?./....(.*)(R.*)!$2$1///!

Her şey !bir hazır bilgidir ve STDOUT'a basılmıştır. Bir sonraki talimat

/?./....(.*)(R.*)!$2$1/

Ancak arama dizesi ?.bulunamıyor, bu yüzden hiçbir şey olmuyor. Ardından kalan kod //!eksik bir talimattır, bu nedenle program sonlandırılır ve doğru diziyi yazdırır.

Retina için açıklama

/
//

Bu yerine Retina söyler /ile //. Ancak giriş boştur, yani bu hiçbir şeyle eşleşmiyor.

<empty>
This program wasn't written in \/\/\/, it was built for Retina!

Bu girdiyi ikinci satırdaki dizeyle değiştirir.

/?./....(.*)(R.*)!
$2$1///!

Bu, dizeyle eşleşir \/\/\/, it was built for Retina!ve Retina, it was built for ///!doğru sonucu vermek için ile değiştirir .


Biliyor musun, Retina ve rs arasında bir şeyler yapmanın önemsiz olacağını düşünüyorum ...;)
kirbyfan64sos

@ kirbyfan64sos Muhtemelen, ama ne kadar kısa olurdu? ;)
Martin Ender

Peki, şu ana kadar yaklaşık 85 bayt + 3 -saldım. : D
kirbyfan64sos

1
@ kirbyfan64sos Devam edin ve yayınlayın, yakında herhangi bir zamanda rs ile ilgilenmek için zamanım olacağını sanmıyorum.
Martin Ender

9

sed / Hexagony 251 Bayt

/$/cThis program wasn't written in sed, it was built for Hexagony!
#...>32;p;r;o;g;r;\+/;a;w;23+;m;a<.;.>s;n;+39;t;+32\s/;n;e;;t;i;r;w;<. |.>+32;i;n;+32;H;e\ ;/4+;y;n;o;g;a;x;< i>4;+32;i;t;+32;\;/u;b;23+;s;a;w<h>;i;l;t;+32;f\;/;s;23+;r;o;< T>e;d;+33;@

sed: Çevrimiçi Deneyin!
Altıgen: Çevrimiçi Deneyin!


Sed'de, sonunda boş dize (her zaman) eşleşmesi durumunda doğru dizeyi yazdırır. İkinci satır bir yorumdur. Bu STDIN'de bir dize gerektirir, ancak boş olabilir ( bu fikir birliğine göre izin verilir ).

Örnek:

echo '' | sed -f whatLanguage.sed

Hexagony'de ilk önce /sol alt tarafa yönlendirilir, sol tarafı baştan başlamanın başladığı yere kadar takip eder, sonra sadece sola, sağa, bir çizgiye, sağdan sola, bir çizgiden aşağıya doğru sarar. Genişletilmiş altıgen şuna benzer:

         / $ / c T h i s p r 
        o g r a m w a s n ' t 
       w r i t t e n i n s e d 
      , i t w a s b u i l t f o 
     r H e x a g o n y ! # . . . 
    > 3 2 ; p ; r ; o ; g ; r ; \
   + / ; a ; w ; 2 3 + ; m ; a < .
  ; . > s ; n ; + 3 9 ; t ; + 3 2 \
 s / ; n ; e ; ; t ; i ; r ; w ; < . 
| . > + 3 2 ; i ; n ; + 3 2 ; H ; e \ 
 ; / 4 + ; y ; n ; o ; g ; a ; x ; < 
  i > 4 ; + 3 2 ; i ; t ; + 3 2 ; \
   ; / u ; b ; 2 3 + ; s ; a ; w <
    h > ; i ; l ; t ; + 3 2 ; f \
     ; / ; s ; 2 3 + ; r ; o ; < 
      T > e ; d ; @ . . . . . .
       . . . . . . . . . . . .
        . . . . . . . . . . .
         . . . . . . . . . .

Asla Hexagony'i anlayamayacağım ...
DJgamer98

@ DJgamer98 Ben de gerçekten anlamıyorum. Bu benim ilk defa kullanıyorum.
Riley,

;Bir bayt değeri belirlemek için mevcut hücre modunu (256) alan gerçeği kullanarak Hexagony'i biraz kısaltabilirsiniz (örneğin P0;, mevcut hücre değerinden bağımsız olarak bir boşluk yazdırabilirsiniz ). Bu CJam betiği tüm çiftleri oluşturur: cjam.tryitonline.net/…
Martin Ender

9

Python / Retina, 133 120 119 117 115 bayt

Şimdi Retina ve regex'ler hakkında daha fazla şey bildiğim için, onu biraz daha golf oynadım. Aynı zamanda aslında şimdi çalışıyor.

#?.*
print"This program wasn't written in Python, it was built for Retina!"
#?.*t"

#?(\w+)(,.* )(.+)!"
#$3$2$1!
#

Python sadece ifadeyi yazdırır. Retina, herhangi bir şeyi Python print deyimiyle değiştirir, ardından printve tırnak işaretlerini kaldırır . Sonra, ben takas Pythonve Retinave çıkarın #.

Python'da deneyin | Retina'da dene



@ jimmy23013 Bu zorluğun yayınlandığı tarihte sınırlar yoktu. Bu, Retina'nın nispeten yeni bir özelliği.
mbomb007


8

JavaScript / CoffeeScript, 125 124 bayt

console.log("This program wasn't written in",(a=['Coffee','Java'])[+(b=0=='0')]+"Script, it was built for",a[b^1]+"Script!")

CoffeeScript'te, ara durumu yanlış yapan, a==başağı derlenir a===b. Boole değerini bir tam sayıya dönüştürmek için biraz sihir kullandım.

@DomHastings sayesinde 1 bayt kaydedildi!

125 bayt sürümü:

console.log("This program wasn't written in",(a=['Coffee','Java'])[(b=0=='0')+0]+"Script, it was built for",a[b^1]+"Script!")

Güzel! Sanırım +(b=0=='0')yerine bir bayt kurtarabilirsin +0!
Dom Hastings

Bunun yerine, b^1kullanabileceğini düşünüyorum~b
Ismael Miguel

@IsmaelMiguel Nope. İçin inşa edildiği yazıyor undefinedScript.
kirbyfan64sos 10:15

Bunu unuttum ~1 == -2. Ancak (b=0=='0')+0olarak yazılabilir +(b=0=='0'). Veya b=+(0=='0'). Bu 1 baytı kesmeli.
Ismael Miguel,

@IsmaelMiguel Bunu en son sürümde yaptım ...
kirbyfan64sos
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.