Bu dil ne zaman yayınlandı?


92

Zorluğun basittir. STDOUT ya da bir dosyaya yazdığı dilin yayınlandığı yıl yazdırılan bir program yazmanız gerekir. Bu kadar basit bir görev olduğu için, büküm mümkün olduğu kadar çok farklı dilde yazılması gerektiğidir.

Puanınız, doğru şekilde basılan toplam yıl sayısıdır.

Kullandığınız her dil için

  • Hangi dil sürümünü kullandığınızı belirtin. (Birden fazla sürüm varsa)

  • Bu sürümün ilk hangi yıl yayınlandığını ve

  • Sürümünüzün / dilinizin tarihini gösteren bir sayfaya link verin.

Bunlardan herhangi biri, sürüm numarasını (varsa) ve bir çıkış tarihini belirttiği sürece yayın tarihi kanıtı olarak sayılır.

  • Bir wikipedia sayfası.

  • Bir esolangs sayfası.

  • Dilin resmi web sitesi. Bir github sayfası veya benzer sayımlar, yayınlanma tarihi olduğu sürece. (Kodun herhangi bir yerinde bir sürüm numarası bulunmadıkça, son işlem sayılmaz)

Bir dilin birden fazla sürümü veya sürümü yoksa, dilin ilk yayınlanma tarihini kullanın.

Aynı dilin Minör versiyonları do yeter ki farklı yaşındaki gelip hala doğru çıkış üretmek gibi farklı dilleri saymak. Sen olabilir değil size kullandığınız dilin güncel sürümü hakkında (çıkış tarihine dahil) bilgi vermek herhangi yerleşiklerini kullanın. Örneğin, bu geçersiz bir python gönderimidir:

import platform
i = platform.python_version()
if i == '3.5':
    print(2015)
if i == '3.4':
    print(2014)
if i == '3.3':
    print(2012)
...

Hangi gönderim, en belirgin yılları doğru şekilde basarsa kazanır!

kurallar

  • Her program dil yılını yazmalı ve daha fazlasını yapmamalıdır . Sondaki yeni satıra (pencere stili veya * nix stili) izin verilir.

  • Hiçbir program herhangi bir girdi alamaz.

  • Beraberlik durumunda, baytla atılan en kısa kod kazanır. Bunun için istediğiniz kodlamayı kullanabilirsiniz, ancak tüm programlar aynı kodlamayı kullanmalıdır.

  • Programların herhangi biri STDERR'ye yazdırabilir veya doğru çıktı hala STDOUT'a veya bir dosyaya yazdırıldığı sürece çalışma zamanı / derleme zamanı hataları ve uyarıları verebilir.

  • Farklı diller farklı IO yöntemlerini kullanabilir, ancak hepsi tam programlar (bu zorluğa izin verilmeyen işlevler) ve izin verilen varsayılan IO yöntemlerimizden birini izliyorlar .

Mutlu golf polyglotting!


Yana Pip bir Vikipedi ya Esolangs sayfası yok, bu zorlu görevi içinde kullanım için uygun olmadığını, sadece GitHub vardır ve kelimenin GitHub anlamında herhangi bir "bültenleri" olmamıştır? (Her taahhütte güncellenen bir sürüm numarası vardır.)
DLosc

1
@dlosc Eh, herhangi bir dili gereksiz yere dışlamak istemiyorum, ancak "çıkış tarihi" nin tamamen objektif kaldığından emin olmak istiyorum. Daha fazla dil içeren bir çıkış tarihi uygulamak için daha iyi bir yol bulabilir misiniz?
DJMcMayhem

