Kapan bahasa ini dirilis?


92

Tantangan Anda sederhana. Anda perlu menulis sebuah program yang mencetak ke STDOUT atau file tahun bahasa yang ditulisnya dirilis. Karena ini adalah tugas yang sangat sederhana, twistnya adalah harus ditulis dalam berbagai bahasa sebanyak mungkin.

Skor Anda adalah jumlah total tahun yang berbeda yang dicetak dengan benar.

Untuk setiap bahasa yang Anda gunakan, Anda harus

  • Tentukan versi bahasa yang Anda gunakan. (Jika ada beberapa versi)

  • Tentukan tahun berapa versi itu pertama kali dirilis, dan

  • Berikan tautan ke halaman yang membuktikan tanggal versi / bahasa Anda.

Salah satu dari ini dianggap sebagai bukti tanggal rilis, selama itu menentukan nomor versi (jika berlaku) dan tanggal rilis.

  • Halaman wikipedia.

  • Sebuah esolangs halaman.

  • Situs web resmi bahasa. Halaman github atau jumlah serupa, asalkan memiliki tanggal rilis. (Komit terbaru tidak dihitung, kecuali ada nomor versi di suatu tempat dalam kode)

Jika tidak ada banyak versi atau rilis bahasa, cukup gunakan tanggal rilis awal bahasa.

Versi minor dari bahasa yang sama jangan mengandalkan bahasa yang berbeda, selama mereka berasal dari tahun yang berbeda dan masih menghasilkan output yang benar. Anda tidak boleh menggunakan bawaan apa pun yang memberi Anda informasi (termasuk tanggal rilis) tentang versi bahasa yang Anda gunakan saat ini. Misalnya, ini adalah pengiriman python yang tidak valid:

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

Kiriman mana pun yang mencetak dengan benar tahun-tahun yang berbeda akan menang!

Aturan

  • Setiap program harus mencetak tahun bahasa dan tidak lebih . Newline tambahan (gaya windows atau * gaya nix) diizinkan.

  • Tidak ada program yang dapat mengambil input apa pun.

  • Dalam kasus seri, kode terpendek yang dicetak dalam bytes menang. Anda dapat menggunakan penyandian apa pun yang Anda suka untuk ini, tetapi semua program harus menggunakan penyandian yang sama.

  • Setiap program dapat mencetak ke STDERR, atau membuang kesalahan waktu runtime / kompilasi dan peringatan selama output yang benar masih dicetak ke STDOUT atau file.

  • Bahasa yang berbeda mungkin menggunakan metode IO yang berbeda, tetapi sebagian besar semuanya adalah program penuh, (fungsi tidak diizinkan untuk tantangan ini) dan mengikuti salah satu metode IO standar kami diizinkan .

Selamat bermain golf polyglotting!


Karena Pip tidak memiliki halaman Wikipedia atau Esolang, hanya memiliki GitHub, dan belum memiliki "rilis" dalam arti kata GitHub, apakah itu tidak memenuhi syarat untuk digunakan dalam tantangan ini? (Itu memang memiliki nomor versi, yang diperbarui pada setiap komit.)
DLosc

1
@ Dlosc Yah, saya tidak ingin mengecualikan bahasa apa pun yang tidak perlu, tapi saya ingin memastikan bahwa "tanggal rilis" tetap sepenuhnya objektif. Bisakah Anda memikirkan cara yang lebih baik untuk memberlakukan tanggal rilis yang akan mencakup lebih banyak bahasa?
DJMcMayhem

4
(Santai memasukkan kode Whitespace untuk mencetak 2003 pada dasarnya setiap pengajuan tunggal)
Value Ink

8
"Anda tidak boleh menggunakan bawaan apa pun yang memberi Anda informasi tentang versi bahasa saat ini yang Anda gunakan." Penekanan saya. Bolehkah saya mencari tanggal pembuatan dalam file interpreter?
Adám

2
Saya tidak berpikir ini duplikat sama sekali. Meskipun demikian, tantangan ini harus diterima sebagai 'asli' karena tidak seperti yang lain, tantangan ini mendorong pengguna untuk keluar dan belajar tentang apa yang mereka gunakan.

Jawaban:


160

Sejarah Singkat Bahasa Pemrograman 2D: 16 (+2) tahun

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@

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

Apakah saya menyebutkan bahwa saya suka bahasa pemrograman 2D?

1993: Befunge

Bahasa yang (diduga, lihat bagian terakhir) memulai semuanya. Di Befunge, Anda dapat mengarahkan aliran kontrol <v>^, tetapi cermin yang ada di mana-mana \dan /belum ada apa-apa. Penerjemah Befunge yang digunakan pada Anarchy Golf mengabaikan perintah yang tidak diketahui. Kita bisa menggunakan ini untuk membedakan keluarga Befunge dari keluarga> <>. Karenanya, kode yang dieksekusi oleh Befunge adalah ini:

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

The "8991"mendorong masing-masing karakter ke tumpukan. ,,,mencetak tiga yang pertama. Kemudian ;tidak diketahui (yang akan kita gunakan untuk membedakannya dari Befunge 98), 5-mengubah 8menjadi 3dan ,mencetak itu juga sebelum @mengakhiri program.

1997: Wierd

Menulis bagian solusi ini mungkin membuat saya selama menulis yang lain dan menyatukannya ...

Wierd hanya tahu dua simbol: ruang, dan yang lainnya. Penunjuk instruksi mencoba mengikuti jalur yang dibentuk oleh karakter non-spasi, mulai secara diagonal dari sudut kiri atas dan selalu berusaha untuk berjalan selurus mungkin. Tekuk di jalur membentuk instruksi aktual (dengan derajat belokan menentukan instruksi yang akan dijalankan). Jadi kode yang dilihat oleh Wierd adalah ini:

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

Bagian 1997atas tidak benar-benar dieksekusi, tetapi Wierd memungkinkan kita membacanya dari kode sumber, yang jauh lebih pendek daripada mencoba membangun kode karakter untuk empat digit itu sendiri (bahkan jika itu tidak terlihat seperti itu .. .). Saya tidak merasa ingin memecah semua ini, tetapi Anda dapat dengan jelas melihat empat bagian berulang. Apa yang dilakukan adalah bahwa kita pertama-tama menyimpannya 1di tumpukan dan kemudian masing-masing dari empat bagian itu menambahkan ini 1, dan kemudian bercabang. Cabang bawah mendorong yang lain1, mengambil karakter sumber pada koordinat ini dan mencetaknya, sedangkan cabang atas diarahkan ke bagian berikutnya. Anda mungkin bertanya-tanya mengapa ujung jalan sangat panjang, tetapi itu karena ketika Wierd mencapai ujung jalan, ia mencoba untuk melompat ke jalan terdekat sebelum memutuskan bahwa itu harus mengakhiri cabang saat ini. Untuk menghindari ini, kita perlu memindahkan ujung-ujung ini cukup jauh dari kode lain.

1998: Befunge 98