4
(rasgele , her bir gönderimde 2003'ü yazdırmak için Whitespace kodunu ekler )
Value Ink

8
"Sen olabilir değil aktüel hakkında bilgi vermek herhangi yerleşiklerini kullanmak sürümü kullandığınız dilin." Benim vurgum. Tercüman dosyasında oluşturma tarihini arayabilir miyim?
Adám

2
Bunun bir kopya olduğunu sanmıyorum. Öyle olsa bile, bu zorluk 'orijinal' olarak kabul edilmelidir, çünkü diğerinden farklı olarak, bu zorluk kullanıcıları dışarı çıkmaya ve ne kullandıklarını öğrenmeye teşvik eder.

Yanıtlar:


159

2B Programlama Dillerinin Kısa Tarihi: 16 (+2) yıl

v19977/2{@{{4{\_______>/02&&&#????        *    P+++++1P1P-1P+1E     *                         *
\'\02'oo100@n590@n;                       *                         *                         *
>"8991",,,;5-;,@                          *                         *                         *
   *                                      *                         *                         *
  \ *              ++++++++++++++++++++++++  ++++++++++++++++++++++++  ++O--OO++++++++OX*******      *
     *   #2018O@       *                  *      *                  *      *                  *      *
      *                *                  *      *                  *      *                  *      *
       *               *                  *      *                  *      *                  *      *
        *           ****    ****          *   ****    ****          *   ****    ****          *   ****    *****
         *         *   *   *    *         *  *   *   *    *         *  *   *   *    *         *  *   *   *
          *        *   *  *      *        *  *   *  *      *        *  *   *  *      *        *  *   *  *
           *      *    * ****     *       * *    * ****     *       * *    * ****     *       * *    * ****
            *     *    *     *            * *    *     *            * *    *     *            * *    *     *
R"2014";     *****      *******       ******      *******       ******      *******       ******      *******

 x
x%"2010"x
 x

$'main'        \/\/\/\
 \-[2005]o-#   \++++++\
               /++++++/
               \++++++\
               /++++++/
               \/\/\/\++.--..+++.#

S1^2^2^6^8MAOUOAOOF

      /K:0:1:@

  >      "7102"4&o@

|        }+++++[>++++++++++<-]>.--..++++++.@

2D programlama dilini sevdiğimi söylemiş miydim?

1993: Befunge

(İddia edilen, son bölüme bakın) dil her şeyi başlattı. Befunge olarak, kontrol akışını yönlendirebilirsiniz <v>^ama şimdi her yerde aynalar \ve /henüz bir şey değildi. Anarchy Golf'de kullanılan Befunge tercümanı bilinmeyen komutları görmezden gelir. Bunu Befunge ailesini> <> ailesinden ayırmak için kullanabiliriz. Dolayısıyla, Befunge tarafından yürütülen kod şudur:

v
\
>"8991",,,;5-;,@

Tek "8991"tek karakterleri yığına iter. ,,,ilk üçünü basar. Sonra ;(biz Befunge 98 ayırmak için kullanacağız olan), bilinmeyen 5-döner 8içine 3ve ,hem de daha önce baskılar @programı sonlandırır.

1997: Wierd

Çözümün bu bölümünü yazmak beni diğerlerini yazmak ve bir araya getirmek sürece muhtemelen aldı ...

Wierd sadece iki sembol bilir: uzay ve her şey. Komut işaretçisi, boşluksuz karakterlerin oluşturduğu yolu izlemeye çalışır, sol üst köşeden çapraz olarak başlar ve her zaman mümkün olduğunca düz gitmeye çalışır. Yoldaki virajlar asıl talimatları oluşturur (hangi komutun uygulanacağını belirleyen dönüş dereceleriyle birlikte). Yani Wierd tarafından görülen kod şudur:

v1997                                     *                         *                         *
 '                                        *                         *                         *
  8                                       *                         *                         *
   *                                      *                         *                         *
    *              ++++++++++++++++++++++++  ++++++++++++++++++++++++  ++O--OO++++++++OX*******      *
     *                 *                  *      *                  *      *                  *      *
      *                *                  *      *                  *      *                  *      *
       *               *                  *      *                  *      *                  *      *
        *           ****    ****          *   ****    ****          *   ****    ****          *   ****    *****
         *         *   *   *    *         *  *   *   *    *         *  *   *   *    *         *  *   *   *
          *        *   *  *      *        *  *   *  *      *        *  *   *  *      *        *  *   *  *
           *      *    * ****     *       * *    * ****     *       * *    * ****     *       * *    * ****
            *     *    *     *            * *    *     *            * *    *     *            * *    *     *
             *****      *******       ******      *******       ******      *******       ******      *******

En 1997üstte aslında çalıştırılmadı, ancak Wierd bunu kaynak kodundan okumamıza izin veriyor; bu, dört basamak için karakter kodları oluşturmaya çalışmaktan çok daha kısa (bu şekilde görünmese bile) .). Tüm bunları bozmak istemiyorum ama tekrarlanan dört bölümü net bir şekilde görebilirsiniz. Bunun yaptığı şey önce 1yığında depoyacağız, sonra bu dört bölümün her biri bunu artırıyor 1, sonra dallanıyor. Alt dal bir tane daha iter1kaynak karakterini bu koordinatlarda alır ve yazdırır, oysa üst dal bir sonraki bölüme yönlendirilir. Yolların uçlarının neden bu kadar gereksiz uzun sürdüğünü merak edebilirsiniz, ancak Wierd yolun sonuna çarptığında, geçerli dalı sonlandırması gerektiğine karar vermeden önce yakındaki bir yola atlamaya çalışır. Bundan kaçınmak için, bu uçları başka herhangi bir koddan yeterince uzağa taşımamız gerekir.

1998: Befunge 98

Befunge, 1998'de, keyfi boyutlara göre genelleştirilebilecek çok titiz bir spesifikasyonla (ve ayrıca keyfi topolojiler bence) oldukça iyi bilinen bir güncelleme yaptı. Yine de Befunge ile geriye dönük olarak uyumludur, bu da iki parçanın poliglot edilmesini oldukça kolaylaştırır. Bu Befunge'de hala bir ayna yoktu, bu yüzden yürütülen yol Befunge 93 ile aynı:

v
\
>"8991",,,;5-;,@

Aradaki fark, Befunge 98'in görmezden gelmemesidir ;. Bunun yerine, bir sonraki göreve kadar tüm komutların ;göz ardı edildiği bir yorum gibi davranır . Bu şekilde, o azaltma yok 8etmek 3ve baskı 1998olduğu gibi.

2001: Bir Uzay Od ... PingPong

2001, Piet yılıdır, ancak diğer tüm programlarla birlikte bir resim dosyasını çokgırtlamak istemedim, bu yüzden burada daha az bilinen bir 2D dili var. (Kullanmayacağımız) oldukça fazla özelliğe sahip görünüyor. Orijinal tercümanı bulmak için Sp3000'e teşekkür ederiz (resmi web sitesinin arşivlenen versiyonundaki tek ölü link).

PingPong, sadece aynalar ve <v>^yönlendiriciler içermemesi nedeniyle biraz sıra dışıdır . Böylece bu v19977başlangıçta hareket eder ve sonra onu dibe sararak yansıtır. İlgili kod şudur:

v19977/

...

      /K:0:1:@

...

Gerçek kod oldukça basittir: Kiter 20, rakamlar kendilerini iter , :bir tamsayı yazdırır ve @programı sonlandırır.

2003: SNUSP

Bu, işlerin biraz daha kolaylaştığı ilk dildir, çünkü SNUSP açık bir giriş noktasını desteklemektedir. Bu giriş noktası ile işaretlenmiştir $. Esolangs ile ilgili bazı makalelerden yola çıkarak, bu dil birkaç kişiye ilham verdi, ancak ne yazık ki, günün sonunda sadece bir Brainfuck türevi var. Bu, şu anki hücreyi 48'e ayarlamanın yolunun oldukça temiz olduğunu düşünüyorum (ve esolangs makalesinden çalındı). İşte kodun ilgili kısmı:

$'main'        \/\/\/\
               \++++++\
               /++++++/
               \++++++\
               /++++++/
               \/\/\/\++.--..+++.#

Bunlar 24 +saniyedir ve aynalar IP'yi her biri üzerinden tam olarak iki kez gönderir.

2004: Axo

Sebebi ne olursa olsun, bu dil yapar sahip <^>ancak bunun yerine her zamanki ait yeniden yönlendiricileri vkullandığı %. Dolayısıyla bu sadece ilk satır boyunca hareket eder. İlgili kod:

v19977/2{@{{4{\

Başlamak için, bir bölümleme yapmak için birkaç rakam itiyoruz. Daha sonra 2{basar 2, @yığın temizler. {{iki (kapalı) 0s yazdırır . programı 4{yazdırır 4ve \sonlandırır.

2005: Demiryolu

2005 zor bir seçimdi. Başka hiçbir yıl için 2B dil bulamadım ve her ikisi de sol alt köşeden başlayan (bunları kolay eklemeler yapan) ADJUST ve Archway var. Yine de Rail'i seviyorum ve açık bir giriş noktası olduğu için eklemek de zor değildi. Demiryolu ile $'main'başlayan bir hat arar ve güney-doğudan hareket etmeye başlar $. Bunun anlamı ilgili kod:

$'main'
 \-[2005]o-#

\Ve -sadece (no-op) izler vardır. [2005]Değişmezi bir dizedir oönce yazdırır #programı sonlandırır.

2006: En İyiFriends.js

İki boyutlu bir Brainfuck. Bu yıl için Siyah olarak da adlandırılan, koordinatta başlayan (3,3)(1 tabanlı) ilginç bir dil var. Yine de tercüman bulamadım. Bu yüzden başka bir BF türevi ile çalışmak zorunda kalacağız ...

Bununla ilgili ilginç olan şey, ızgarayı diğer 2D dillerinin çoğu gibi satır beslemeli satırlara biçimlendirmemesi. Bunun yerine |çizgi ayırıcı olarak kullanılır. |Başka diller için kullanmadığım için |, programın geri kalanının tamamını BF.js söz konusu olduğunda tek bir satır yapan son satıra koyabilirim . İlgili kod şudur: ( |gerçek bir satır besleme akışına dönüşür):

v19977/2{...
        }+++++[>++++++++++<-]>.--..++++++.@

BF.js ne ayna ne <v>^ de kullanır . Kontrol akışını yönlendirmenin tek yolu {}IP yönünü 90 ° döndürmektir. Böylece bu parantezler IP'yi ikinci satıra taşır. Kalan kısım, bir hücreye ayarlanan 50(kod noktası 2) düz Brainfuck çözümdür (özellikle iyi golf oynamamaktadır ) ve daha sonra 2006değeri biraz kaydırmak suretiyle yazdırır . @programı sonlandırır.

2008: BrainSpace 1.0

Bu yıl için , çok sayıda giriş noktası kullanan ve Fission ve Ziim'in sevgisine benzeyen DOBELA'yı kullanmak istedim . Ne yazık ki, tercümanın çalışmasını sağlayamadım. Yani burada başka bir BF türevi (sonuncusu, söz veriyorum).

Sonuncusundan farklı olarak, bu, her ikisini de bilir <v>^ve yansıtır, bu nedenle ilgili kod şöyledir:

v
\'\
  8

  \ *              ++++++++++++++++++++++++  ++++++++++++++++++++++++  ++O--OO++++++++OX

Bu normal BF tarzı []döngüye sahip değil (bunun yerine gerçek bir 2D döngü oluşturmanız gerekecek), bu yüzden 50Wierd'den bir satırda bir ton karakter geçirdiğim için şifreyi yazmaya karar verdim . Not 've 8göz ardı edilir, *biz göz ardı edebilirsiniz koşullu trambolin ve OBrainfuck en olduğunu .. Programı Xsonlandırır.

2009: > <>

Muhtemelen en popüler Fungeoid (Befunge dışında) en azından bu kısımların etrafında. > <> hem <v>^aynayı hem de aynayı ama aynı zamanda string değişmezlerini de içerdiğinden, yürütülen kod şöyledir:

v
\'\02'oo100@n590@n;

\Dizgi değişmezi çoğunlukla BrainSpace 1.0 için kullandığımızı atlamaya hizmet ediyor, ancak biz konumdayken, ilk iki karakteri de itebiliriz. ooonları yazdırır. Ardından 100, üç basamağı iter @, yukarıdan aşağıya doğru iter ve altını nyazdırır 0. Yine aynı şeyi 590basarız 9. Neden sadece baskı yapmadığımı merak ediyorsanız 2009, 2015 için bekleyin. ;Programı sonlandırır.

2010: Kardinal

Bu basitti, çünkü açık bir giriş noktasına sahipti %. Bununla birlikte, bu her yönde 4 IP oluşturur (dolayısıyla, sanırım dil adı, sanırım) ve bunlardan 3 tanesinden kurtulmamız gerekiyor. İşte ilgili kod:

 x
x%"2010"x
 x

İyi evet. (Kardinal'de, karakter modu bir yığına basılmak yerine dize modu doğrudan yazdırılır.)

2011: RunR

Açık bir giriş noktası olan başka bir dil ( bu arada birkaç başka çok güzel eşyalar yaratan David Catt tarafından ) S. Bu, ilgili kodu bu kısım yapar:

S1^2^2^6^8MAOUOAOOF

RunR biraz ilginç çünkü çoğu işlem bir tür register ile çalışıyor ve ikili işlemler için değerlerin açıkça yığına taşınması gerekiyor. Rakamlar, kayıt değerlerini kendilerine ayarlar ve ^mevcut kaydı yığına iter. Daha sonra Mçarpma, (yığından attı kat değerinin kayıt) olan Uçıkarma olup, Abir ek olarak, Overilir. Fprogramı sonlandırır.

2012: Ropy

Wierd gibi, Ropy boşluk olmayan karakterlerin bölümlerini izlemeye çalışır, ancak burada virajlar komutları belirlemez. Aslında, Ropy'nin kendi Labyrinth'ime daha çok benzer olduğu ve seçilen yönün yığının üstüne bağlı olduğu ortaya çıktı. Bununla birlikte, burada gerçekten endişelenmemize gerek yok çünkü Ropy ilk satır boyunca hareket ediyor:

v19977/2{@{{4{\_______>/02&&&#????

Görmezden gelebileceğimiz bir sürü şey var >. Bilmemiz gereken tek şey, yığının tepesinin o noktada olacağı 4ve 2aşağıda olacağı .

>çiftleri 4, /bir haline dönme bölümüdür 1. Sonra iteriz 02. &&&yığının en üst dört rakamını ters sırada birleştirerek verir 2012. #çıktılar. ????sadece yığını temizler çünkü aksi halde yığının üst kısmı da çıkarılır.

İlgi çekici bir nokta, ikinci olmasıdır 7içinde 19977çünkü ropy ilave edildi. /Lifli bölünme yapar top / second(birçok yığın tabanlı dilde normal düzeninin karşısında), burada 7 / 9verecek 0. Yığının tepesinde sıfır varsa, Ropy hareket yönüyle bazı vahşi şeyler yapar, bu nedenle 7yığının tepesinin pozitif kalmasını ve Ropy'nin doğuya doğru hareket etmesini sağlamak için diğerini itmemiz gerekir.

2014: Fisyon

Belirgin giriş noktaları ile bu çok kolaydır. RDLUkarşılık gelen yönde atomlar (komut işaretçileri) oluşturun, bu nedenle ilgili bit sadece şudur:

R"2014";

Orada bir şey olduğunu unutmayın Uyanı kaynak kodunda, ama bu atom sonunda birini vurur *programı sonlandırır Wierd gelen (ve bu atom daha uzar Rihtiyaçlarını yazdırmak için 2014).

2015: Gol> <>

Sp3000'in daha güçlü> <> türevi. Büyük ölçüde> <> ile geriye doğru uyumludur, bu nedenle yürütülen kod hala:

v
\'\02'oo100@n590@n;

Bununla birlikte, dönüş yönü @değiştirildi, ki bu, poligonlarda> <> ve Gol> <> ayırt etmenin standart numarasıdır, bu yüzden 15bunun yerine basılır 09. Dolayısıyla programın ikinci yarısındaki gariplik.

2016: CSL

CSL, komutların hemen yerine getirilmemesi bakımından oldukça ilginçtir. Bunun yerine, her komut bir komut yığını üzerine itilir ve eve Ebu komutları çalıştırmak için kullanılabilir. İlgili kod şöyle olur:

v19977/2{@{{4{\_______>/02&&&#????        *    P+++++1P1P-1P+1E

Böylece Etüm komut yığınını çalıştırır, bu da önündeki öğelerin tersten yürütüldüğü anlamına gelir. Sadece şunlara bakmamız gerekir *:

1+P1-P1P1+++++P*

1S, veri kümesi üzerinde kendilerini itin. +ve -azaltma / artırma. Pyığının üstünü yazdırır. Sonra *yığının ilk iki değerini çarpmaya çalışır. Ancak, yığın boştur, bu nedenle programı sonlandırır.


Bu noktada, bu zorluğun yayınlanmasından sonra yayımlanan dillere ulaşıyoruz, bu yüzden özellikle bunları kendim yarattığım için (bu akılda tutmamaya rağmen), onları puan için saymıyorum. Bununla birlikte, bazı yeni IP hareket semantikleri var, bu da onları 2 dillerin vitrinde ilginç bir şey eklerken poliglot içine yerleştirmeyi kolaylaştırdı.

2017: Alice

Alice, zengin özellikli bir Fungeoid olarak tasarlandı. Diğer 2B dillerin çoğunda (ancak hepsinde değil) ilginç bir fark, IP'nin dikey ya da çapraz olarak hareket edebilmesidir. Bunlar arasında geçiş yapmak, dilin hemen hemen tüm komutlarının anlamını da değiştirir. Ayrıca, Alice hem geleneksel <^>vyön belirleyicileri hem de \/aynaları destekler, ancak aynalar Alice'de çok benzersiz bir davranış sergilerler (bu, Alice IP'sini kodun kullanılmamış bir bölümüne yönlendirmeyi kolaylaştırır).

Çoğu dil tedavi ediyorlar \ve /sanki 45 ° açılı aynalar gibi gözüküyorlardı ve IP ışıktan sıçrayan bir ışın gibi görünse de Alice, onlara 67,5 ° açıyla (gerçek eğik çizgi gliflerinin açısına daha yakın) davranıyor ve IP de aynanın içinden geçer (bu nedenle dilin adı). Bu açı nedeniyle aynalar dikey veya çapraz yönde hareketler arasında geçiş yapar. Ayrıca, Ordinal moddayken (yani IP köşegenler boyunca hareket ederken), ızgara etrafına sarılmaz ve bunun yerine IP kenarlardan seker (Kardinal modda etrafa sarılır).

Sonuç olarak, Alice tarafından yürütülen kod aşağıdaki gibidir:

v19
\ \

...

  >      "7102"4&o@

...

IP her zamanki gibi sol üst köşede başlar, vgüneye gönderir. Şimdi \IP, kuzeybatıya doğru hareket eder ve hemen ızgaranın sol kenarından seker (ve bunun yerine kuzeydoğuya gider). 1yoksayılabilir, IP bir sonraki güneydoğuya ilerlemek için üst kenardan seker. \IP'yi kuzeye yansıtan bir başkasına çarptık. 9ayrıca yoksayılabilir ve daha sonra IP, ızgaranın altına sarılır. Birkaç satır sonra >rahatlık için doğuya yönlendiriyoruz . Sonra "7102"kod noktaları iter 2017, 4&obu dört karakter yazdırır ve @programı sonlandırır.

2018: Wumpus

Wumpus, üçgen bir ızgaradaki ilk 2B dilidir ve kodda dolaşımı oldukça farklı kılar (ve yine de kodun kullanılmayan bir bölümüne kolayca ulaşmamızı sağlar). Bu nedenle, ızgaradaki her bir karakteri küçük bir kare olarak düşünmek yerine, onları yukarı doğru ve aşağı doğru üçgenler olarak düşünmelisiniz. Sol üst köşe daima yukarı doğru bir üçgendir.

Wumpus'un yön belirleyicileri <^>vyok, ancak aynaları var \/. Ancak, üçgen ızgara nedeniyle, bunlar diğer dillerin çoğundan farklı çalışır. IP, onları ışık ışını gibi zıplar (her zamanki gibi), ancak bunları 60 ° derecelik bir açıya sahip olarak düşünmelisiniz. Böylece doğuya hareket eden bir IP, şebekenin kuzeybatı ekseni boyunca hareket eder.

Diğer dillerin çoğundan başka bir fark olarak, ızgaraların kenarları sarılmaz, ancak IP bunun yerine kenarlardan seker (bu kenar hücreleri uygun aynaları içeriyormuş gibi). Bir başka eğlenceli küçük ayrıntı ise, üçgen ızgaradaki köşegenlerin aslında kaynak kodundaki merdivenler gibi görünmesidir.

Bunu akılda tutarak, Wumpus tarafından yürütülen kod şudur: (boşlukları .netlik için değiştirdim :

v19977/
   02
  89
 ..
..
.....*...#2018O@

v19977Biz göz ardı edebilirsiniz sadece önemsiz bulunmaktadır. /IP'yi kuzeybatıya gönderir ve 977üst kenardan sıçradığında (sağdan) tekrar hareket eder . Sonra IP 2089, tekrar doğuya yansıtılmak üzere sol kenara çarpmadan önce, güneybatı boyunca ve bir sürü boşluk boyunca hareket eder . *ayrıca önemsizdir. Sonra nihayet #2018iter 2018, Oyazdırır ve @programı sonlandırır.


Kaybolan YILLAR

Sonunda, yıllar boyunca kapsamadığım bazı notlar.

Bir çok dilde kullanılabilecek yıllar boyunca uygun olanları bulmak için 2D dilleri araştırırken, popüler inancın aksine, Befunge'nin ilk 2D dil olmadığını öğrendim . Bu başlık 1991'de zaten yaratılmış olan Biota tarafından tutuluyor gibi görünüyor . Maalesef, dilin herhangi bir çıktısı yok, bu yüzden bu sorun için kullanamadım.

Söyleyebildiğim kadarıyla 1992 ve 1995'te 2D dilleri oluşturulmadı.

  • 1994: Orthagonal , Befunge'den bağımsız olarak yaratıldı. Diller aslında anlamsal olarak oldukça benzer, ancak Orthagonal kaynak kodunu 2B olarak vermedi. Bunun yerine her satır bir (x, y, instruction)demetdir. Dilin spekülasyonunu ve orijinal tercümanı Jeff Jeffler'in yaratıcısından bile aldım, fakat sonunda sözdiziminin 2D olmadığı gerçeği dili bu çok dilli için uygun hale getirdi.
  • 1996: Orthagonal'ın (başkası tarafından yaratılan) halefi olan Orthogonal oluşturuldu, ancak bu poliglotun amaçları için Orthagonal ile aynı problemleri yaşıyor.
  • 1999: Bulabildiğim tek dil, Chris Pressey'in hücresel otomasyonu olan REDGREEN idi . Ne yazık ki, selefi RUBE'nin aksine, herhangi bir G / Ç semantiğine sahip görünmüyor.
  • 2000: Chris Pressey'in başka bir hücresel otomatiği var, ama bu bir şey değil. Ayrıca kaçmaya çalıştığım Numberix var ve kaynak kodunda onaltılık olmayan karakterleri görmezden gelip gelmeyeceğinden emin değilim.
  • 2002: Dil özellikleri beni korkutuyor, G / Ç ve ZT olmayan Clunk var.
  • 2007: Burada üç dil buldum. Zetaplex görüntü temellidir (yani hayırdır ) ve RubE On Konveyör Bantları , programın ilk satırına karışacak oldukça katı bir formata sahip bir başlık gerektirir. Orada da var Cellbrain Quintopia tarafından, ama aynı zamanda özel bir başlık gerektirecek gibi görünüyor.
  • 2013: Yine üç dil buldum. Balıkçılık iyi bir miktarda yeniden yapılanma ile mümkün olabilir, ancak programın geçerli bir iskeleyle başlaması gerekir. Quipu , bellekten, çok polygloting izin vermek için sözdizimi hakkında çok katı. Ve Swordfish > <> ailenin bir başka üyesi, fakat maalesef ben bir tercüman bulmak mümkün olmamıştır. Aksi takdirde, bu eklemek muhtemelen oldukça kolay olacaktır.

Herhangi biri ilgileniyorsa, bulabildiğim yıla göre sıralanan uygulamalı 2B dillerin listesi ( bu cevap gönderildiği sırada). Bu listedeki herhangi bir eksik varsa, lütfen tam bir listeyle gerçekten ilgileneceğimi sohbette bana bildirin .


8
Vay. Bu gerçekten etkileyici
DJMcMayhem

@MartinEnder 2B programlama dilleri listenizi yıllarca Esolang'ın üstüne koymayı düşündünüz mü?
doppelgreener

@doppelgreener Oraya nasıl sığacağından tam olarak emin değilim. Aslında 2B kategorisinin sadece çeşitli yıl kategorileriyle kesişimidir.
Martin Ender

RubE On Konveyör Bantları başlık satırını tamir edeceğim, eğer bir zaman makineniz varsa, 13 yaşındaki bir çocuğa, boyutunu önceden bilmeden bir dosyayı okumayı öğretmek için ödünç alabilirim. (Başlık satırı olmasının tek nedeni budur; IMO, boyut başlığını programın bir parçası olarak saymaktan çekinmeyebilir, kesinlikle
konuşsa

1
@cairdcoinheringaahing İşte başlıyorsunuz. Ve 2018 için Wumpus'taydım.
Martin Ender

117

15 yaş, Python

Sürümler: 0.9.1 , 2.0.0 , 2.2.0, 2.2.2, 2.5.0, 2.5.1, 3.0.0, 3.1.0, 3.1.3, 3.2.1, 3.3.0, 3.3.3, 3.4.0, 3.5.0 ve 3.6.0a4 . Bağlantılı olmayan sürümler, indirme sayfasında bulunabilir .

0.9.1'in çıkış tarihi burada bulunabilir . Maalesef bilgisayarımdaki eski sürümlerin ve derleme sorunlarının eksik olması nedeniyle uzun yıllar geçmem gerekti. Temsil edilen yıllar 1991, 2000-2002 ve 2006-2016'dır.

Gzip versiyonlarını kullanarak Arch Linux'ta test edildi.

# Note: This file needs a trailing newline due to 0.9.1

# 0.9.1: No bitwise operators
# This one errors out by division by zero.
try:
    eval('1&2')
except:
    print(1991)
    1/0

import sys

# 2.0.0: repr('\n') gives "'\012'" instead of "'\n'"
# == doesn't exist until Python 0.9.3 and <> doesn't exist in Python 3, hence we
# use <. Also, 0.9.1 doesn't have double quoted strings.
if repr('\n') < '\'\\n\'':
    print(2000)
    sys.exit()

# 2.2.0: email module still has a _Parser class - module revamped in 2.2.2
# I would use whether or not True exists as a name here, but weirdly "True"
# worked in 2.2.2 even though the docs say it was introduced in 2.3...
try:
    import email
    email._Parser
    print(2001)
    sys.exit()
except AttributeError:
    pass

# 2.2.2: a in b only works for strings a of length 1.
try:
    eval('"art" in "Martin"')
except TypeError:
    print(2002)
    sys.exit()

# 2.5.0: int() allows null bytes in integer to convert when given an explicit
# base.
try:
    print(int('2006\x00Hello, World!', 10))
    exit()
except ValueError:
    pass

# 2.5.1: pow overflows
# Note that we can't use ** here since that doesn't exist in 0.9.1.
if pow(2, 100) < 1:
    print(2007)
    exit()

# 3.0.0: round returns a float rather than an int.
if str(round(1, 0)) > '1':
    print(2008)
    exit()

# 3.1.0: bug caused complex formatting to sometimes drop the real part.
if format(complex(-0.0, 2.0), '-') < '(-':
    print(2009)
    exit()

# 3.1.3: str of a float is shorter than the repr of the same float.
if str(1.0/7) < repr(1.0/7):
    print(2010)
    exit()

# 3.2.1: For some weird reason, u'...' Unicode strings were disabled then
# re-enabled later.
try:
    eval('u"abc"')
except:
    print(2011)
    exit()

# 3.3.0: int still works without a first argument.
try:
    int(base=10)
    print(2012)
    exit()
except TypeError:
    pass

# 3.3.3: no enum module :(
try:
    import enum
except ImportError:
    print(2013)
    exit()

# 3.4.0: PEP 448 (additional unpacking generalisations) not implemented yet
try:
    eval('[*[1], *[2], *[3]]')
except SyntaxError:
    print(2014)
    exit()

# 3.5.0: No f-strings
try:
    eval('f"abc"')
except SyntaxError:
    print(2015)
    exit()

print(2016)

18
... Vay. Bazı insanların dillerini ne kadar iyi bildiği beni hala hayrete düşürüyor. Zamanda geriye bakmak gibi ...
wizzwizz4

Python 0 desteği / denemeyi destekliyor mu?
OldBunny2800

8
@ OldBunny2800 Şaşırtıcı, evet öyle
Sp3000

54

Kısa ve güzel; üç APL s ( K , J201 , Dyalog 7.1 8) bayt

1993+1^2

1993 artı ...

K: {2} haricindeki ilk 1 tamsayı {0}, yani {0}; 1993 - Çevrimiçi deneyin!

J: 1 2 = 1; 1994 - Çevrimiçi deneyin!

APL: LCM (1,2) = 2; 1995 - Çevrimiçi deneyin!


Çok hoş! Iverson dilinden daha fazlasını birleştirebileceğinizi mi düşünüyorsunuz?
mil,

@miles K ile sertleşin ve APL2 / APLX / APL * PLUS çok benzer.
Adám

@miles 2000'den beri J versiyonunu biliyor musunuz? Öyleyse, 2e3+?1Dyalog 9.0.1 ile yapabiliriz .
Adám

Başka bir serin beklenti, J'deki güç X^Ygibi bazı X ve Y sayıları ^, APL'deki LCM sayıları içindir .
Adám

2
2000 yılına kadar çıkan sürümlerle birlikte bir sayfa özellikler buldum, jsoftware.com/release/status.htm
miles

46

10 yıl, 12 dil, 2430 bayt

Bu cevap kendim ve 1000000000 kullanıcısı arasında bir işbirliğidir .

Kısa bir dil listesi:

Brainfuck    1993
Befunge      1993
Piet         2001
Whitespace   2003
Braincopter  2005
Grass        2007
Starry       2008
Paintfuck    2008
Brainbool    2010 (11111011010)
Python 2.7.2 2011
Fission      2014
Brainflak    2016 

İşte kod:

P3v="";print(sum([ord(x)for x in"~~~~~~~~~~~~~~~y"]));"""{}{}     + + +---[.     + +..  '.. +. +.. +. +. +.] + + + + + + +(((((()()()()){}){}){}){})({({} +-[<() + + + + + + +>-()])}{}<[. + + + + + + + +..-------  `             +.[-]]>)[< '
 17 12 
# > 7*::,8 +:,,2 +,@<>R"2014";]*ne*e*es*s*swWWW*swWWWW*sw*e*e*e*eeev*wn*n*n*n*ne*e*se*s*s*s*sWWwWWWw**e*eeee*vwn*n*n*n*ne*e*se*s*s*s*sWWWw*eeee*e*ne*n*nWWWWWw*ne*nWWWWWWw*w*sw*se*sWWWWWWWw*s*WWWWWWwwwWWWWWWWWWWwWWWWWWWWWWwvwWWWwWWWWwvwWWwWWWwvwWWwWWWwvwWWwWWWwvwWWwwwwwwwwwwwWWWwWWWWWwWWWWWWWwWWWWWWWWWwWWWWWWWWWWWWWWWwWWWWWWWWWWWWwv `
255 0 255 255   0   192 192 0   192 192 0 192 192   192 255
255 192
255 255 192
255
255
0 255 255 0 255 255 0 255 255 0 255 255 0 192 192 192 255 255 255 255 255 0 192 192 0 0 255 255 255
255 0 0 255 0 192 192 0 192 192 0 192 192 192 255 255 192 255 255 192 255 255 192 255 255 0 255 255 0 255 255 0 255 255 0 192 192 255 255 255 255 255 255 255 255 255 255 255 255 0 192
192 0 0 255 0 192 192 0 192 192 0 192 192 0 192 192 192 255 255 192 255 255 192 255 255 0 255 255 0 255 255 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0
255 0 192 192 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 255 255 255 255
255 0 192 192 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 255 255 0 192
192 0 192 192 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 255 255 0 0
255 0 192 192 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 0 255 255 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 255 255 255 255
255 0 192 192 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 255 255 0 192
192 0 192 192 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 255 255 0 0
192 0 192 192 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 255 255 0 0 0 0 0 0 255 255
255 0 192 192 0 0 255 0 0 255 255 255 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 255 255 255 255 255 255 0 0 255 0 0 255 0 255 255 0 0 0 0 192 192 0 0
255 0 192 192 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 255 255 0 0 0 0 192 192 0 192 192
#   """

Buna bir cevap dahilinde uyum sağlamak için tüm TIO bağlantılarından vazgeçeceğim ve kodun kullanıcı tarafından girilebileceği geçerli bir tercümana bağlantı göndereceğim. İşte bu amaç için bir Pastebin linki .

Piet

Kullandığımız Piet yorumlayıcısının okuyabileceği görüntü biçimlerinden biri olan PPM dosya biçimi , düz metin ASCII sürümüne sahiptir. Bunu kullanarak, Piet ve Braincopter tarafından okunan görüntü dosyasına başka dillerin kodunu önemsiz olarak gömdük.

Resim şöyle gözüküyor:

Ham görüntü

Görüntünün tamamı Piet için önemli değil. İşte Piet'in kod boyunca takip ettiği yolu vurgulayan bir çizgi içeren bir sürüm:

Piet yolu

Programı oluşturmak için biraz karmaşık yöntemlere rağmen, programın kendisi oldukça basittir. Resmin üstü boyunca 1 10 10 10 2yığına iter ; kenar boyunca üç kez çoğalır ve bir kere ekler. Alt köşede sonucu (2001) çıkarır ve sonra durur.

Braincopter

Braincopter diğer görsel dildir. Aynı zamanda ppmçalıştırmak için aynı görüntü dosyasına güveniyor . Npiet'teki çok sert kısıtlamalar nedeniyle Braincopter kodumuz yalnızca orijinal Braincopter operasyonlarının bir alt kümesini kullanabilir. Piet’te geçerli renkler kullanmakla sınırlıyız. Bu, -operatörü Braincopter'den kaldırır .

Braincopter kodu tarafından izlenen yol:

Braincopter yolu

Braincopter programı, -operatör olmayışı nedeniyle biraz garip . Camgöbeği ve koyu camgöbeği duvarları işaretçiyi yeniden yönlendirmek için hizmet eder ancak bunun dışında beyin fırtınası ile aynıdır:

++++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++..+++++.

Bu 2005 yazdırır.

Paintfuck

Paintfuck listemizdeki üçüncü görsel programlama dilidir, ancak resim çekmek ve metin çıkarmak yerine, Paintfuck metni alır ve bir resim çıkarır.

Paintfuck alakasız karakterleri görmezden geldiğinden, no-ops olarak kodun çoğu önemsizdir. Kodun ilgili bölümü:

nsn**ne*e*es*s*sw*sw*sw*e*e*e*eee*wn*n*n*n*ne*e*se*s*s*s*sww**e*eeee*wn*n*n*n*ne*e*se*s*s*s*sw*eeee*e*ne*n*nw*ne*nw*w*sw*se*sw*s*wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwnsn**ne*e*es*s*sw*sw*sw*e*e*e*eee*wn*n*n*n*ne*e*se*s*s*s*sww**e*eeee*wn*n*n*n*ne*e*se*s*s*s*sw*eeee*e*ne*n*nw*ne*nw*w*sw*se*sw*s*wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

İşlem dışı olmasalar da w, kodun sonundaki s hiçbir şey yapmaz. Solüsyonun çim kısmı için oradalar. n, e, sVe wresmin etrafında hareket etmek için kullanılır ve *belirli bir yerde bir noktaya çizmek için kullanılır. Program çıktıları:

Paintfuck çıkışı

Daha büyük bir sürüm:

Painfuck çıkışı, ancak daha büyük

brainfuck

Paintfuck gibi Brainfuck çoğu karakteri yok sayar. Burada bir kez daha önemli olanlar:

 []+++---[.++....+.+..+.+.+.]++++++++-[<+++++++>-]<[.++++++++..-------+.[-]]>[<>,+,,+,<>]

Bunun çoğu, durumla daha da alakasızdır ve başka bir dilin ihtiyaç duyduğu karakterler olabilir. Bu kodun daha ince versiyonu:

+++++++[<+++++++>-]<[.++++++++..------.[-]]

Bu oldukça basit basar 1993.

Brainbool

Brainbool, karakter seçiminde Brainfuck'a çok benziyor. -İkisinin birlikte dokunmasına izin veren büyük fark, Brainbool'da bir eksikliğidir . Brainbool için önemli karakterler:

[]+++[.++....+.+..+.+.+.]++++++++[<+++++++>]<[.++++++++..+.[]]>[<>,+,,+,<>]

Brainbool ve brainfuck'ın çıktıları birbirini dışlar. Brainbool çıktısını ikinci sette saklıyor []. Brainfuck +++---, [ayarını sıfıra getirmeden ve çıktısını atlamasına neden olmadan önce karşılaşır , Brainbool ise sadece devrenin +++içinden geçmesine neden olan 1 ayarını görür . Benzer şekilde Brainbool 4. döngüde sıfıra ayarlanmış, Brainfuck 49 değerine sahip olan döngüye girerken atlanmasına neden olmuştur.

Brainbool’un ondalık çıkışı olmadığından, 2010’u ikili olarak verir:

11111011010

fizyon

Kodun fisyon için önemli olan tek kısmı:

R"2014";

RBir atomda çağrı sağ hareket "2014"baskılar 2014ve ;durur şekilde yerine getirilmektedir.

Befunge

Befunge sadece aşağıdaki karakterlerden geçer:

P3v
  7
  > 7*::,8 +:,,2 +,@

P3Piet için geçerli Ppm görüntüsü oluşturmak için gerekli olan ve kümülatif yığını için bir 3 itin. vaşağı doğru işaretçiyi yönlendirmek için yerleştirilir. Yoluyla Daha sonra geçtiği 7olarak 17kullanılan Ppm görüntünün genişliğini gösterir. >Sağa işaretçi yönlendirir. 7*yığının tepesini 7 ile 49 (ASCII değeri 1) bırakarak yığının tepesini çarpar . ::yığının üstünü iki kez kopyalar. 1Tarafından verilen ,. 8 +ASCII'ye en üste 8 ekler 9. iki kez :,,çıktı verir 9. 2 +ASCII'yi 1bir ASCII'ye yükseltir 3ve ,yazdırır. Sonunda @programı sonlandırır.

Hepsi hepsi basar 1993.

Beyaz boşluk

Boşluk, adından da anlaşılacağı gibi, programlarında yalnızca boşluk kullanır. Whitespace yorumlayıcısının gördüğü şey şudur:

[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][LF]
[Space][Space][Space][LF]
[Space][Space][Space][Space][Space][LF]
[Space][Space][Space][Tab][Tab][Tab][Tab][Tab][Space][Tab][Space][Space][Tab][Tab][LF]
[Tab][LF]
[Space][Tab][LF]
[LF]
[LF]
[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][LF]
[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][LF]
[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][LF]
[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][LF]
[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][LF]
[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][LF]
[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][LF]
[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][LF]
[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][LF]
[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][LF]
[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][LF]
[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][LF]
[Space][Space][Space][LF]

Bu kodun yaptıklarının çoğu, programın çalıştırılmasıyla aynı değildir (sadece boşluk içeren tüm satırlar yığına sıfıra basar). Önemli kısmı:

[Space][Space][Space][Tab][Tab][Tab][Tab][Tab][Space][Tab][Space][Space][Tab][Tab][LF]
[Tab][LF]
[Space][Tab][LF]
[LF]
[LF]

İlk satır 2003’ü yığına iter. Bundan sonra [Tab][LF][Space][Tab]yığının (2003) üst kısmını sayı olarak yazdırır. Son olarak, son üç satır besleme programın yürütülmesini sonlandırır.

çimen

Çim İlk dek tüm karakter yok sayar wdosyasında ve olmayan tüm karakterden sonra w, Wya v. Grass tercümanı okur:

wWWWwWWWWwv
wWWwWWWwv
wWWWwWWWWWwWWWWWWwwwWWWWWWWwWWWWWWwwwWWWWWWWWWWwWWWWWWWWWWwv
wWWWwWWWWwv
wWWwWWWwv
wWWwWWWwv
wWWwWWWwv
wWWwwwwwwwwwwwWWWwWWWWWwWWWWWWWwWWWWWWWWWwWWWWWWWWWWWWWWWwWWWWWWWWWWWWwv

İlk satır, geçtiği şeye iki ekleyen bir işlevi tanımlar. İkinci satır, geçtiği şeye dört ekleyen bir işlevi tanımlar. Üçüncüsü iki artı argümanı basan bir işlevi tanımlar, argümanı iki kez basar, sonra nihayet yedi artı argümanı yazdırır (Grass, ASCII değerine göre karakterler yazdırır). Dördüncü, beşinci ve altıncı çizgiler sırasıyla sekiz ekleyen, 16 ekleyen, 32 ekleyen ve argümanlarına 64 ekleyen işlevleri tanımlar. Son satır, karakteri alan ana işlevi tanımlar w(Grass'da yalnızca önceden tanımlanmış sayı, ASCII değeri 119) ve programda tanımlanan ekleme işlevlerini ve yerleşik bir ekleme işlevini kullanarak ona 185 ekler. Grass sayıları 256 olarak sarar ve sonuç 48'dir (karaktere karşılık gelir).0). İşlev daha sonra bunu 2007'yi basan üçüncü satırın işlevine geçirir.

Yıldızlı

Starry alan dışında her şeyi yok sayar +, *, ., ,, `, ve '. Böylece yıldızlı tercüman sadece şunu görür:

       + + +.     + +..  '.. +. +.. +. +. +. + + + + + + + + + + + + + + +. + + + + + + + +..  `             +. '
     *, +,, +,************************************************* `

Bununla birlikte, etiket ve atlama talimatları, kodun çalıştırılması durumunda sorunlara neden olabilecek bölümlerini atlamak için kullanılır, bu nedenle kod etkili bir şekilde şudur:

       + + +.     + +..  '  `             +. ' `

Bu kod, ikisini yığına iter, iki kez çoğaltır ve ardından bir tanesini çıkar ve sayı olarak yazdırır. Sonra sıfıra basar, çoğaltır ve her iki sıfırı da sayı olarak yazdırır. Daha sonra iki sopayı atlar ve zıplar ve sonra yığını yekine iter ve çıkar ve basar sayı şeklindedir. Sonunda yığındaki son ikisini çıkar ve programın sonuna atlar.

Python 2.7.2

Python kodu şu formatı izler:

P3v="";print(sum([ord(x)for x in"~~~~~~~~~~~~~~~y"]));"""..."""

nerede ...diğer önemsiz tamamı için duruyor.

İlk satır, P3v=""orada geçerli bir .ppmdosya olması için kodumuzun bununla başlaması gerekir P3normalde hata olur, ancak python'a söylersek değişken bir bildirimdir, onu görmezden gelir.

Sonra baskı yapmalıyız 2011. Ancak, a .ppmformatlandığı için bu satıra herhangi bir sayı ekleyemeyiz. Bunu aşmak için dizenin tüm ASCII değerlerini toplar "~~~~~~~~~~~~~~~y"ve sonucu basarız. Sonunda, çok satırlı bir yorumun üçlü tırnaklarını kullanırız, böylece python her şeyi görmezden gelir.

Brainflak

En iyisini sona sakladık.

Brainflak, diğerleri gibi çoğu karakteri yok sayar. İlgili karakterler:

(([()])){}{}[](((((()()()()){}){}){}){})({({}[<()>()])}{}<[[]]>)[<><>]

Python kodu (([()]))-1'i yığına iki kez iter, böylece programın işlemeye başlaması için kaldırılması gerekir.

Bundan sonra Brainbool []hiçbir şey yapmayan bir nilad kullanır ve program başlar.

(((((()()()()){}){}){}){})({({}[<()>()])}{}<[[]]>)2016'yı zorluyor. Son [<><>]Befunge ve Brainfuck'un kalıntıları ancak neyse ki hiçbir şey yapmıyor.

Program sona erdiğinde yığının içeriğini yazdırır, yani yazdırır 2016.


Parlak! Piet'in bir şekilde görünmesini umuyordum, her şeyi PPM'ye yerleştirmek çok zekice. Aferin!
cincodenada

1
İçin +1 We saved the best for last. : D
DJMcMayhem

38

5 yıl

#define q/*-[>+<-----]>--.++++++++..------.[-][
print('2010'if len(bin.__doc__)==86else'2015')
"""*/
main(c){c=-4.5//**/
-4.5;printf("19%d",90-c);}
#define w/*]
*/"""

1989: C89 [1] ve 1999: C99

Tek hat açıklama //amacıyla bir C89 derleyici kodu okumak olur, C99 ilave edilmiş c=-4.5 / /*comment*/ -4.5olarak aynı olan, c=-4.5 / -4.5bir C99 derleyici gibi şöyle olur, oysa c=-4.5 //comment/**/
- 4.5aynı olan, c=-4.5 - 4.5.
Python kısmı C programındaki bir yorumdur.

2010: Python 2.7 ve 2015: Python 3.5

Dokümanlar Python 3 ile 2 arasında değişir, bu program Python sürümünü tespit etmek için dokümanın uzunluğunu kullanır.
C kısmı Python programındaki bir dizgidedir.

1993 [2] : Brainfuck

Temelde olmayan her şeyi görmezden geliyor .,[]+-<>. C programının ,içinde olduğu için, geçerli baytı 0 olarak ayarlayarak Brainfuck'ı bu bölümü kapatmak için yapmak zorunda kaldım.


  1. C89 spec 1990 yılında piyasaya sürüldü. Daha fazla bilgi .
  2. Resmi bir çıkış tarihi bulamadım, bu yüzden Esolangs ve Wikipedia'ya inanacağım .

4
Bu, özellikle, büyük -4.5/-4.5ve -4.5-4.5. İki ana dilin her birinin iki versiyonunu ezmek oldukça etkileyicidir, hatta orada BF atmadan :-)
ETHproductions 2:06

Bu kod koyucu değil, ama a=2. hatta gereksiz
TheInitializer

@TheInitializer evet, ben denedim a=ve bir hata verdi, bu yüzden tutmaya karar verdim. Neden bir yazım hatası olsa da, neden bir hata verdi bilmiyorum.
16'da 5

@betseg bu kod yalnızca Python'da çalıştırılıyorsa çalışmalıdır.
Başlatıcı

17

15 yaş, JavaScript

JavaScript'in sürüm döngüsü çok sıradışı ve tutarsız olduğundan, Firefox uygulamasını kullanacağım. Lütfen buna izin verilmiyorsa bana bildirin.

Sürümler: Phoenix 0.1 , Firebird 0.6 , Firefox 1.0.0 , 1.5.0 , 2.0.0 , 3.0 Beta 1 , 3.0.0 , 3.5.0 , 3.6.0 , 4.0.0 , 10.0.0 , 18.0.0 , 27.0 .0 , 35.0.0 , 44.0.0 (tümü Windows 7'de test edilmiştir)

Önemli not: Firefox 1.0.0 veya daha sonraki bir sürümün kurulması ve açılması , geçmiş ve yer imleri de dahil olmak üzere kayıtlı tüm Firefox verilerinizi silebilir .

Ayrıca, 1.0.0 ile başlayan, bir seferde sadece bir sürüm açık olabilir; başka bir sürüm açmaya çalışmak, halihazırda açık olan sürümün yeni bir penceresinde sonuçlanır.

Talimatlar

kod

<script onbeforeunload="123">
// This uses document.write because alert does nothing in Phoenix (Firefox) 0.1.
document.write((function () {
    function assert (code) {
        try {
            eval(code);
            return true;
        } catch (e) {
            return false;
        }
    }

    // Firefox 44 supports octal and binary literals in Number(); Firefox 35 does not.
    if (Number("0o1") === 1)
        return 2016;

    // Firefox 35 supports template strings; Firefox 27 does not.
    if (assert("`abc`"))
        return 2015;

    // Firefox 27 supports argument spreading; Firefox 18 does not.
    if (assert("Math.max(...[1, 2, 3])"))
        return 2014;

    // Firefox 18 supports default arguments; Firefox 10 does not.
    if (assert("function q(a = 1) { }"))
        return 2013;

    // Firefox 10 has basic WeakMap support; Firefox 4 does not.
    if (assert("WeakMap.a"))
        return 2012;

    // Firefox 4 has basic typed array support; Firefox 3.6 does not.
    if (assert("Int8Array.a"))
        return 2011;

    // Firefox 3.6 added the async attribute to script elements.
    if (assert("document.getElementsByTagName('script')[0].async.a"))
        return 2010;

    // Firefox 3.5 added the String.prototype.trim() method.
    if (assert("'abc'.trim()"))
        return 2009;

    // Firefox 3.0 added partial support for object destructuring.
    if (assert("var {c} = {c: 7}"))
        return 2008;

    // Firefox 3.0 beta 1 added the Array.prototype.reduce() and Array.prototype.reduceRight() methods.
    if (assert("[].reduce.a"))
        return 2007;

    // Firefox 2.0 added support for restricted words as properties.
    if (assert("({if:1}).if"))
        return 2006;

    // Firefox 1.5 added the Array.prototype.indexOf() methods, along with a couple other Array methods.
    if (assert("[1].indexOf(1)"))
        return 2005;

    // Practically the only JS difference between v0.6 and v1.0 is the addition of the onbeforeunload event.
    if (assert("document.getElementsByTagName('script')[0].onbeforeunload.a"))
        return 2004;

    // The Object.prototype.eval() method was removed in Firebird 0.6.
    if (!assert("'abc'.eval()"))
        return 2003;

    // We're all the way back to the good old Phoenix 0.1 browser...
    return 2002;
})());
</script>

<!--<<<<-[>+<-----]>--.++++++++..------.[-][-->Senaryoyu BF: 'yi yazdıktan sonra 16. seneyi ekleyebilir ve senaryodan önce ve daha ]sonra içeren başka bir HTML yorumu yapabilirsiniz .
Steven H.

6
@StevenH. Um ... vay, ben bu esolangs dahil asla düşünmedim. Ve bu
BF'yi

13

6 dil, Turtlèd ve brainfuck , Python 3.5, Python 2.7, > <> , Fisyon

Turtlèd bu yıldan önce var değildi ve github taahhüt etmese bile BF 1993'te yayınlanan esolang sayfası kanıtına sahip olsa bile, kolayca hedeflendi. Python 3.5 2015, 2.7, 2010.> , 2009’u belirten, Fission, 2014

#-[>+<-----]>--.++++++++..------#"2016"/
print(2015 if len(len.__doc__)==42 else 2010)
#;                           oooo"2009"/
#;"4102"L

Muhtemelen esolangs bf sabitleri sayfasına kredi vermeliyim ... ¯ \ _ (ツ) _ / ¯

Nasıl çalışır?

Turtlèd:

Turtlèd, ilki dışındaki satırlar için gerçekten hiçbir şey yapmaz:

#-[>+<-----]>--.++++++++..------#"2016"/
  ^sets string variable to this   ^ prints 2016

/ bir hayır

brainfuck

Brainfuck komutlarda olmayan karakterleri yoksayar

görür -[>+<-----]>--.++++++++..------.(son. python bölümündendir)

sadece Brainfuck ile ilgili şeyler yapar, 255'i 5'e bölmek için sarmayı kullanır, sonra sonucu 2 çıkarır, yazdırır, 8 kez arttırır, iki kez yazdırır, 6 kez azaltır, yazdırır

Python 2 ve 3

print(2015 if len(len.__doc__)==42 else 2010)

len belgelerinin uzunluğu sürümler arasında değişebildiğinden, sürüm 2 için, eğer doğru uzunluksa sürüm 2 için bir yıl yazdırabilir.

> <>

# işaretçiyi geriye doğru yansıtır, böylece çizginin diğer tarafına / noktasına vurur, aradaki boşluktan geçer elseve 2010sonra tekrar "2009" a basar, ardından 9,0,0,2'yi yığının üzerine iter, sonra tersine basılır .

fizyon

Fisyonun yumurtlayanları var, bu yüzden en altta tek başına çalıştığı bir çizgi olabiliriz:

#;"4102"L
        L spawn left moving atom
  "4102"  print this right to left
 ;        halt
# python comment

13

3 yıl, 3 dil: C, TeX, MIXAL

*main(){puts("1990");}/*\newwrite\O\openout\O=O\write\O{1982}\bye                                                                                                                              
START   ENTA    1997
        CHAR
        STX     6
        OUT     6(19)
        HLT
        END     START   */ 

Dosyayı adlandırın date.mixal.

  1. C (1990) - uyarı ve baskılar hazırlar 1990için stdout.
  2. TeX (1982) - ile derlemek tex date.mixal; 1982dosyaya yazdırır O.tex(DVI çıkışını yoksay).
  3. (1997) MIXAL - GNU Mix Development Kit kullanılarak derleme, mixasm date.mixalve çalıştırmak mixvm -r date.mix; 1997teletype cihazına yazdırır (= stdout).

TeX ve MIXAL programları C programında bir yorumda; MIXAL programı bundan sonra gelir, \byeTeX bunu görmezden gelir. C ve TeX programları, MIXAL programında bir yorumdur. Nedense gcckabul etmeye istekli *main.


MIXAL, +1: D
cat

13

3 yıl (GolfScript, CJam, MATL), 24 23 bayt

[A11]Wd%;200 1e2/0 8_+(

Bu çıkışlar

  • 2007 GolfScript'te.

  • 2015 CJam’da (sürüm 0.6.5).

  • 2016 MATL'de (versiyon 19.2.0).

açıklama

Golfscript

Tanımsız belirteçler GolfScript'te isim değildir . Kodun gerçekten bir şey yapan kısımları:

200      Push 200
           STACK: 200
1        Push 1
            STACK: 200, 1
/        Divide
           STACK: 200
0        Push 0
           STACK: 200, 0
8        Push 8
           STACK: 200, 0, 8
+        Add
           STACK: 200, 8
(        Subtract 1
           STACK: 200, 7
         Implicitly display 200, 7 as "2007"

CJam

[A11]    Push array [10 11]
           STACK: [10 11]
W        Push -1
           STACK: [10 11], -1
d        Convert to double
           STACK: [10 11], -1.0
%        Select elements from array
           STACK: [11 10]
;        Pop
           STACK is empty
200      Push 200
           STACK: 200
1e2      Push 100
           STACK: 100
/        Divide
           STACK: 2
0        Push 0
           STACK: 2, 0 
8_       Push 8 and duplicate
           STACK: 2, 0, 8, 8
+        Add
           STACK: 2, 0, 16
(        Subtract 1
           STACK: 2, 0, 15
         Implicitly display 2, 0, 15 as "2015" 

Matl

Her şey %bir yorumdur.

[A11]    Push array [5 11]
           STACK: [5 11]
W        2 raised to that
           STACK: [32 2048]
d        Compute increment
           STACK: 2016
         Implicitly display as "2016"

Düzeltme: %[11 10] ' u aldıktan sonra CJam' de . Önemli değil.
aditsu

@aditsu Whoops! Teşekkürler, düzenlendi
Luis Mendo,

12

2 dil, Python 2.7 ve Python 3.5

Python 2.7, 2010 yılında piyasaya sürüldü .

Python 3.5, 2015 yılında piyasaya sürüldü .

print('2010'if 3/2==1else'2015')

Bu , operatörün Python 2'deki tamsayı bölümünden Python 3'teki kayan nokta bölümüne değiştirildiği PEP 238'e dayanmaktadır /.


3
O böcek / sürümleri arasındaki operatörler değişiklikleri belirlemeyi gerektirir, bu eğlenceli bir meydan okuma olabilir
mil

1
@TuukkaX Bu Fedora 24. Python 2.7.12 ve Python 3.5.1 hem benim için çalışıyor
mil

1
Onun '2010'if 3/2>1else'2015'yerine yapamaz mısın ?
Qwerp-Derp 29:16

15
Veya biz matematik:print(int(2010+1/2*10))
Jakube

2
print('2015'if 1/2else'2010')daha iyi
Cyoce

12

8 yıl, TI-Basic

Disp 1996           <-- TI-83
Text(-1,1,1,1
ClrHome
Disp 1999           <-- TI-83+ OS 1.03 (initial OS)
sub(1
ClrHome
Disp 2002           <-- TI-83+ OS 1.15
isClockOn
ClrHome
Disp 2004           <-- TI-84+ OS 2.21
invT(e,1
ClrHome
Disp 2005           <-- TI-84+ OS 2.40
CLASSIC
ClrHome
Disp 2009           <-- TI-84+ OS 2.53
BackgroundOn
ClrHome
Disp 2013           <-- TI-84+ Color Silver Edition
Send({1
ClrHome
2015                <-- TI-84+ Color Edition OS 5.1

"Programların herhangi biri STDERR'ye yazdırabilir veya doğru çıktı hala STDOUT'a veya bir dosyaya yazdırıldığı sürece çalışma zamanı / derleme zamanı hataları ve uyarıları verebilir." Şu anda, tek hata olmayan ekran yılıdır, bu nedenle bu kurala uyuyoruz. Bunun yerine belleğe yazmak istiyorum Ancak, yerini Disp (date)ile (date)->I.

Referanslar:

  1. Hesap makinesinin çıkış tarihleri ​​- https://epsstore.ti.com/OA_HTML/csksxvm.jsp?nSetId=74258
  2. TI-83 + OS 1.15 çıkış tarihi - http://wikiti.brandonw.net/index.php?title=83Plus:OS:VersionDifferences#TIOS_1.15
  3. Hesap makinesi uyumluluğu - http://tibasicdev.wikidot.com/compatibility
  4. TI-84 + CSE çıkış tarihi - https://www.amazon.com/Texas-Instruments-Silver-Graphing-Calculator/dp/B00AWRQKDC
  5. TI-84 + CE çıkış tarihi - http://www.prnewswire.com/news-releases/texas-instruments-unveils-the-new-ti-84-plus-ce-300026266.html ve https: // www. cemetech.net/forum/viewtopic.php?t=8870

9

5 yıl, Go 1.0, 1.1, 1.4, 1.5, 1.6: 285 257 bayt

(1.2 2013'te 1,1 gibi 1,3, 2014'te 1,4 gibi 1,3 ve 2016'da 1,7 gibi 1,7 olarak yayınlandı.)

Bunu her versiyonda test etmedim, çünkü sadece 1.6'ya erişebiliyorum, ancak teoride çalışması gerekiyor! Dil değişiklikleri muhtemelen programın derlenmemesine neden olur, bu yüzden standart kütüphane değişikliklerine güvenirim.

package main
import(."fmt"
."reflect"
."time")
func main(){s:="6"
if _,e:=Parse("2016-Sep-30","2016-Sep-31");e==nil{s="5"}
if Sprint(ValueOf(0))!="0"{s="4"}
if Sprint(&map[int]int{1:1})[0]!='&'{s="3"}
if string(0xd800)==string(0xfffd){s="2"}
Print("201"+s)}

Ungolfed ve yorumladı:

package main

import (
    "fmt"
    "reflect"
    "time"
)   package main

import (
    . "fmt"
    . "reflect"
    . "time"
)

func main() {
    s := "6"
    // 1.6: time.Parse rejects invalid days
    if _, e := Parse("2016-Sep-30", "2016-Sep-31"); e == nil {
        s = "5"
    }
    // 1.5: A reflect.Value now prints what it holds, rather than use
    // its String() method
    if Sprint(ValueOf(0)) != "0" {
        s = "4"
    }
    // 1.4: Printing pointers to maps gives the map instead of the address
    if Sprint(&map[int]int{1: 1})[0] != '&' {
        s = "3"
    }
    // 1.1: Unicode surrogate halves are no longer allowed
    if string(0xd800) == string(0xfffd) {
        s = "2"
    }
    Print("201" + s)
}

7

4 yıl, 99 bayt / 77 karakter

v=1//1;"""
 1991/*"""
for i in[0]:print 2010#🔟😃😇🔟😗➕➕😨
"""
"
>9002nnnn;
"""#*/

Not: Yılların doğru olup olmadığından emin değilim.

  • Python 2.7, 2010
  • Javascript, 1991
  • Emotinomicon, 2015
  • ><>, 2009

Python ve JS'nin birlikte nasıl çalışacağını bulmam biraz zaman aldı.

açıklama

v=1//1;"""değişkeni ayarlar viçin 1bölü 1, ve Python 1(JavaScript //JavaScript bir yorum başlar) ve ;"""Python bir çok satırlı dize başlatır. ;O JavaScript durmasına yapacak çünkü bir satır ile değiştirilemez.

1991/*"""multiline dizesinin geri kalanı. Boşluğa ihtiyaç duyulur, böylece> <> 1yığına itmez. Çok satırlı dizgenin başlangıcı Javascript'te bir yorumun parçası olduğundan, çok satırlı bir yorum yazdırır 1991ve başlatır.

for i in[0]:print 2010#🔟😃😇🔟😗➕➕😨Python'da, listeyi yineleyen [0]ve çalışan bir for döngüsüdür print 2010. Yorum yalnızca Emotinomicon kodudur (bir emoji veya dize olmayan her şeyi yoksayar). > <> fÖğesinde , ( ) 15 yığına iter .

For döngüsü kaldırılamaz çünkü> <> 'nin IP'si sütun 1'de aşağıya doğru gidiyor ve p>>> içinde geçerli bir komut değil. Ayrıca bunu bir cümleyle değiştiremezsiniz if, çünkü i> <> girişine girilmesi gereken komuttur.

""" Çok satırlı bir dizgenin başlangıcıdır.

" > <> 'da açtığımız dizgiyi kapatmak için gerekli olan çok satırlı dizinin bir parçasıdır (önceki satırın ilk tırnak işareti> <> dizgesini başlattı).

>9002nnnn;> <> içinde, sağa IP yönünü değiştirir iter 9, 0, 0ve 2bu çıktıyı numaraları gibi ve programı sonlandırır.

"""#*/Python'da, çok satırlı dizeyi sonlandırır ve bir yorum başlatır. Javascript'te, */çok satırlı yorumu sonlandırır.


Gol> <> ile Bonus versiyon:

5 dil, 4 yıl, 118 114 bayt / 96 92 karakter

v=1//1;"""
 1991/*"""
for i in[0]:print 2010#🔟😃😇🔟😗➕➕😨
"""
`
"
>9002nnnn;
"
>5102nnnn;
"""#*/
  • Golfish v0.4.2, 2015

Explanation²

IP sol üst köşeden başlayarak sağa döner. vO inmek yapar.

fiter 15.

" dize başlar.

` karakterlerden kaçmak için kullanılır,> <> olmayan bir şey.

"ipi kapatmalı, ama kullandık `, öyle değil.

> dizenin bir parçası.

" dizeyi sonlandırır.

>5102nnnn;asıl koddur. >IP sağa git yapar 5102iter 5, 1, 0ve 2, ve nnnn;sayıları yazdırır ve programı sona erer.


Uygun başlık olmadan unicode karakterlerde Python hataları. ( SyntaxError: Non-ASCII character '\xf0' in file test.txt on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details)
Buğday Sihirbazı

UTF-8 olarak dosyayı kaydedin @WheatWizard
acrolith

7

7 yıl, 8 tarayıcı

Tam dil sürümleri değil çünkü css aslında sürümleri içermez, ancak tarayıcı sürümleri (belki de derleyici sürümleri olarak düşünülebilir mi?)

Aşağıdaki tarayıcılar için bu, tarayıcı adını, sürümünü ve yayınlanma tarihini ve başka hiçbir şeyi yazdırmaz. Birkaç şeyi daha sonraki sürümler için aynı şeyi yazdırıyor, (kromun eski sürümlerini sürüm numarasına göre indirmek zor olduğundan, kromun ekran görüntülerinde bir sürüm olduğunu göreceksiniz)

Kullandığım sürüm numarasını yazdırabilirdim, ancak kullanılan özelliğin tanıtıldığı ilk sürümü göstermeyi tercih ettim.

  • IE6
  • IE7
  • IE8
  • IE9 (denenmemiş, etrafında bir IE9 yok)
  • Firefox 4
  • Firefox 3.6
  • Chrome 18
  • Chrome 21
  • Modern Tarayıcılar

FF3.6 FF4 Chromium19 Chromium22 IE8-tuhaflıklar IE8-IE7compatibility IE8

index.html

<!DOCTYPE html>
 <html>
  <head>
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <link rel=stylesheet href=style.css>
  </head>
  <body>
    <div class=borderbox>
      <div class="inlineblock">
        &nbsp;IE6-2001
      </div>

      <div class="white">
        <div class="outofbox">
          <a href="#">IE8-2009</a>
        </div>
        <div class="inherit">
          <a href="#">IE7-2006</a>
        </div>
      </div>
    </div>
    <div class="white">
      <header class="filter-quirk filter-blur filter-blur-url">
        IE9
      </header>
    </div>
    <div class="flex white">
      Modern Browsers - 2017
    </div>
    <div class="webkit-flex">
      <div class="">
        Chrome 21-2012
      </div>
    </div>
    <div class="webkit-invert white flexdisable">
      <div class="">
        Chrome 18-2012
      </div>
    </div>

    <svg style="position: absolute; top: -99999px" xmlns="http://www.w3.org/2000/svg">

    </svg>

    <div class="filter">
      <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
        <g
           transform="scale(8)"
           aria-label="FF4"
           id="text8419">
           <rect
              style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.79374999;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
              id="rect21965"
              width="17.005648"
              height="3.9855044"
              x="-0.16825682"
              y="-0.025296567" />
          <path
             d="m 1.0052634,1.5511362 v 0.7639843 h 0.4564063 q 0.092604,0 0.092604,0.066146 0,0.069453 -0.092604,0.069453 H 0.69107072 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 h 0.1785938 V 0.72431329 h -0.1785938 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 H 2.1793519 V 1.0484278 q 0,0.089297 -0.069453,0.089297 -0.066146,0 -0.066146,-0.089297 V 0.72431329 H 1.0052634 V 1.4155373 H 1.4848207 V 1.2667091 q 0,-0.089297 0.066146,-0.089297 0.069453,0 0.069453,0.089297 v 0.4332552 q 0,0.089297 -0.069453,0.089297 -0.066146,0 -0.066146,-0.089297 V 1.5511362 Z"
             style="fill:#000000;stroke-width:0.79374999"
             id="path8421" />
          <path
             d="m 2.9883464,1.5511362 v 0.7639843 h 0.4564063 q 0.092604,0 0.092604,0.066146 0,0.069453 -0.092604,0.069453 h -0.770599 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 H 2.8527475 V 0.72431329 H 2.6741537 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 H 4.1624349 V 1.0484278 q 0,0.089297 -0.069453,0.089297 -0.066146,0 -0.066146,-0.089297 V 0.72431329 H 2.9883464 V 1.4155373 H 3.4679037 V 1.2667091 q 0,-0.089297 0.066146,-0.089297 0.069453,0 0.069453,0.089297 v 0.4332552 q 0,0.089297 -0.069453,0.089297 -0.066146,0 -0.066146,-0.089297 V 1.5511362 Z"
             style="fill:#000000;stroke-width:0.79374999"
             id="path8423" />
          <path
             d="M 5.6692683,1.8917872 H 4.7729923 V 1.7363445 l 0.754062,-1.28322911 h 0.277813 V 1.7561883 h 0.112448 q 0.0893,0 0.0893,0.069453 0,0.066146 -0.0893,0.066146 h -0.112448 v 0.4233333 h 0.112448 q 0.0893,0 0.0893,0.066146 0,0.069453 -0.0893,0.069453 h -0.499402 q -0.0893,0 -0.0893,-0.069453 0,-0.066146 0.0893,-0.066146 h 0.251355 z m 0,-0.1355989 V 0.58871439 h -0.07938 L 4.9019713,1.7561883 Z"
             style="fill:#000000;stroke-width:0.79374999"
             id="path8425" />
          <path
             d="M 8.2881171,1.6077068 H 6.9585859 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 h 1.3295312 q 0.089297,0 0.089297,0.066146 0,0.069453 -0.089297,0.069453 z"
             style="stroke-width:0.79374999"
             id="path8422" />
          <path
             d="m 8.9582054,0.90656104 q 0,-0.14882812 0.1785937,-0.31749999 0.1819011,-0.17197916 0.4365625,-0.17197916 0.2414323,0 0.4233333,0.17197916 0.1852081,0.17197916 0.1852081,0.39687498 0,0.14882817 -0.0893,0.28111977 Q 10.006617,1.3960402 9.7056533,1.67716 L 9.0210439,2.3154672 v 0.00992 H 10.059533 V 2.2063266 q 0,-0.089297 0.06945,-0.089297 0.06614,0 0.06614,0.089297 V 2.460988 H 8.8920596 V 2.2625506 L 9.6725804,1.5283318 q 0.2315104,-0.2282031 0.3009635,-0.3307291 0.07276,-0.102526 0.07276,-0.21497396 0,-0.17197916 -0.1422132,-0.30096353 -0.1422136,-0.12898437 -0.3307292,-0.12898437 -0.1686718,0 -0.3075781,0.0992188 -0.1355989,0.0992188 -0.1752864,0.24804686 -0.019844,0.0661458 -0.069453,0.0661458 -0.023151,0 -0.042995,-0.0165365 -0.019844,-0.0198437 -0.019844,-0.0429948 z"
             style="stroke-width:0.79374999"
             id="path8424" />
          <path
             d="m 12.207981,1.3001287 v 0.3307292 q 0,0.3902604 -0.171979,0.6349999 -0.171979,0.2447396 -0.446484,0.2447396 -0.274506,0 -0.446485,-0.2447396 Q 10.971054,2.0211183 10.971054,1.6308579 V 1.3001287 q 0,-0.39356766 0.171979,-0.63830724 0.171979,-0.24473957 0.446485,-0.24473957 0.274505,0 0.446484,0.24473957 0.171979,0.24473958 0.171979,0.63830724 z M 11.589518,0.55268084 q -0.224896,0 -0.353881,0.22820312 -0.128984,0.22489584 -0.128984,0.53578124 v 0.2943489 q 0,0.3241146 0.132292,0.5457031 0.135599,0.2182813 0.350573,0.2182813 0.224895,0 0.35388,-0.2248959 0.128984,-0.2282031 0.128984,-0.5390885 V 1.3166652 q 0,-0.32411458 -0.135599,-0.54239582 -0.132292,-0.22158854 -0.347265,-0.22158854 z"
             style="stroke-width:0.79374999"
             id="path8426" />
          <path
             d="M 13.642054,0.43692564 V 2.3253891 h 0.459713 q 0.0893,0 0.0893,0.066146 0,0.069453 -0.0893,0.069453 h -1.055026 q -0.0926,0 -0.0926,-0.069453 0,-0.066146 0.0926,-0.066146 h 0.459714 V 0.61551938 l -0.373724,0.37372394 q -0.02646,0.0264584 -0.06945,0.0264584 -0.02646,0 -0.0463,-0.0198438 -0.01654,-0.023151 -0.01654,-0.056224 0,-0.0297656 0.03638,-0.0661458 l 0.436562,-0.43656248 z"
             style="stroke-width:0.79374999"
             id="path8428" />
          <path
             d="M 15.625137,0.43692564 V 2.3253891 h 0.459713 q 0.0893,0 0.0893,0.066146 0,0.069453 -0.0893,0.069453 h -1.055026 q -0.0926,0 -0.0926,-0.069453 0,-0.066146 0.0926,-0.066146 h 0.459714 V 0.61551938 l -0.373724,0.37372394 q -0.02646,0.0264584 -0.06945,0.0264584 -0.02646,0 -0.0463,-0.0198438 -0.01654,-0.023151 -0.01654,-0.056224 0,-0.0297656 0.03638,-0.0661458 l 0.436563,-0.43656248 z"
             style="stroke-width:0.79374999"
               id="path8430" />
          </g>
      </svg>
    </div>
    <div class="white gradient msfilter" style=color:white>
      FF3.6-2010
    </div>
  </body>
 </html>

style.css

.borderbox {
    height: 40px;
    overflow: hidden;
    padding-bottom: 100px;
}
.outofbox {
    background: blue none repeat scroll 0 0;
    margin-top: 20px;
    opacity: 0;
}
.white {
    color: white;
}
.outofbox a, .inherit a, .inherit a:visited, .outofbox a:visited {
    color: inherit;
}
.inlineblock {
    display: inline;
    width: 100%;
    zoom: 1;
    display: inline-block;
    margin-left: 100px;
    text-align: right;
}
.white header{
  color: black;
}
.absolute{
  position: absolute;
}
.flex{
  display: none;
  display: flex;
}
.flex.white{
  filter: invert(100%)
}
.webkit-flex{
  display: none;
  display: -webkit-flex;
  overflow: hidden;
  flex-flow: column;
  height: 3em;
  justify-content: flex-end;
}
.webkit-flex div{
  margin-bottom: -1.1em;
}
.flexdisable{
  display: -webkit-flex;
  overflow: hidden;
  -webkit-flex-flow: column;
  -webkit-justify-content: flex-end;
  height: 60px;
}
.flexdisable div{
  margin-bottom: -30px;
}
.filter-quirk{
  filter: url(#quirk);
}
.filter-blur{
  filter: blur(100px);
  -webkit-filter: blur(100px);
}
.webkit-blur{
  -webkit-filter: blur(100px);
}
.webkit-invert{
  -webkit-filter: invert(100%);
  filter: none;
}
.filter-url-dark{
  -webkit-filter: url(filter.svg#Invert);
  filter: url(filter.svg#Invert) invert(100%);
}
.filter-blur-url{
  filter: url(filter.svg#blur) url(filter.svg#brightness);
}
.filter{
  filter: invert(100%) brightness(100%);
  -webkit-filter: invert(100%) brightness(100%) blur(100px);
}
.filter svg{
  position: absolute;
}
.filter svg rect{
  filter: invert(100%);
  -webkit-filter: invert(100%);
}
.msfilter{
    /* IE 8 */
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  /* IE 5-7 */
  filter: alpha(opacity=0);
}
.opacity{

}
.black{
  background: black;
}
.gradient{
  width: 100px;
  background: -moz-linear-gradient( 45deg, #000, #000 );
  font-weight: bold;
}

filter.svg

    <!DOCTYPE html>
 <html>
  <head>
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <link rel=stylesheet href=style.css>
  </head>
  <body>
    <div class=borderbox>
      <div class="inlineblock">
        &nbsp;IE6-2001
      </div>

      <div class="white">
        <div class="outofbox">
          <a href="#">IE8-2009</a>
        </div>
        <div class="inherit">
          <a href="#">IE7-2006</a>
        </div>
      </div>
    </div>
    <div class="white">
      <header class="filter-quirk filter-blur filter-blur-url">
        IE9
      </header>
    </div>
    <div class="flex white">
      Modern Browsers - 2017
    </div>
    <div class="webkit-flex">
      <div class="">
        Chrome 21-2012
      </div>
    </div>
    <div class="webkit-invert white flexdisable">
      <div class="">
        Chrome 18-2012
      </div>
    </div>

    <svg style="position: absolute; top: -99999px" xmlns="http://www.w3.org/2000/svg">

    </svg>

    <div class="filter">
      <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
        <g
           transform="scale(8)"
           aria-label="FF4"
           id="text8419">
           <rect
              style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.79374999;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
              id="rect21965"
              width="17.005648"
              height="3.9855044"
              x="-0.16825682"
              y="-0.025296567" />
          <path
             d="m 1.0052634,1.5511362 v 0.7639843 h 0.4564063 q 0.092604,0 0.092604,0.066146 0,0.069453 -0.092604,0.069453 H 0.69107072 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 h 0.1785938 V 0.72431329 h -0.1785938 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 H 2.1793519 V 1.0484278 q 0,0.089297 -0.069453,0.089297 -0.066146,0 -0.066146,-0.089297 V 0.72431329 H 1.0052634 V 1.4155373 H 1.4848207 V 1.2667091 q 0,-0.089297 0.066146,-0.089297 0.069453,0 0.069453,0.089297 v 0.4332552 q 0,0.089297 -0.069453,0.089297 -0.066146,0 -0.066146,-0.089297 V 1.5511362 Z"
             style="fill:#000000;stroke-width:0.79374999"
             id="path8421" />
          <path
             d="m 2.9883464,1.5511362 v 0.7639843 h 0.4564063 q 0.092604,0 0.092604,0.066146 0,0.069453 -0.092604,0.069453 h -0.770599 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 H 2.8527475 V 0.72431329 H 2.6741537 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 H 4.1624349 V 1.0484278 q 0,0.089297 -0.069453,0.089297 -0.066146,0 -0.066146,-0.089297 V 0.72431329 H 2.9883464 V 1.4155373 H 3.4679037 V 1.2667091 q 0,-0.089297 0.066146,-0.089297 0.069453,0 0.069453,0.089297 v 0.4332552 q 0,0.089297 -0.069453,0.089297 -0.066146,0 -0.066146,-0.089297 V 1.5511362 Z"
             style="fill:#000000;stroke-width:0.79374999"
             id="path8423" />
          <path
             d="M 5.6692683,1.8917872 H 4.7729923 V 1.7363445 l 0.754062,-1.28322911 h 0.277813 V 1.7561883 h 0.112448 q 0.0893,0 0.0893,0.069453 0,0.066146 -0.0893,0.066146 h -0.112448 v 0.4233333 h 0.112448 q 0.0893,0 0.0893,0.066146 0,0.069453 -0.0893,0.069453 h -0.499402 q -0.0893,0 -0.0893,-0.069453 0,-0.066146 0.0893,-0.066146 h 0.251355 z m 0,-0.1355989 V 0.58871439 h -0.07938 L 4.9019713,1.7561883 Z"
             style="fill:#000000;stroke-width:0.79374999"
             id="path8425" />
          <path
             d="M 8.2881171,1.6077068 H 6.9585859 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 h 1.3295312 q 0.089297,0 0.089297,0.066146 0,0.069453 -0.089297,0.069453 z"
             style="stroke-width:0.79374999"
             id="path8422" />
          <path
             d="m 8.9582054,0.90656104 q 0,-0.14882812 0.1785937,-0.31749999 0.1819011,-0.17197916 0.4365625,-0.17197916 0.2414323,0 0.4233333,0.17197916 0.1852081,0.17197916 0.1852081,0.39687498 0,0.14882817 -0.0893,0.28111977 Q 10.006617,1.3960402 9.7056533,1.67716 L 9.0210439,2.3154672 v 0.00992 H 10.059533 V 2.2063266 q 0,-0.089297 0.06945,-0.089297 0.06614,0 0.06614,0.089297 V 2.460988 H 8.8920596 V 2.2625506 L 9.6725804,1.5283318 q 0.2315104,-0.2282031 0.3009635,-0.3307291 0.07276,-0.102526 0.07276,-0.21497396 0,-0.17197916 -0.1422132,-0.30096353 -0.1422136,-0.12898437 -0.3307292,-0.12898437 -0.1686718,0 -0.3075781,0.0992188 -0.1355989,0.0992188 -0.1752864,0.24804686 -0.019844,0.0661458 -0.069453,0.0661458 -0.023151,0 -0.042995,-0.0165365 -0.019844,-0.0198437 -0.019844,-0.0429948 z"
             style="stroke-width:0.79374999"
             id="path8424" />
          <path
             d="m 12.207981,1.3001287 v 0.3307292 q 0,0.3902604 -0.171979,0.6349999 -0.171979,0.2447396 -0.446484,0.2447396 -0.274506,0 -0.446485,-0.2447396 Q 10.971054,2.0211183 10.971054,1.6308579 V 1.3001287 q 0,-0.39356766 0.171979,-0.63830724 0.171979,-0.24473957 0.446485,-0.24473957 0.274505,0 0.446484,0.24473957 0.171979,0.24473958 0.171979,0.63830724 z M 11.589518,0.55268084 q -0.224896,0 -0.353881,0.22820312 -0.128984,0.22489584 -0.128984,0.53578124 v 0.2943489 q 0,0.3241146 0.132292,0.5457031 0.135599,0.2182813 0.350573,0.2182813 0.224895,0 0.35388,-0.2248959 0.128984,-0.2282031 0.128984,-0.5390885 V 1.3166652 q 0,-0.32411458 -0.135599,-0.54239582 -0.132292,-0.22158854 -0.347265,-0.22158854 z"
             style="stroke-width:0.79374999"
             id="path8426" />
          <path
             d="M 13.642054,0.43692564 V 2.3253891 h 0.459713 q 0.0893,0 0.0893,0.066146 0,0.069453 -0.0893,0.069453 h -1.055026 q -0.0926,0 -0.0926,-0.069453 0,-0.066146 0.0926,-0.066146 h 0.459714 V 0.61551938 l -0.373724,0.37372394 q -0.02646,0.0264584 -0.06945,0.0264584 -0.02646,0 -0.0463,-0.0198438 -0.01654,-0.023151 -0.01654,-0.056224 0,-0.0297656 0.03638,-0.0661458 l 0.436562,-0.43656248 z"
             style="stroke-width:0.79374999"
             id="path8428" />
          <path
             d="M 15.625137,0.43692564 V 2.3253891 h 0.459713 q 0.0893,0 0.0893,0.066146 0,0.069453 -0.0893,0.069453 h -1.055026 q -0.0926,0 -0.0926,-0.069453 0,-0.066146 0.0926,-0.066146 h 0.459714 V 0.61551938 l -0.373724,0.37372394 q -0.02646,0.0264584 -0.06945,0.0264584 -0.02646,0 -0.0463,-0.0198438 -0.01654,-0.023151 -0.01654,-0.056224 0,-0.0297656 0.03638,-0.0661458 l 0.436563,-0.43656248 z"
             style="stroke-width:0.79374999"
               id="path8430" />
          </g>
      </svg>
    </div>
    <div class="white gradient msfilter" style=color:white>
      FF3.6-2010
    </div>
  </body>
 </html>

2
CSS aslında yayınları var. 1.0, 2.0, 2.1, 3.0 ve 4.0 var. Sorunun Wikipedia ya da dilin sitesini yayınlanma tarihi kanıtı olarak kullanması bile gerekiyordu, o yüzden kontrol etmeliydin. İlk çıkış tarihi: 17 Aralık 1996
mbomb007

Bu seviyelerden hiçbirinin uygulanmaması anlamına gelmez (bültenleri bile denemezler, çünkü değillerdir, gönderdiğiniz bağlantıyı kontrol etmelisiniz). CSS3 ve 4'ün yayınlanma tarihi bile yok; çünkü anında yaratılıyorlar ve taslaklar, adaylar ve tavsiyeler arasında ileri geri gidiyorlar. Ayrıca, hiçbir tarayıcı bir sonraki seviyenin% 100'ünü ve% 0'ını belirli bir seviye uygulayamaz, bu nedenle bulabileceğiniz en iyi tarih tarayıcının çıkış tarihidir.
qwazix

Öyleyse seçtiğiniz dil bu zorluk için gereken özelliklere uymuyor. Yapmaya çalıştığın şekilde değil. Bir dil uygulaması tarafından tanımlanır, bu nedenle farklı tarayıcılar değil, farklı tarayıcı sürümlerini kullanarak bir tarayıcı seçmeli ve buna bağlı kalmalısınız. Yine de hala OP soruyorum.
mbomb007

OP, farklı sürümlerin farklı diller olarak sayıldığını söylemedi, sadece farklı diller için kullanılan dil sürümünün yayınlanma yılını yazdırdıklarını söylediler . Bununla birlikte, cevapların yarısı, farklı sürümlerin dil olarak sayılabilecek kadar farklı olduğu varsayımına dayanıyordu. Python 2.5.0 ve 2.5.1 yeterince farklı olarak değerlendirilirse, IE ve Chrome'un nasıl olmadığını anlayamıyorum.
qwazix

6

3 yıl, 89 bayt

Python 2, JavaScript (ES6) ve Perl

eval((["1","print=_=>console.log(1995)"])[+(2/3>0)]);print(eval(("1991",1987)["$$">"0"]))

Birincisi Python 2'de ve Python 2'nin tamsayı bölme özelliğini kullanarak JavaScript ve Perl'de evalçalışacaktır . Bu, JavaScript'te bir işlev yaratır ve Perl sadece sözdizimi hatalarına sessizce bakar ve ne olursa olsun devam eder.1print=_=>console.log(1995)print

İkincisi eval, değişkeni $$(geçerli PID) dizgiye enterpolasyona sokan Perl'e dayanır , ki bu, ( >işleç kullanarak ) karşılaştırıldığında "0"(Python, bu karşılaştırmada bir dize gerektirirken Perl dolaylı olarak tamsayıya dönüşür).

Daha fazla dilde ayakkabı boynuzu tutabilirdim, ancak yorumları kötüye kullanmayan ve yalnızca 'normal' dillerde çalışan bir çözüm bulmak istedim.

Bu Wikipedia sayfasını , kullanılacak yılları almak için kullandım.


2

3 dil, 3 yıl

Eğlence için özel bir cevap.

2002!~+++++++[<+++++++>-]<[.++++++++..------.[-]] 2016 !.
  • Fare-2002 : sonraki her şey~bir yorum ve ayrıca yazılabilecek olan ilk bölümC0U!!!yazdırılıyor2002.

  • Bu ön-meydan Calc işlemek bir yığın tabanlı bir hesap yorumlayıcısı sadece Programlama II, birinci boşluk baskı öncesi programının bir parçası (meydan okuma spec altında izin verilir), bir hata ve için C11 tasarlanmış2016 !.baskılar2016.

  • Brainfuck : 1993’ü baska cevaplarda görüldüğü gibi basar. Son yabancı .tarafından yoksayılır beef.

Halihazırda istifin Calc'ta ekran unutmayın < stackolmayan her boş giriş hattı ile istemi parçasıdır >, değil çıkış parçası.


Mouse-2002'yi nereden bulabilirim? Github'un herhangi bir özelliği yok gibi görünüyor.
Buğday Sihirbazı

Deponun README Dr Grogono orijinal bağlantılar içerir @WheatWizard MUSYS ve David Simpson 2002 yeniden başlatma birlikte bir ok resmini.
kedi

2

Microsoft Excel / Google Sayfaları, 22 Bayt

1987Microsoft Excel'de ve 2006Google Sheets'ta giriş ve çıkış almayan Anonim Çalışma Sayfası işlevi

=IfError(M(2006),1987)

0

Perl 5 ve Perl 6 (2 yıl)

my $a=2015;my @a=1994;print $a[0],"\n"

Perl 5’in ilk sürümü 1994’te

Perl 6'nın ilk resmi sürümü 2015’te yapıldı.

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.