Befunge mendapat pembaruan yang cukup terkenal pada tahun 1998 dengan spesifikasi yang sangat ketat yang dapat digeneralisasi ke dimensi arbitrer (dan saya pikir juga topologi arbitrer). Ini sebagian besar kompatibel dengan Befunge, yang membuatnya cukup mudah untuk polyglot keduanya. Befunge ini masih belum memiliki mirror, jadi path yang dieksekusi sama dengan untuk Befunge 93:

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

Perbedaannya adalah bahwa Befunge 98 tidak mengabaikan ;. Sebaliknya itu bertindak agak seperti komentar di mana semua perintah sampai yang berikutnya ;diabaikan. Dengan cara ini, kita tidak pengurangan yang 8untuk 3dan mencetak 1998sebagaimana adanya.

2001: A Space Od ... PingPong

2001 adalah tahun Piet, tapi saya benar-benar tidak merasa ingin melakukan polyglotting file gambar dengan semua program lain, jadi di sini adalah bahasa 2D yang kurang dikenal. Tampaknya memiliki banyak fitur (yang tidak akan kita gunakan). Terima kasih kepada Sp3000 untuk menemukan penerjemah asli (yang merupakan satu-satunya tautan mati pada versi arsip dari situs web resmi).

PingPong agak tidak biasa karena hanya memiliki cermin dan tidak ada <v>^pengalihan. Jadi ini bergerak melalui v19977di awal dan kemudian menyentuh cermin yang membungkusnya ke bawah. Kode yang relevan adalah:

v19977/

...

      /K:0:1:@

...

Kode sebenarnya cukup sederhana: Kmendorong 20, angka mendorong diri mereka, :mencetak integer dan @berakhir program.

2003: SNUSP

Ini adalah bahasa pertama di mana segalanya menjadi sedikit lebih mudah, karena SNUSP mendukung titik entri eksplisit. Titik masuk itu ditandai oleh $. Menilai dari beberapa artikel tentang esolang, bahasa ini telah menginspirasi beberapa orang lain, tetapi sayangnya, pada akhirnya itu hanya turunan Brainfuck. Yang mengatakan, saya pikir cara ini mengatur sel saat ini menjadi 48 cukup rapi (dan dicuri dari artikel esolang). Inilah bagian yang relevan dari kode:

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

Itu 24 +detik dan mirror mengirim IP melalui masing-masing tepat dua kali.

2004: Axo

Untuk alasan apa pun, bahasa ini memang memiliki <^>pengalih tetapi bukan yang biasa vdigunakan %. Karenanya ini hanya bergerak melintasi garis pertama. Kode yang relevan adalah:

v19977/2{@{{4{\

Kami mendorong beberapa digit untuk memulai, melakukan pembagian. Kemudian 2{cetak 2, @bersihkan tumpukan. {{mencetak dua (implisit) 0s. 4{mencetak 4dan \mengakhiri program.

2005: Rail

2005 adalah pilihan yang sulit. Karena tidak ada tahun lain saya menemukan banyak bahasa 2D, dan ada ADJUST dan Archway, yang keduanya dimulai di sudut kiri bawah (yang akan membuat mereka penambahan mudah). Saya suka Rail dan karena memiliki titik masuk eksplisit tidak sulit untuk ditambahkan. Rail mencari garis mulai dengan $'main'dan mulai bergerak tenggara dari $. Itu berarti kode yang relevan adalah:

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

The \dan -hanya melacak (no-ops). Ini [2005]adalah string literal yang odicetak sebelum #mengakhiri program.

2006: BestFriends.js

Brainfuck dua dimensi. Ada bahasa lain yang menarik untuk tahun ini yang disebut Hitam, yang dimulai pada koordinat (3,3)(1-based) yang akan membuatnya menggunakan ini dalam polyglot menarik juga. Saya tidak bisa menemukan penerjemah. Jadi kita harus bekerja dengan turunan BF lain ...

Hal yang menarik tentang ini adalah ia tidak memformat kisi-kisi menjadi garis-garis dengan umpan garis seperti kebanyakan bahasa 2D lainnya. Sebaliknya |digunakan sebagai pemisah garis. Karena saya tidak menggunakan |untuk bahasa lain, saya hanya bisa meletakkan |pada baris terakhir yang membuat seluruh sisa program menjadi satu baris sejauh menyangkut BF.js. Maka kode yang relevan ini (mengubah |menjadi linefeed yang sebenarnya):

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

BF.js tidak menggunakan <v>^mirror. Satu-satunya cara untuk mengarahkan aliran kontrol adalah dengan {}mengubah arah IP sebesar 90 °. Jadi kawat gigi itu memindahkan IP ke baris kedua. Sisanya adalah solusi Brainfuck biasa (tidak golf dengan baik) yang menetapkan sel ke 50(titik kode 2) dan kemudian mencetak 2006dengan menggeser nilai sekitar sedikit. @mengakhiri program.

2008: BrainSpace 1.0

Untuk tahun ini saya benar-benar ingin menggunakan DOBELA yang menggunakan beberapa titik masuk dan terlihat seperti kekasih Fission dan Ziim . Sayangnya, saya belum bisa membuat penerjemah bekerja. Jadi di sini adalah turunan BF lainnya (yang terakhir, saya janji).

Berbeda dengan yang terakhir, yang ini tahu keduanya <v>^ dan mirror, jadi kode yang relevan adalah:

v
\'\
  8

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

Yang ini tidak memiliki []loop gaya BF yang biasa (alih-alih Anda harus membentuk loop 2D yang sebenarnya), jadi saya memutuskan untuk melakukan hardcode 50karena saya memiliki banyak karakter secara berturut-turut dari Wierd. Perhatikan bahwa 'dan 8diabaikan, *trampolin bersyarat yang dapat kita abaikan dan Oadalah milik Brainfuck .. The Xmengakhiri program.

2009: > <>

Mungkin Fungeoid paling populer (selain Befunge sendiri) setidaknya di sekitar bagian ini. > <> memiliki keduanya <v>^dan mirror tetapi juga string literal, jadi kode yang dieksekusi adalah ini:

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

String literal sebagian besar berfungsi untuk melompati yang \kita gunakan untuk BrainSpace 1.0 tetapi sementara kita melakukannya kita mungkin juga mendorong dua karakter pertama. oomencetaknya. Kemudian 100dorong tiga digit, @dorong yang atas ke bawah dan ncetak di 0bawahnya. Kami melakukan hal yang sama lagi dengan 590yang mencetak 9. Jika Anda bertanya-tanya mengapa saya tidak hanya mencetak 2009apa adanya, tunggu 2015. ;mengakhiri program.

2010: Kardinal

Yang ini sederhana, karena memiliki titik masuk eksplisit di %. Namun, yang ini menciptakan 4 IP di semua arah (oleh karena itu nama bahasa, saya kira), dan kita perlu menyingkirkan 3 dari mereka. Berikut adalah kode yang relevan:

 x
x%"2010"x
 x

Yah begitulah. (Dalam Kardinal, mode string mencetak langsung alih-alih mendorong karakter ke tumpukan.)

2011: RunR

Bahasa lain dengan titik masuk eksplisit (oleh David Catt yang telah menciptakan beberapa esolang yang sangat bagus lainnya), kali ini di S. Ini membuat kode yang relevan menjadi bagian ini:

S1^2^2^6^8MAOUOAOOF

RunR agak menarik karena sebagian besar operasi bekerja dengan semacam register dan nilai-nilai perlu dipindahkan ke stack secara eksplisit untuk operasi biner. Digit mengatur nilai register untuk diri mereka sendiri dan ^mendorong register saat ini ke stack. Kemudian Madalah multiplikasi (register kali nilai muncul dari stack), Uadalah pengurangan, Apenambahan, Okeluaran. Fmengakhiri program.

2012: Ropy

Seperti Wierd, Ropy mencoba mengikuti bagian karakter non-spasi, tetapi di sini tikungan tidak menentukan perintah. Bahkan, ternyata Ropy lebih mirip dengan Labirin saya sendiri karena arah yang dipilih tergantung pada bagian atas tumpukan. Namun, kita tidak perlu khawatir tentang itu di sini, karena Ropy hanya bergerak di sepanjang baris pertama:

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

Ada banyak hal yang bisa kita abaikan hingga saat ini >. Yang perlu kita ketahui adalah bahwa bagian atas tumpukan pada saat itu akan menjadi 4dan akan ada di 2bawah.

>duplikat 4, /adalah pembagian mengubahnya menjadi 1. Lalu kami mendorong 02. &&&bergabung dengan empat nomor teratas tumpukan dalam urutan terbalik, memberi 2012. #keluaran itu. ????hanya membersihkan tumpukan karena jika tidak, bagian atas tumpukan adalah output juga.

Salah satu tempat tujuan adalah bahwa kedua 7di 19977ditambahkan karena berurat. The /divisi di berurat melakukan top / second(kebalikan dari urutan biasa dalam banyak bahasa berbasis stack), di mana 7 / 9akan memberikan 0. Jika kita memiliki nol di atas tumpukan, Ropy akan melakukan beberapa hal liar dengan arah gerakannya, jadi kita perlu mendorong yang lain 7untuk memastikan bahwa bagian atas tumpukan tetap positif dan Ropy terus bergerak ke timur.

2014: Fisi

Dengan titik masuk eksplisit, yang ini mudah. RDLUbuat atom (petunjuk petunjuk) pada arah yang sesuai, jadi bit yang relevan adalah hanya ini:

R"2014";

Perhatikan bahwa ada Udalam kode sumber juga, tetapi atom itu akhirnya mengenai salah satu *dari Wierd, yang menghentikan program (dan atom ini membutuhkan waktu lebih lama daripada Rkebutuhan untuk mencetak 2014).

2015: Gol> <>

Sp3000 lebih kuat> <> turunannya. Ini sebagian besar kompatibel dengan> <> sehingga kode yang dieksekusi masih:

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

Namun, arah rotasi @telah diubah, yang merupakan trik standar untuk membedakan> <> dan Gol> <> dalam polyglots, jadi yang ini mencetak 15bukan 09. Karenanya keanehan di paruh kedua program.

2016: CSL

CSL cukup menarik karena perintah tidak segera dieksekusi. Sebaliknya, setiap perintah didorong ke tumpukan perintah dan edan Edapat digunakan untuk mengeksekusi perintah dari itu. Kode yang relevan menjadi:

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

Jadi Emengeksekusi seluruh tumpukan perintah, yang berarti bahwa hal-hal di depannya dijalankan secara terbalik. Kita hanya perlu melihat ke *:

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

The 1s mendorong diri ke tumpukan data. +dan -merupakan penurunan / kenaikan. Pmencetak bagian atas tumpukan. Kemudian *coba gandakan dua nilai teratas tumpukan. Namun, tumpukan kosong, jadi ini menghentikan program.


Pada titik ini kita sampai ke bahasa yang dirilis setelah tantangan ini diposting, jadi saya tidak benar-benar menghitungnya untuk skor, terutama karena saya membuat ini sendiri (bukan dengan mengingat tantangan ini). Namun, mereka memiliki beberapa semantik gerakan IP baru, yang membuatnya mudah untuk memasukkan mereka ke dalam polyglot sambil juga menambahkan sesuatu yang menarik pada karya ini dari bahasa 2D.

2017: Alice

Alice dirancang untuk menjadi Fungeoid yang kaya fitur. Satu perbedaan menarik untuk sebagian besar (tetapi tidak semua) bahasa 2D lainnya adalah bahwa IP dapat bergerak baik secara ortogonal, atau secara diagonal. Beralih di antara ini juga mengubah semantik hampir semua perintah dalam bahasa. Selain itu, Alice mendukung pengatur <^>varah dan \/mirror tradisional , tetapi mirror memiliki perilaku yang sangat unik di Alice (yang membuatnya mudah untuk mengarahkan IP Alice ke bagian kode yang sejauh ini tidak digunakan).

Sementara sebagian besar bahasa memperlakukan \dan /seolah-olah mereka adalah cermin pada sudut 45 °, dan IP sebagai sinar cahaya memantul darinya, Alice memperlakukan mereka sebagai memiliki sudut 67,5 ° (yang lebih dekat dengan sudut mesin terbang yang sebenarnya) , dan IP juga bergerak melalui cermin (maka nama bahasa). Karena sudut ini, cermin beralih antara gerakan sepanjang arah ortogonal atau diagonal. Selain itu, ketika dalam mode Ordinal (yaitu ketika IP bergerak sepanjang diagonal), kisi tidak membungkus dan sebaliknya IP memantul dari tepi (sedangkan dalam mode Kardinal ia membungkus).

Secara keseluruhan, kode yang dieksekusi oleh Alice adalah sebagai berikut:

v19
\ \

...

  >      "7102"4&o@

...

IP dimulai di sudut kiri atas seperti biasa, vmengirimkannya ke selatan. Sekarang \IP mencerminkan untuk bergerak ke barat laut, di mana ia langsung memantul dari tepi kiri grid (dan sebaliknya bergerak ke timur laut). 1dapat diabaikan, IP memantul dari tepi atas untuk bergerak ke tenggara berikutnya. Kami menekan yang lain \yang mencerminkan IP utara. 9juga dapat diabaikan dan kemudian IP membungkus ke bagian bawah kotak. Setelah beberapa baris kami mengarahkannya ke timur >untuk kenyamanan. Kemudian "7102"dorong titik kode dari 2017, 4&omencetak keempat karakter dan @mengakhiri program.

2018: Wumpus

Wumpus adalah bahasa 2D pertama pada kisi-kisi segitiga, yang membuat pergerakan melalui kode sangat berbeda (dan sekali lagi memungkinkan kita mencapai bagian kode yang tidak terpakai dengan mudah). Jadi, alih-alih menganggap setiap karakter dalam kotak sebagai kotak kecil, Anda harus menganggap mereka sebagai bolak-balik segitiga. Sudut kiri atas selalu merupakan segitiga ke atas.

Wumpus tidak memiliki penentu arah seperti <^>v, tetapi memiliki cermin \/. Namun, karena kisi segitiga, ini bekerja secara berbeda dari kebanyakan bahasa lain. IP memantul dari mereka seperti sinar (seperti biasa) tetapi Anda harus menganggap mereka memiliki sudut 60 derajat. Jadi IP yang bergerak ke timur akan berakhir bergerak di sepanjang sumbu barat laut dari grid.

Sebagai perbedaan lain untuk sebagian besar bahasa lain, tepi grid tidak membungkus, tetapi IP memantul dari tepi sebagai gantinya (seolah-olah sel-sel tepi mengandung cermin yang sesuai). Detail kecil lain yang menyenangkan adalah bahwa diagonal melalui kotak segitiga benar-benar terlihat seperti tangga dalam kode sumber.

Dengan mengingat hal itu, kode yang dijalankan oleh Wumpus adalah sebagai berikut (di mana saya telah mengganti spasi dengan .untuk kejelasan:

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

Itu v19977hanya sampah yang bisa kita abaikan. /mengirimkan IP barat laut, di mana ia bergerak melalui 977(dari kanan) lagi sambil memantul dari tepi atas. Kemudian IP bergerak ke barat daya melalui 2089dan banyak ruang, sebelum menyentuh tepi kiri untuk dipantulkan ke timur lagi. *juga sampah. Kemudian akhirnya #2018mendorong 2018, Omencetaknya, dan @menghentikan program.


Tahun yang hilang

Akhirnya, beberapa catatan tentang tahun yang belum saya liput.

Saat meneliti bahasa 2D untuk menemukan bahasa yang cocok sepanjang tahun yang dapat digunakan dalam polyglot, saya menemukan bahwa bertentangan dengan kepercayaan populer, Befunge bukan bahasa 2D pertama. Judul itu tampaknya dipegang oleh Biota yang sudah dibuat pada tahun 1991. Sayangnya, bahasa tersebut tidak memiliki output, jadi saya tidak dapat menggunakannya untuk tantangan ini.

Sejauh yang saya tahu tidak ada bahasa 2D yang dibuat pada tahun 1992 dan 1995. Tinggal beberapa tahun yang belum saya bahas:

  • 1994: Orthagonal diciptakan, terlepas dari Befunge. Bahasa-bahasa secara semantik sangat mirip sebenarnya, tetapi Orthagonal tidak benar-benar meletakkan kode sumber dalam 2D. Sebaliknya setiap baris adalah (x, y, instruction)tupel. Saya bahkan mendapatkan spesifikasi bahasa dan juru bahasa asli dari pencipta Jeff Epler, tetapi pada akhirnya, fakta bahwa sintaksnya bukan 2D membuat bahasa tidak cocok untuk polyglot ini.
  • 1996: Orthogonal , penerus Orthagonal (dibuat oleh orang lain) diciptakan, tetapi untuk keperluan polyglot ini menderita masalah yang sama dengan Orthagonal.
  • 1999: Satu-satunya bahasa yang saya dapat temukan adalah automaton seluler Chris Pressey, REDGREEN . Sayangnya, tidak seperti RUBE pendahulunya, sepertinya tidak memiliki semantik I / O.
  • 2000: Ada automaton seluler lain dari Chris Pressey yang disebut noit o 'mnain worb tetapi juga tidak memiliki I / O. Ada juga Numberix yang belum saya coba jalankan dan saya tidak yakin apakah itu akan mengabaikan karakter non-hex dalam kode sumber.
  • 2002: Ada Clunk tanpa I / O dan ZT yang spesifikasi bahasanya membuatku takut.
  • 2007: Saya menemukan tiga bahasa di sini. Zetaplex berbasis gambar (tidak) dan RubE On Conveyor Belts tampaknya memerlukan header dengan format yang agak ketat yang akan mengacaukan baris pertama program. Ada juga Cellbrain oleh Quintopia, tetapi tampaknya juga membutuhkan header tertentu.
  • 2013: Sekali lagi, saya menemukan tiga bahasa. Penangkapan ikan mungkin dilakukan dengan jumlah restrukturisasi yang baik tetapi akan membutuhkan program untuk memulai dengan dermaga yang valid. Dari Quipu , dari ingatan, terlalu ketat tentang sintaksnya untuk memungkinkan banyak polyglotting. Dan Swordfish adalah anggota lain dari keluarga <>, tetapi sayangnya saya belum dapat menemukan penerjemah. Kalau tidak, yang ini mungkin cukup mudah untuk ditambahkan.

Jika ada yang tertarik, berikut adalah daftar lengkap bahasa 2D yang diterapkan yang diurutkan berdasarkan tahun sejauh yang saya bisa temukan (pada saat jawaban ini diposting). Jika ada yang hilang dari daftar ini, harap beri tahu saya dalam obrolan karena saya benar-benar tertarik pada daftar lengkap.


8
Wow. Itu benar-benar mengesankan
DJMcMayhem

@ MartinEnder Sudahkah Anda mempertimbangkan untuk menempatkan daftar bahasa pemrograman 2D menurut tahun di Esolang sendiri?
doppelgreener

@doppelgreener Saya tidak sepenuhnya yakin bagaimana itu akan cocok di sana. Ini pada dasarnya hanya persimpangan kategori 2D dengan berbagai kategori tahun.
Martin Ender

Saya akan memperbaiki baris tajuk RubE On Conveyor Belts, jika Anda memiliki mesin waktu, saya dapat meminjam untuk mengajar saya yang berusia 13 tahun cara membaca file tanpa mengetahui ukurannya di muka. (Itulah satu-satunya alasan ada baris tajuk; IMO Anda dapat merasa bebas untuk tidak menghitung tajuk ukuran sebagai bagian dari program, meskipun secara tegas itu adalah)
user253751

1
@cairdcoinheringaahing Ini dia. Dan Wumpus untuk 2018, sementara aku melakukannya.
Martin Ender

117

15 tahun, Python

Versi: 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 dan 3.6.0a4 . Versi yang tidak tertaut dapat ditemukan di halaman unduhan .

Tanggal rilis 0.9.1 dapat ditemukan di sini . Sayangnya saya harus melewati banyak tahun karena kehilangan versi lama dan masalah kompilasi di komputer saya. Tahun-tahun yang diwakili adalah 1991, 2000-2002 dan 2006-2016.

Diuji pada Arch Linux, menggunakan versi gzip.

# 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)

19
... Wow. Masih mengherankan saya seberapa baik beberapa orang tahu bahasa mereka. Ini seperti melihat kembali ke masa lalu ...
wizzwizz4

Apakah python 0 mendukung coba / kecuali ??
OldBunny2800

8
@ OldBunny2800 Hebatnya, ya itu
Sp3000

54

Pendek dan manis; tiga APL ( K , J201 , Dyalog 7.1 ) dalam 8 byte

1993+1^2

1993 plus ...

K: integer 1 pertama {0} kecuali {2}, yaitu {0}; 1993 - Cobalah online!

J: 1 2 = 1; 1994 - Cobalah online!

APL: LCM (1,2) = 2; 1995 - Cobalah online!


Sangat bagus! Anda pikir Anda bisa menggabungkan lebih banyak bahasa Iverson?
mil

@miles Get's tangguh dengan K, dan APL2 / APLX / APL * PLUS terlalu mirip.
Adám

@miles Apakah Anda tahu versi J dari tahun 2000? Jika demikian, kita dapat melakukannya 2e3+?1dengan Dyalog 9.0.1.
Adám

Prospek keren lainnya adalah X^Yuntuk beberapa angka X dan Y, seperti ^kekuatan di J, tetapi LCM di APL.
Adám

2
Saya telah menemukan halaman fitur lebih dari rilis dengan tanggal mereka hingga 2000, jsoftware.com/release/status.htm
mil

46

10 tahun, 12 bahasa, 2430 byte

Jawaban ini merupakan kolaborasi antara saya dan pengguna 1000000000 .

Daftar bahasa singkat:

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 

Ini kodenya:

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
#   """

Agar sesuai dengan ini dalam tanggapan saya akan melupakan seluruh tautan TIO dan lebih suka hanya memposting tautan ke juru bahasa yang valid di mana kode dapat dimasukkan oleh pengguna. Berikut adalah tautan Pastebin untuk tujuan itu.

Piet

The format file PPM , salah satu format gambar yang penafsir Piet kita digunakan dapat membaca dari, memiliki versi ASCII plaintext. Dengan menggunakan ini kami dapat menanamkan kode bahasa lain sebagai sampah dalam file gambar yang dibaca oleh Piet dan Braincopter.

Gambar terlihat seperti ini:

Gambar mentah

Tidak semua gambar penting bagi Piet. Ini adalah versi dengan garis yang menyoroti jalur yang diikuti Piet melalui kode:

Jalur Piet

Meskipun metode agak berbelit-belit untuk membuat program program itu sendiri cukup sederhana. Sepanjang bagian atas gambar itu mendorong 1 10 10 10 2ke tumpukan; sepanjang sisi itu mengalikan tiga kali dan menambahkan sekali. Di sudut bawah itu menampilkan hasilnya (2001) dan kemudian berhenti.

Braincopter

Braincopter adalah bahasa visual lainnya. Itu juga bergantung pada ppmfile gambar yang sama untuk dijalankan. Karena pembatasan yang sangat keras dalam npiet kode Braincopter kami hanya dapat menggunakan subset dari operasi Braincopter asli. Kami dibatasi untuk menggunakan warna yang ops valid di Piet. Ini menghilangkan -operator dari Braincopter.

Berikut ini jalur yang dilacak oleh kode Braincopter:

Jalur Braincopter

Program Braincopter agak aneh karena kurangnya -operator. Dinding cyan dan cyan gelap berfungsi untuk mengarahkan ulang pointer tetapi selain itu identik dengan brainfuck berikut:

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

Ini mencetak 2005.

Paintfuck

Paintfuck adalah bahasa pemrograman visual ketiga dalam daftar kami namun alih-alih mengambil gambar dan mengeluarkan teks, Paintfuck mengambil teks dan menghasilkan gambar.

Karena Paintfuck mengabaikan karakter yang tidak relevan karena no-ops sebagian besar kode tidak penting. Bagian kode yang relevan adalah:

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

Meskipun bukan no-ops, ws pada akhir kode tidak melakukan apa-apa. Mereka ada untuk bagian rumput dari solusi. n, e, s, Dan wdigunakan untuk bergerak di sekitar gambar dan *digunakan untuk merencanakan suatu titik di lokasi tertentu. Output program:

Output Paintfuck

Versi yang lebih besar:

Output Painfuck, tetapi lebih besar

Brainfuck

Seperti Paintfuck Brainfuck mengabaikan sebagian besar karakter. Sekali lagi di sini adalah yang penting:

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

Sebagian besar dari ini lebih tidak relevan dengan keadaan dan kebetulan menjadi karakter yang dibutuhkan beberapa bahasa lain. Versi yang lebih ramping dari kode ini adalah:

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

Ini cukup sederhana dicetak 1993.

Brainbool

Brainbool sangat mirip dengan Brainfuck dalam pemilihan karakternya. Perbedaan besar yang memungkinkan keduanya untuk dijalin bersama adalah kurangnya a -di Brainbool. Karakter penting untuk Brainbool adalah:

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

Output Brainbool dan brainfuck saling eksklusif. Brainbool menyembunyikan hasilnya di set kedua []. Brainfuck bertemu +++---sebelum mencapai [pengaturan ke nol dan menyebabkannya melewatkan output, sementara Brainbool hanya melihat +++pengaturan ke 1 menyebabkannya melewati loop. Demikian pula Brainbool diatur ke nol pada loop ke-4 yang menyebabkannya melompati sementara Brainfuck memasuki loop dengan nilai 49.

Karena Brainbool tidak memiliki output desimal, outputnya 2010 dalam biner:

11111011010

Pembelahan

Satu-satunya bagian dari kode yang penting untuk fisi adalah:

R"2014";

The Rpanggilan di dalam atom yang bergerak ke kanan, "2014"cetakan 2014dan ;eksekusi pemberhentian.

Dibalik

Befunge hanya melewati karakter berikut:

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

Yang P3diperlukan untuk membuat gambar .ppm yang valid untuk piet, dan secara kumulatif mendorong 3 ke stack. yang vditempatkan untuk mengarahkan pointer ke bawah. Kemudian melewati 7dalam yang 17digunakan untuk menunjukkan lebar gambar .ppm. The >pengalihan pointer ke kanan. 7*mengalikan bagian atas tumpukan dengan 7 meninggalkan 49 (nilai ASCII dari 1) di atas tumpukan. ::menggandakan bagian atas tumpukan dua kali. The 1output dengan ,. 8 +menambahkan 8 ke kenaikan teratas ke ASCII 9. :,,output 9dua kali. 2 +menambah ASCII 1menjadi ASCII 3dan ,mencetak. Akhirnya @mengakhiri program.

Semuanya dicetak 1993.

Ruang putih

Spasi putih, seperti namanya, hanya menggunakan spasi putih dalam program-programnya. Inilah yang dilihat penerjemah Whitespace:

[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][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]

Sebagian besar dari apa yang dilakukan oleh kode ini tidak penting bagi pelaksanaan program (semua baris yang hanya berisi spasi cukup menekan nol ke tumpukan). Bagian yang penting:

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

Baris pertama mendorong 2003 ke stack. Setelah itu [Tab][LF][Space][Tab]cetak bagian atas tumpukan (2003) sebagai angka. Akhirnya tiga baris baris terakhir mengakhiri eksekusi program.

Rumput

Rumput mengabaikan semua karakter sampai pertama wdalam file dan setelah itu semua karakter yang tidak w, Watau v. Penerjemah Grass membaca:

wWWWwWWWWwv
wWWwWWWwv
wWWWwWWWWWwWWWWWWwwwWWWWWWWwWWWWWWwwwWWWWWWWWWWwWWWWWWWWWWwv
wWWWwWWWWwv
wWWwWWWwv
wWWwWWWwv
wWWwWWWwv
wWWwwwwwwwwwwwWWWwWWWWWwWWWWWWWwWWWWWWWWWwWWWWWWWWWWWWWWWwWWWWWWWWWWWWwv

Baris pertama mendefinisikan fungsi yang menambahkan dua ke apa pun yang dilewatkan. Baris kedua mendefinisikan fungsi yang menambahkan empat ke apa pun yang dilewatkan. Yang ketiga mendefinisikan fungsi yang mencetak dua tambah argumen, mencetak argumen dua kali, lalu akhirnya mencetak tujuh ditambah argumen (Rumput mencetak karakter berdasarkan nilai ASCII). Baris keempat, kelima dan keenam mendefinisikan fungsi yang menambahkan delapan, menambah 16, menambahkan 32, dan menambahkan 64 ke argumen mereka, masing-masing. Baris terakhir mendefinisikan fungsi utama yang mengambil karakter w(satu-satunya angka yang ditentukan sebelumnya di Grass, nilai ASCII 119) dan menambahkan 185 untuk itu menggunakan fungsi add yang didefinisikan dalam program serta built in menambahkan satu fungsi. Rumput membungkus angka pada 256 dan hasilnya 48 (sesuai dengan karakter0). Fungsi kemudian meneruskan ini ke fungsi baris ketiga yang mencetak 2007.

Penuh bintang

Starry mengabaikan segala sesuatu kecuali untuk ruang, +, *, ., ,, `, dan '. Jadi penerjemah berbintang hanya melihat:

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

Namun, label dan instruksi lompatan digunakan untuk melewati bagian kode yang dapat menyebabkan masalah jika dijalankan, jadi kodenya efektif seperti ini:

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

Kode ini mendorong dua ke tumpukan, menduplikasinya dua kali dan kemudian muncul dan mencetak salah satunya sebagai angka. Kemudian dorong nol, duplikat dan cetak kedua nol sebagai angka. Selanjutnya muncul salah satu dari dua dan melompat dan kemudian mendorong tujuh ke tumpukan dan muncul dan mencetak sebagai angka. Akhirnya muncul dua terakhir di stack dan melompat ke akhir program.

Python 2.7.2

Kode Python mengikuti format:

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

di mana ...berdiri untuk semua sampah lainnya.

Baris pertama, P3v=""ada karena untuk menjadi .ppmfile yang valid, kode kita harus mulai dengan P3ini biasanya akan kesalahan tetapi jika kita memberi tahu python itu adalah deklarasi variabel itu akan mengabaikannya.

Selanjutnya kita harus mencetak 2011. Namun karena cara a .ppmdiformat, kami tidak dapat memasukkan angka apa pun di baris ini. Untuk menyiasatinya, kami merangkum semua nilai ASCII dari string "~~~~~~~~~~~~~~~y"dan mencetak hasilnya. Akhirnya kami menggunakan tiga kutipan dari komentar multiline sehingga python mengabaikan yang lainnya.

Brainflak

Kami menyimpan yang terbaik untuk yang terakhir.

Brainflak, seperti yang lainnya, mengabaikan sebagian besar karakter. Karakter yang relevan adalah:

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

Kode python (([()])),, mendorong -1 ke tumpukan dua kali sehingga perlu dihapus sebelum program mulai memproses.

Setelah itu Brainbool menggunakan []nilad yang tidak melakukan apa-apa dan program dimulai.

(((((()()()()){}){}){}){})({({}[<()>()])}{}<[[]]>)mendorong 2016. Yang terakhir [<><>]adalah sisa-sisa Befunge dan Brainfuck tapi untungnya tidak melakukan apa-apa.

Ketika program berakhir, ia akan mencetak isi tumpukan, itulah yang dicetak 2016.


Cemerlang! Aku berharap Piet entah bagaimana akan muncul, memasukkan hal-hal dalam PPM itu brilian. Sudah selesai dilakukan dengan baik!
cincodenada

1
+1 untuk We saved the best for last. : D
DJMcMayhem

38

5 tahun

#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] , dan 1999: C99

Komentar baris tunggal //ditambahkan dalam C99, jadi kompiler C89 akan membaca kode itu sebagai c=-4.5 / /*comment*/ -4.5, yang sama dengan c=-4.5 / -4.5, sedangkan kompiler C99 akan membaca c=-4.5 //comment/**/
- 4.5, yang sama dengan c=-4.5 - 4.5.
Bagian Python adalah komentar dalam program C.

2010: Python 2.7 , dan 2015: Python 3.5

Dokumen bervariasi antara Python 3 dan 2, program ini menggunakan panjang dokumen untuk mendeteksi versi Python.
Bagian C dalam sebuah string dalam program Python.

1993 [2] : Brainfuck

Itu pada dasarnya mengabaikan semua yang tidak .,[]+-<>. Karena program C ada ,di dalamnya, saya harus membuat Brainfuck untuk mengabaikan bagian itu dengan mengatur byte saat ini ke 0.


  1. Spesifikasi C89 dirilis pada tahun 1990. Info lebih lanjut .
  2. Saya tidak dapat menemukan tanggal rilis resmi, jadi saya akan percaya Esolangs dan Wikipedia .

4
Ini bagus, terutama -4.5/-4.5dan -4.5-4.5. Menghancurkan dua versi masing-masing dari dua bahasa utama cukup mengesankan, bahkan tanpa membuang BF di sana :-)
ETHproduksi

Ini bukan codegolf, tetapi a=jalur 2 tidak perlu
TheInitializer

@TheInitializer ya, saya mencoba tanpa a=dan itu memberikan kesalahan, jadi saya memutuskan untuk menyimpannya. Saya tidak tahu mengapa itu memberikan kesalahan, mungkin salah ketik.
betseg

@betseg jika kode itu hanya dieksekusi dengan Python, seharusnya bisa.
TheInitializer

17

15 tahun, JavaScript

Karena siklus rilis JavaScript sangat tidak biasa dan tidak konsisten, saya akan menggunakan implementasi Firefox. Tolong beri tahu saya jika ini tidak diizinkan.

Versi: 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 (semua diuji pada Windows 7)

Catatan penting: Menginstal dan membuka Firefox 1.0.0 atau versi yang lebih baru dapat menghapus semua data Firefox yang disimpan , termasuk riwayat dan bookmark.

Juga, dimulai dengan 1.0.0, Anda hanya dapat membuka satu versi pada satu waktu; mencoba membuka versi lain menghasilkan jendela baru dari versi yang sudah terbuka.

Instruksi

Kode

<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>

Anda dapat menambahkan tahun ke-16 dengan memasukkan BF: <!--<<<<-[>+<-----]>--.++++++++..------.[-][-->sebelum skrip dan komentar HTML lainnya hanya berisi ]sesudahnya.
Steven H.

6
@ SevenH. Um ... wow, saya bahkan tidak pernah berpikir untuk menyertakan esolang dalam hal ini. Dan itu cara yang sangat cerdas untuk memasukkan BF :-) Tapi saya tidak yakin saya benar-benar ingin ...
ETHproduksi

13

6 bahasa, Turtlèd dan brainfuck , Python 3.5, Python 2.7, > <> , Fission

Turtlèd belum ada sebelum tahun ini, dan begitu mudahnya objektif, bahkan jika github tidak menghitung, dan BF memiliki bukti halaman esolang, dirilis tahun 1993. Python 3.5 adalah 2015, 2.7 adalah 2010.> <> juga memiliki halaman esolang , yang menyatakan 2009, seperti halnya Fission, 2014

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

Saya mungkin harus memberikan kredit ke halaman konstanta bf di esolangs ... ¯ \ _ (ツ) _ / ¯

Cara kerjanya, jenis:

Turtlèd:

Turtlèd tidak benar-benar melakukan apa pun untuk jalur selain yang pertama:

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

Saya adalah seorang nop

Brainfuck

Brainfuck mengabaikan karakter yang tidak ada dalam perintahnya

ia melihat -[>+<-----]>--.++++++++..------.(yang terakhir. adalah dari bagian python)

yang hanya melakukan hal-hal Brainfuck, ia menggunakan pembungkus untuk membagi 255 dengan 5, kemudian kurangi 2 dari hasilnya, cetak, tambah 8 kali, cetak dua kali, pengurangan 6 kali, cetak

Python 2 dan 3

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

panjang dokumen untuk len bervariasi antara versi, sehingga mencetak tahun untuk versi 3 jika itu adalah panjang yang tepat, jika tidak untuk versi 2.

> <>

# memantulkan pointer ke belakang, sehingga menyentuh / di sisi lain dari garis itu, melewati ruang antara elsedan 2010, kemudian memantulkan lagi untuk menekan "2009", mendorong 9,0,0,2 ke stack, kemudian mencetak terbalik .

Pembelahan

Fission memiliki pasangan, sehingga kita dapat memiliki garis di bagian bawah yang dijalankannya sendiri:

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

13

3 tahun, 3 bahasa: 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   */ 

Beri nama filenya date.mixal.

  1. C (1990) - Mengkompilasi dengan peringatan dan cetakan 1990untuk stdout.
  2. TeX (1982) - Kompilasi dengan tex date.mixal; mencetak 1982ke file O.tex(abaikan output DVI).
  3. MIXAL (1997) - Kompilasi menggunakan GNU Mix Development Kit, mixasm date.mixaldan jalankan dengan mixvm -r date.mix; mencetak 1997ke perangkat teletype (= stdout).

Program TeX dan MIXAL dalam komentar di program C; program MIXAL muncul setelahnya \byesehingga TeX mengabaikannya. Program C dan TeX adalah komentar dalam program MIXAL. Untuk beberapa alasan gccbersedia menerima *main.


Saya lupa tentang MIXAL, +1: D
cat

13

3 tahun (GolfScript, CJam, MATL), 24 23 byte

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

Ini output

  • 2007 dalam GolfScript.

  • 2015 dalam CJam (versi 0.6.5).

  • 2016 di MATL (versi 19.2.0).

Penjelasan

Naskah Golf

Token yang tidak ditentukan adalah noops dalam GolfScript . Satu-satunya bagian dari kode yang benar-benar melakukan sesuatu adalah:

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

Semuanya mulai dari %ini adalah komentar.

[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"

Koreksi: di CJam setelah %Anda mendapatkan [11 10]. Bukan itu penting.
aditsu

@aditsu Whoops! Terima kasih, diedit
Luis Mendo

12

2 bahasa, Python 2.7 dan Python 3.5

Python 2.7 dirilis pada 2010 .

Python 3.5 dirilis pada 2015 .

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

Ini bergantung pada PEP 238 di mana operator /diubah dari divisi integer di Python 2 ke divisi floating-point di Python 3.


3
Ini bisa menjadi tantangan yang menyenangkan jika itu melibatkan mengidentifikasi bug / perubahan dalam operator antara versi
mil

1
@ TuukkaX Ini bekerja untuk saya di Python 2.7.12 dan Python 3.5.1 di Fedora 24.
miles

1
Tidak bisakah kamu melakukannya '2010'if 3/2>1else'2015'?
Qwerp-Derp

15
Atau kami matematika:print(int(2010+1/2*10))
Jakube

2
print('2015'if 1/2else'2010')lebih baik
Cyoce

12

8 tahun, 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

"Salah satu program dapat mencetak ke STDERR, atau membuang kesalahan waktu runtime / kompilasi dan peringatan selama output yang benar masih dicetak ke STDOUT atau file." Saat ini, satu-satunya tampilan non-error adalah tahun, jadi kami mematuhi aturan ini. Namun, jika Anda ingin menulis ke memori, ganti Disp (date)dengan (date)->I.

Referensi:

  1. Tanggal rilis kalkulator - https://epsstore.ti.com/OA_HTML/csksxvm.jsp?nSetId=74258
  2. TI-83 + OS 1.15 tanggal rilis - http://wikiti.brandonw.net/index.php?title=83Plus:OS:VersionDifferences#TIOS_1.15
  3. Kompatibilitas kalkulator - http://tibasicdev.wikidot.com/compatibility
  4. TI-84 + tanggal rilis CSE - https://www.amazon.com/Texas-Instruments-Silver-Graphing-Calculator/dp/B00AWRQKDC
  5. TI-84 + tanggal rilis CE - http://www.prnewswire.com/news-releases/texas-instruments-unveils-the-new-ti-84-plus-ce-300026266.html dan https: // www. cemetech.net/forum/viewtopic.php?t=8870

9

5 tahun, Go 1.0, 1.1, 1.4, 1.5, 1.6: 285 257 byte

(1,2 dirilis pada 2013 seperti 1,1, 1,3 pada 2014 seperti 1,4, dan 1,7 pada 2016 seperti 1,6.)

Belum menguji ini pada setiap versi karena saya hanya dapat mengakses 1.6, tetapi harus berfungsi secara teori! Perubahan bahasa kemungkinan akan menyebabkan program tidak dapat dikompilasi, jadi saya mengandalkan perubahan pustaka standar.

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)}

Tidak dikumpulkan dan berkomentar:

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 tahun, 99 byte / 77 karakter

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

Catatan: Saya tidak yakin apakah tahun-tahun itu benar

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

Butuh beberapa saat untuk mencari tahu bagaimana membuat Python dan JS bekerja bersama.

Penjelasan

v=1//1;"""set variabel vuntuk 1dibagi dengan 1Python, dan ke 1dalam Javascript ( //memulai komentar dalam Javascript), dan ;"""memulai string multiline dalam Python. Tidak ;dapat diganti dengan baris baru karena itu akan membuat Javascript berhenti bekerja.

1991/*"""adalah sisa dari string multiline. Ruang diperlukan agar> <> tidak mendorong 1ke tumpukan. Karena awal string multiline adalah bagian dari komentar di Javascript, ia mencetak 1991dan memulai komentar multiline.

for i in[0]:print 2010#🔟😃😇🔟😗➕➕😨dalam Python, adalah for loop yang mengulang daftar [0]dan berjalan print 2010. Komentar itu hanya kode Emotinomicon (mengabaikan semua yang bukan emoji atau string). Di> <>, itu ( f) mendorong 15 ke stack.

Untuk loop tidak dapat dihapus karena> IP <> turun di kolom 1, dan pbukan perintah yang valid di> <>. Anda juga tidak dapat menggantinya dengan ifpernyataan, karena iini adalah perintah untuk mengambil input di> <>.

""" adalah awal dari string multiline.

" adalah bagian dari string multiline, diperlukan untuk menutup string yang kita buka di> <> (tanda kutip pertama dari baris sebelumnya memulai string di> <>).

>9002nnnn;di> <>, mengubah arah IP ke kanan, mendorong 9, 0, 0dan 2, output ini sebagai angka dan berakhir program.

"""#*/dengan Python, akhiri string multiline dan mulai komentar. Dalam Javascript, */membuat komentar multiline berakhir.


Versi bonus dengan Gol> <>:

5 bahasa, 4 tahun, 118 114 byte / 96 92 karakter

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

Penjelasan²

IP dimulai di sudut kiri atas, ke kanan. Itu vmembuatnya turun.

fmendorong 15.

" mulai string.

` digunakan untuk keluar dari karakter, sesuatu yang> <> tidak miliki.

"harus menutup string, tetapi kami menggunakan `, jadi tidak akan.

> bagian dari string.

" mengakhiri string.

>5102nnnn;adalah kode aktual. >membuat IP ke kanan, 5102mendorong 5, 1, 0dan 2, dan nnnn;mencetak angka dan berakhir program.


Kesalahan python pada karakter unicode tanpa header yang tepat. ( 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)
Wheat Wizard

@WheatWizard Simpan file sebagai UTF-8
acrolith

7

7 tahun, 8 browser

Tidak persis tanggal rilis bahasa karena css sebenarnya tidak memiliki rilis, tetapi versi peramban (mungkin bisa dianggap sebagai versi kompiler?)

Untuk browser berikut, ini mencetak nama browser, versi dan tanggal rilis dan tidak ada yang lain. Itu tidak mencetak hal yang sama untuk beberapa versi kemudian, (Anda akan melihat kromium adalah salah satu versi terlambat dalam screenshot karena sulit untuk mengunduh versi chrome lama dengan nomor versi)

Saya bisa mencetak nomor versi yang saya gunakan tetapi saya lebih suka menunjukkan versi pertama di mana fitur yang digunakan diperkenalkan.

  • IE6
  • IE7
  • IE8
  • IE9 (belum diuji, tidak memiliki IE9)
  • Firefox 4
  • Firefox 3.6
  • Chrome 18
  • Chrome 21
  • Browser modern

FF3.6 FF4 Chromium19 Chromium22 IE8-quirks Kompatibilitas IE8-IE7 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 sebenarnya memiliki rilis. Ada 1.0, 2.0, 2.1, 3.0, dan 4.0. Pertanyaannya bahkan mengatakan untuk menggunakan Wikipedia atau situs bahasa sebagai bukti tanggal rilis, jadi Anda harus memeriksa. Tanggal rilis awal: 17 Desember 1996
mbomb007

Itu tidak dengan pengertian bahwa tidak ada implementasi dari salah satu level tersebut (mereka bahkan tidak disebut rilis, karena mereka tidak, Anda harus memeriksa tautan yang Anda posting). Dan CSS3 dan 4 bahkan tidak memiliki tanggal rilis karena mereka dibuat on-the-fly, dan bolak-balik antara konsep, kandidat dan rekomendasi. Juga, tidak ada browser yang mengimplementasikan level spesifik 100% dan 0% dari level berikutnya sehingga tanggal terbaik yang dapat Anda buat adalah tanggal rilis browser.
qwazix

Maka bahasa yang Anda pilih tidak memenuhi spesifikasi yang diperlukan untuk tantangan ini. Tidak dengan cara Anda mencoba melakukannya. Bahasa ditentukan oleh implementasinya, jadi Anda harus memilih browser dan tetap menggunakannya, menggunakan versi browser yang berbeda , bukan browser yang berbeda. Saya masih bertanya kepada OP.
mbomb007

OP tidak mengatakan versi yang berbeda dianggap sebagai bahasa yang berbeda, mereka hanya mengatakan untuk mencetak tahun rilis versi bahasa yang digunakan, untuk bahasa yang berbeda . Namun ~ setengah dari jawaban didasarkan pada asumsi bahwa versi yang berbeda cukup berbeda untuk dihitung sebagai bahasa. Jika python 2.5.0 dan 2.5.1 dianggap cukup berbeda, saya tidak dapat memahami bagaimana IE dan Chrome tidak.
qwazix

6

3 tahun, 89 byte

Python 2, JavaScript (ES6) dan Perl

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

Yang pertama evalakan berjalan 1pada Python 2 dan print=_=>console.log(1995)pada JavaScript dan Perl menggunakan fitur pembagian integer dari Python 2. Ini menciptakan printfungsi dalam JavaScript dan Perl hanya diam-diam peduli tentang kesalahan sintaks dan menjalankan terlepas.

Yang kedua evalbergantung pada Perl interpolasi variabel $$(PID saat ini) ke dalam string, yang akan menjadi benar bila dibandingkan (menggunakan >operator) terhadap "0"(Python membutuhkan string dalam perbandingan itu sedangkan Perl secara implisit mengkonversi ke integer).

Saya dapat menggunakan sepatu dalam lebih banyak bahasa, tetapi ingin memiliki solusi yang tidak menyalahgunakan komentar dan hanya bekerja dalam bahasa 'biasa'.

Saya menggunakan halaman Wikipedia ini untuk mengambil tahun untuk digunakan.


2

3 bahasa, 3 tahun

Jawaban ad-hoc untuk bersenang-senang.

2002!~+++++++[<+++++++>-]<[.++++++++..------.[-]] 2016 !.
  • Mouse-2002 : semuanya setelahnya~adalah komentar, dan bagian pertama, yang juga bisa ditulisC0U!!!, dicetak2002.

  • komitmen pra-tantangan dari Calc ini : yang merupakan juru bahasa kalkulator berbasis tumpukan yang baru saja sayarancang di C11 untuk Pemrograman II, bagian dari program sebelum ruang pertama mencetak kesalahan (diizinkan berdasarkan spesifikasi tantangan), dan2016 !.mencetak2016.

  • Brainfuck : mencetak 1993 seperti yang terlihat di jawaban lain. Eksternal yang terakhir .diabaikan oleh beef.

Perhatikan bahwa tampilan Calc dari stack saat ini < stackdengan setiap jalur input yang tidak kosong adalah bagian dari prompt >, bukan bagian dari output.


Di mana saya bisa mengetahui tentang Mouse-2002? Github tampaknya tidak memiliki spesifikasi apa pun.
Wheat Wizard

@WheatWizard README repositori berisi tautan ke MUSYS asli Dr. Grogono dan reboot David Simpson 2002 , yang bersama-sama melukis gambar OK.
kucing

2

Microsoft Excel / Google Sheets, 22 Bytes

Fungsi Lembar Kerja Anonim yang tidak mengambil input dan output 1987di Microsoft Excel, dan 2006di Google Sheets

=IfError(M(2006),1987)

0

Perl 5 & Perl 6 (2 tahun)

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

Rilis pertama dari Perl 5 adalah pada tahun 1994

Rilis resmi pertama dari Perl 6 adalah pada tahun 2015

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.