ภาษานี้เปิดตัวเมื่อใด


92

ความท้าทายของคุณง่าย คุณต้องเขียนโปรแกรมที่พิมพ์ไปยัง STDOUT หรือไฟล์ในปีที่ภาษาที่เขียนนั้นเผยแพร่ เพราะนี่เป็นงานง่าย ๆ สิ่งที่บิดเบี้ยวคือต้องเขียนเป็นภาษาต่าง ๆ ให้ได้มากที่สุด

คะแนนของคุณคือจำนวนปีทั้งหมดที่พิมพ์ออกมาอย่างถูกต้อง

สำหรับแต่ละภาษาที่คุณใช้คุณต้อง

  • ระบุเวอร์ชันของภาษาที่คุณใช้ (หากมีหลายรุ่น)

  • ระบุปีที่เปิดตัวรุ่นแรกและ

  • ระบุลิงก์ไปยังหน้าเพื่อพิสูจน์วันที่รุ่น / ภาษาของคุณ

หนึ่งในจำนวนเหล่านี้ถือเป็นข้อพิสูจน์วันที่เผยแพร่ตราบใดที่มันระบุหมายเลขรุ่น (ถ้ามี) และวันที่วางจำหน่าย

  • หน้าวิกิพีเดีย

  • esolangsหน้า

  • เว็บไซต์ทางการของภาษา หน้า github หรือจำนวนที่คล้ายกันตราบใดที่มันมีวันที่ปล่อย (การคอมมิชชันล่าสุดจะไม่ถูกนับเว้นแต่จะมีหมายเลขเวอร์ชันที่ใดที่หนึ่งในรหัส)

หากไม่มีภาษาหรือรุ่นที่วางจำหน่ายหลายภาษาให้ใช้วันที่วางจำหน่ายครั้งแรกของภาษา

ภาษาเดียวกันรุ่นรองจะนับเป็นภาษาต่าง ๆ ตราบใดที่มาจากปีที่ต่างกันและยังคงให้ผลลัพธ์ที่ถูกต้อง คุณไม่สามารถใช้บิวอินใด ๆ ที่ให้ข้อมูลแก่คุณ (รวมถึงวันที่วางจำหน่าย) เกี่ยวกับภาษาปัจจุบันที่คุณใช้ ตัวอย่างเช่นนี่คือการส่งหลามที่ไม่ถูกต้อง:

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

การส่งใดก็ตามที่ถูกต้องจะพิมพ์ปีที่แตกต่างกันมากที่สุดที่ชนะ!

กฎระเบียบ

  • แต่ละโปรแกรมจะต้องพิมพ์ออกมาในปีภาษาและไม่มีอะไรเพิ่มเติม บรรทัดใหม่ต่อท้าย (สไตล์ Windows หรือสไตล์ * ห้าม) ได้รับอนุญาต

  • ไม่มีโปรแกรมใดที่จะรับอินพุตใด ๆ

  • ในกรณีที่เสมอกันรหัสที่สั้นที่สุดที่ได้คะแนนเป็นไบต์จะชนะ คุณสามารถใช้การเข้ารหัสใดก็ได้ที่คุณต้องการ แต่โปรแกรมทั้งหมดต้องใช้การเข้ารหัสเดียวกัน

  • โปรแกรมใด ๆ อาจพิมพ์ไปที่ STDERR หรือโยนข้อผิดพลาดและเวลารันไทม์ / คอมไพล์และคำเตือนตราบใดที่เอาต์พุตที่ถูกต้องยังคงพิมพ์ไปยัง STDOUT หรือไฟล์

  • ภาษาที่แตกต่างกันอาจจะใช้วิธีการที่แตกต่างกัน IO แต่พวกเขาส่วนใหญ่จะเป็นโปรแกรมเต็ม (ฟังก์ชั่นไม่ได้รับอนุญาตสำหรับความท้าทายนี้) และปฏิบัติตามอย่างใดอย่างหนึ่งของเราวิธีการ IO เริ่มต้นได้รับอนุญาต

มีความสุขในการเล่นกอล์ฟ polyglotting!


เนื่องจากPipไม่มีหน้า Wikipedia หรือ Esolangs เพียงมี GitHub และไม่มี "การเผยแพร่" ในความหมายของ GitHub จึงไม่มีสิทธิ์ใช้ในการท้าทายนี้ใช่หรือไม่ (มันมีหมายเลขเวอร์ชั่นซึ่งอัพเดททุกการกระทำ)
DLosc

1
@dlosc ฉันไม่ต้องการยกเว้นภาษาใด ๆ โดยไม่จำเป็น แต่ฉันต้องการให้แน่ใจว่า "วันที่วางจำหน่าย" ยังคงวัตถุประสงค์อย่างสมบูรณ์ คุณนึกถึงวิธีที่ดีกว่าในการบังคับใช้วันที่วางจำหน่ายซึ่งจะรวมภาษาอื่น ๆ อีกหรือไม่?
DJMcMayhem

4
(ใส่รหัส Whitespace เพื่อพิมพ์ 2003ในทุก ๆ การส่งแบบง่ายๆ)
Value Ink

8
"คุณอาจจะไม่ได้ใช้ builtins ใด ๆ ที่ให้ข้อมูลเกี่ยวกับปัจจุบันรุ่นของภาษาที่คุณกำลังใช้." ความสำคัญของฉัน ฉันจะหาวันที่สร้างในไฟล์ล่ามได้ไหม?
อดัม

2
ฉันไม่คิดว่าอันนี้จะซ้ำกันเลย แม้ว่ามันจะเป็นความท้าทายนี้ควรได้รับการยอมรับว่าเป็น 'ต้นฉบับ' เพราะไม่เหมือนสิ่งอื่นความท้าทายนี้สนับสนุนให้ผู้ใช้ออกไปข้างนอกและเรียนรู้เกี่ยวกับสิ่งที่พวกเขาใช้

คำตอบ:


159

ประวัติย่อของภาษาโปรแกรม 2D: 16 (+2) ปี

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 หรือไม่?

1993: Befunge

ภาษาที่ (นัยว่าดูส่วนสุดท้าย) เริ่มต้นทุกอย่าง ใน Befunge คุณสามารถเปลี่ยนเส้นทางการควบคุมด้วย<v>^แต่ตอนนี้กระจกที่แพร่หลาย\และตอนนี้/ยังไม่เป็นเช่นนั้น ล่าม Befunge ที่ใช้กับAnarchy Golfจะไม่สนใจคำสั่งที่ไม่รู้จัก เราสามารถใช้สิ่งนี้เพื่อแยกความแตกต่างของตระกูล Befunge จากตระกูล> <> ดังนั้นรหัสที่ดำเนินการโดย Befunge คือ:

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

การ"8991"กดอักขระแต่ละตัวลงบนสแต็ก ,,,พิมพ์สามคนแรกของพวกเขา จากนั้น;ไม่เป็นที่รู้จัก (ซึ่งเราจะใช้แยกความแตกต่างจาก Befunge 98), 5-เปลี่ยน8เป็น a 3และ,พิมพ์ก่อนที่จะ@ยกเลิกโปรแกรม

1997: แปลก

การเขียนส่วนนี้ของการแก้ปัญหาทำให้ฉันอาจจะตราบใดที่การเขียนคนอื่น ๆและเข้าด้วยกัน ...

แปลกรู้เพียงสัญลักษณ์สองอย่างคือพื้นที่และทุกอย่างอื่น ตัวชี้คำสั่งพยายามตามเส้นทางที่เกิดขึ้นโดยอักขระที่ไม่ใช่ช่องว่างเริ่มต้นตามแนวทแยงมุมจากมุมซ้ายด้านบนและพยายามที่จะตรงที่สุดเท่าที่จะทำได้ โค้งในเส้นทางรูปแบบคำแนะนำที่แท้จริง ดังนั้นรหัสที่เห็นโดย Wierd คือ:

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

1997ที่ด้านบนไม่ได้ดำเนินการจริง แต่แปลกช่วยให้เราอ่านได้จากรหัสที่มาซึ่งเป็นจำนวนมากสั้นกว่าพยายามที่จะสร้างรหัสอักขระสำหรับตัวเลขสี่หลักตัวเอง (ถึงแม้ว่ามันจะดูไม่เหมือนมัน .. .) ฉันไม่รู้สึกอยากทำลายสิ่งนี้ทั้งหมด แต่คุณสามารถเห็นส่วนที่ซ้ำซ้อนทั้งสี่อย่างชัดเจน นี่คือสิ่งที่เราเก็บไว้1ในสแต็กก่อนจากนั้นแต่ละส่วนสี่เหล่านี้จะเพิ่มขึ้น1และจากนั้นสาขา สาขาด้านล่างผลักดันอีก1ดึงตัวละครแหล่งที่มาที่พิกัดเหล่านี้และพิมพ์ในขณะที่สาขาด้านบนจะถูกเปลี่ยนเส้นทางไปยังส่วนถัดไป คุณอาจสงสัยว่าเหตุใดจุดสิ้นสุดของเส้นทางจึงยาวเกินไปโดยไม่จำเป็น แต่นั่นเป็นเพราะเมื่อ Wierd พบจุดสิ้นสุดของเส้นทางนั้นจะพยายามข้ามไปยังเส้นทางใกล้เคียงก่อนที่จะตัดสินใจว่าควรยุติสาขาปัจจุบัน เพื่อหลีกเลี่ยงปัญหานี้เราจำเป็นต้องย้ายจุดสิ้นสุดเหล่านี้ให้ห่างจากโค้ดอื่น ๆ อย่างเพียงพอ

1998: Befunge 98

Befunge ได้รับการอัปเดตที่รู้จักกันดีพอสมควรในปี 1998 ด้วยสเปคที่เข้มงวดมากซึ่งสามารถกำหนดให้เป็นมิติตามอำเภอใจได้ ส่วนใหญ่ใช้งานร่วมกับ Befunge ได้ซึ่งทำให้ง่ายต่อการพูดได้หลายภาษา Befunge นี้ยังไม่มีมิเรอร์ดังนั้นเส้นทางที่ดำเนินการจึงเหมือนกับ Befunge 93:

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

ความแตกต่างคือ Befunge 98 ;ไม่ละเว้น แต่มันทำหน้าที่คล้ายกับข้อคิดเห็นในคำสั่งทั้งหมดจนกระทั่งคำสั่งถัดไป;ถูกละเว้น ด้วยวิธีนี้เราจะไม่ลดทอน8ไปที่3และพิมพ์1998ตามที่เป็นอยู่

2001: A Space Od ... PingPong

ปี 2001 เป็นปีของ Piet แต่ฉันไม่ได้รู้สึกเหมือนเป็น polyglotting ไฟล์ภาพกับโปรแกรมอื่นทั้งหมดดังนั้นนี่เป็นภาษา 2D ที่ไม่ค่อยมีคนรู้จัก ดูเหมือนว่าจะมีคุณสมบัติมากมาย (ซึ่งเราจะไม่ใช้) ขอบคุณ Sp3000 สำหรับการค้นหาล่ามดั้งเดิม (ซึ่งเป็นลิงก์เดียวในเว็บไซต์ทางการที่เก็บถาวร)

PingPong นั้นค่อนข้างผิดปกติเพราะมีเพียงมิเรอร์และไม่มีผู้<v>^เปลี่ยนเส้นทาง ดังนั้นสิ่งนี้จะเคลื่อนที่ผ่านv19977จุดเริ่มต้นจากนั้นกระทบกระจกซึ่งล้อมรอบด้านล่าง รหัสที่เกี่ยวข้องคือ:

v19977/

...

      /K:0:1:@

...

รหัสจริงค่อนข้างง่าย: Kผลักดัน20ตัวเลขผลักตัวเอง:พิมพ์จำนวนเต็มและ@ยุติโปรแกรม

2546: SNUSP

นี่เป็นภาษาแรกที่ทุกอย่างง่ายขึ้นเพราะ SNUSP รองรับจุดเข้าใช้งานที่ชัดเจน $จุดเริ่มต้นที่ถูกทำเครื่องหมายโดย ตัดสินจากบทความเกี่ยวกับ esolang ภาษานี้เป็นแรงบันดาลใจให้คนอื่น ๆ แต่น่าเสียดายที่ในตอนท้ายของวันมันเป็นเพียงอนุพันธ์ Brainfuck ที่กล่าวว่าฉันคิดว่าวิธีนี้ตั้งเซลล์ปัจจุบันถึง 48 ค่อนข้างเรียบร้อย (และถูกขโมยไปจากบทความ esolangs) นี่คือส่วนที่เกี่ยวข้องของรหัส:

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

นั่นคือ 24 +วินาทีและกระจกเงาส่ง IP ผ่านแต่ละอันอย่างแม่นยำสองครั้ง

2004: Axo

สำหรับเหตุผลใดภาษานี้ไม่ได้<^>เปลี่ยนเส้นทาง แต่แทนที่จะใช้v %ดังนั้นนี่แค่ย้ายข้ามบรรทัดแรก รหัสที่เกี่ยวข้องคือ:

v19977/2{@{{4{\

เราดันตัวเลขสองสามหลักเพื่อเริ่มต้นด้วยการแบ่ง จากนั้น2{พิมพ์2, @ล้างสแต็ก {{พิมพ์สอง (โดยนัย) 0s 4{พิมพ์4และ\ยกเลิกโปรแกรม

2548: Rail

ปี 2005 เป็นทางเลือกที่ยาก สำหรับปีที่แล้วฉันไม่พบภาษา 2D จำนวนมากและมี ADJUST และ Archway ซึ่งทั้งสองเริ่มต้นที่มุมล่างซ้าย ฉันชอบรถไฟ แต่เนื่องจากมีจุดเข้าใช้งานที่ชัดเจนไม่ยากที่จะเพิ่ม รถไฟจะมองหาการเริ่มต้นที่สอดคล้องกับและเริ่มเคลื่อนไหวทางตะวันออกเฉียงใต้จาก$'main' $นั่นหมายความว่ารหัสที่เกี่ยวข้องคือ:

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

\และ-เป็นเพียงติดตาม (ไม่มี OPS) [2005]เป็นสตริงตัวอักษรที่oพิมพ์ก่อนที่จะ#สิ้นสุดโปรแกรม

2549: BestFriends.js

Brainfuck สองมิติ มีอีกภาษาที่น่าสนใจสำหรับปีนี้เรียกว่าแบล็กซึ่งเริ่มต้นที่การประสานงาน(3,3)(แบบพื้นฐาน 1) ซึ่งจะทำให้การใช้ภาษานี้เป็นภาษาที่น่าสนใจเช่นกัน ฉันหาล่ามไม่ได้ ดังนั้นเราจะต้องทำงานร่วมกับอนุพันธ์ BF อื่นแทน ...

สิ่งที่น่าสนใจเกี่ยวกับอันนี้ก็คือมันไม่ได้จัดรูปแบบกริดเป็นเส้นที่มี linefeeds เหมือนภาษา 2D อื่น ๆ ส่วนใหญ่ แต่|ถูกนำมาใช้เป็นตัวคั่นบรรทัด เนื่องจากฉันไม่ได้ใช้|กับภาษาอื่นฉันสามารถใส่|บรรทัดสุดท้ายซึ่งทำให้โปรแกรมที่เหลือทั้งหมดเป็นบรรทัดเดียวที่เกี่ยวข้องกับ BF.js รหัสที่เกี่ยวข้องนั้นคือสิ่งนี้ (เปลี่ยน|เป็น linefeed จริง):

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

BF.js ไม่ ใช้หรือไม่มี<v>^กระจก วิธีเดียวที่จะเปลี่ยนเส้นทางการควบคุมคือการ{}เปลี่ยนทิศทาง IP 90 ° ดังนั้นเครื่องมือจัดฟันจะย้าย IP ไปที่บรรทัดที่สอง ส่วนที่เหลือเป็นวิธีการแก้ปัญหา Brainfuck แบบธรรมดา (ไม่ค่อยดีนัก) ที่ตั้งค่าเซลล์เป็น50(จุดรหัส2) แล้วพิมพ์2006โดยเลื่อนค่าไปรอบ ๆ @ยุติโปรแกรม

2008: BrainSpace 1.0

สำหรับในปีนี้ผมอยากจะใช้DOBELAซึ่งใช้คะแนนหลายรายการและดูเหมือน lovechild ของเซลล์และZiim น่าเสียดายที่ฉันไม่สามารถล่ามให้ทำงานได้ นี่คืออนุพันธ์ BF อีกอัน (อันสุดท้าย, ฉันสัญญา)

เมื่อเทียบกับคนสุดท้ายคนนี้รู้ทั้ง <v>^และกระจกดังนั้นรหัสที่เกี่ยวข้องคือ:

v
\'\
  8

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

อันนี้ไม่มี[]ลูปแบบ BF ปกติ(แต่คุณต้องสร้างลูป 2D จริง ๆ ) ดังนั้นฉันจึงตัดสินใจ hardcode 50เพราะฉันมีตัวละครมากมายในแถวจาก Wierd อยู่ดี โปรดทราบว่า'และ8จะถูกละเลยที่*เป็นผ้าใบเงื่อนไขที่เราสามารถละเลยและOเป็น .brainfuck Xสิ้นสุดโปรแกรม

2552: > <>

อาจเป็น Fungeoid ที่เป็นที่นิยมมากที่สุด (นอกเหนือจาก Befunge เอง) อย่างน้อยรอบชิ้นส่วนเหล่านี้ > <> มีทั้งสอง<v>^และมิรเรอร์ แต่มีสตริงตัวอักษรดังนั้นรหัสที่ดำเนินการคือ:

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

สตริงตัวอักษรส่วนใหญ่ทำหน้าที่ข้าม\เราใช้สำหรับ BrainSpace 1.0 แต่ในขณะที่เราอยู่ในนั้นเราอาจผลักดันอักขระสองตัวแรก ooพิมพ์พวกเขา จากนั้น100ดันตัวเลขสามหลัก@ผลักตำแหน่งบนสุดไปด้านล่างแล้วnพิมพ์ส่วน0ล่าง เราทำสิ่งเดียวกันอีกครั้งกับที่พิมพ์590 9หากคุณสงสัยว่าทำไมฉันไม่พิมพ์แค่2009นี้ก็รอ 2015 ;ยกเลิกโปรแกรม

2010: พระคาร์ดินัล

%หนึ่งนี้ได้ง่ายเพราะมีจุดเริ่มต้นที่ชัดเจน อย่างไรก็ตามอันนี้สร้าง 4 IP ในทุกทิศทาง (ด้วยเหตุนี้ฉันจึงคิดว่าชื่อภาษา) และเราจำเป็นต้องกำจัดพวกเขา 3 รายการ นี่คือรหัสที่เกี่ยวข้อง:

 x
x%"2010"x
 x

ใช่ (ใน Cardinal โหมดสตริงจะพิมพ์โดยตรงแทนที่จะกดตัวอักษรลงบนสแต็ก)

2554: RunR

ภาษาอื่นที่มีจุดเริ่มต้นอย่างชัดเจน (โดยเดวิด Cattที่ได้สร้างขึ้นไม่กี่ esolangs ดีมาก ๆ ) Sคราวนี้ ทำให้รหัสที่เกี่ยวข้องส่วนนี้:

S1^2^2^6^8MAOUOAOOF

RunR เป็นเรื่องที่น่าสนใจเพราะการดำเนินการส่วนใหญ่ทำงานกับการเรียงลำดับของ register และค่าต้องถูกย้ายไปที่ stack อย่างชัดเจนสำหรับการทำงานแบบไบนารี ตัวเลขตั้งค่าการลงทะเบียนให้กับตัวเองและ^ผลักดันการลงทะเบียนปัจจุบันไปยังสแต็ก จากนั้นMคือการคูณ (ลงทะเบียนครั้งมูลค่าโผล่จากสแต็ค) Uเป็นลบAคือนอกจากOเป็นเอาท์พุท Fยุติโปรแกรม

2012: Ropy

เช่นเดียวกับ Wierd Ropy พยายามติดตามส่วนของอักขระที่ไม่ใช่ช่องว่าง แต่ที่นี่การโค้งไม่ได้กำหนดคำสั่ง ที่จริงแล้วมันกลับกลายเป็นว่า Ropy นั้นคล้ายกับเขาวงกตของฉันมากกว่านั้นในทิศทางที่เลือกขึ้นอยู่กับส่วนบนสุดของกองซ้อน อย่างไรก็ตามเราไม่จำเป็นต้องกังวลเกี่ยวกับสิ่งนี้เพราะ Ropy เพิ่งย้ายไปตามบรรทัดแรก:

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

มีหลายสิ่งที่เราสามารถมองข้ามไป>ได้ สิ่งที่เราต้องรู้คือด้านบนสุดของสแต็กจะอยู่ที่จุดนั้น4และจะอยู่2ด้านล่าง

>ทำซ้ำ4, เป็นส่วนเปลี่ยนมันเป็น/ จากนั้นเราจะผลักดัน1 ร่วมสี่ยอดตัวเลขของสแต็คในการสั่งซื้อกลับให้ เอาท์พุทมัน เพียงแค่ล้างสแต็คเพราะมิฉะนั้นส่วนบนสุดของสแต็กก็จะถูกส่งออกเช่นกัน02&&&2012#????

จุดหนึ่งที่น่าสนใจก็คือการเพิ่มที่สอง7ใน19977เพราะ Ropy /ส่วนในเหนียวไม่top / second(ตรงข้ามของการสั่งซื้อปกติในภาษาสแต็คที่ใช้จำนวนมาก) ที่จะให้7 / 9 0หากเรามีศูนย์อยู่ด้านบนของสแต็ค Ropy จะทำสิ่งที่ป่าบางอย่างกับทิศทางของการเคลื่อนไหวดังนั้นเราต้องผลักดันอีก7เพื่อให้แน่ใจว่าด้านบนของสแต็คยังคงเป็นบวกและ Ropy จะย้ายไปทางทิศตะวันออก

2014: ฟิชชัน

ด้วยจุดเริ่มต้นที่ชัดเจนมันจึงเป็นเรื่องง่าย RDLUสร้างอะตอม (พอยน์เตอร์คำแนะนำ) ในทิศทางที่สอดคล้องกันดังนั้นบิตที่เกี่ยวข้องเป็นเพียงแค่นี้:

R"2014";

โปรดทราบว่ามีUในซอร์สโค้ดด้วยเช่นกัน แต่ในที่สุดอะตอมก็เจอหนึ่งใน*Wierd ซึ่งยุติโปรแกรม (และอะตอมนี้ใช้เวลานานกว่าRความต้องการในการพิมพ์2014)

2558: Gol> <>

Sp3000 มีประสิทธิภาพมากกว่า> <> อนุพันธ์ ส่วนใหญ่เข้ากันได้กับ> <> ดังนั้นโค้ดที่เรียกใช้ยังคงอยู่:

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

อย่างไรก็ตามทิศทางการหมุนของ@ถูกเปลี่ยนซึ่งเป็นเคล็ดลับที่จะแยกแยะมาตรฐาน> <> และกอล> <> ใน polyglots ดังนั้นนี้หนึ่งพิมพ์แทน15 09ดังนั้นความแปลกประหลาดในช่วงครึ่งหลังของโปรแกรม

2559: CSL

CSL ค่อนข้างน่าสนใจในคำสั่งที่ไม่ได้ดำเนินการทันที แต่แต่ละคำสั่งจะถูกส่งไปยัง command-stack eและEสามารถใช้เพื่อรันคำสั่งจากมันได้ รหัสที่เกี่ยวข้องจะกลายเป็น:

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

ดังนั้นการEประมวลผลคำสั่งสแต็กทั้งหมดซึ่งหมายความว่าสิ่งที่อยู่ข้างหน้ามันจะถูกดำเนินการในสิ่งที่ตรงกันข้าม เราต้องการค้นหา*:

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

1s ผลักดันตัวเองลงบนสแต็คข้อมูล +และ-มีการลด / เพิ่ม Pพิมพ์ด้านบนของสแต็ก จากนั้น*ลองคูณสองค่าบนสุดของสแต็ก อย่างไรก็ตามสแต็กนั้นว่างเปล่าดังนั้นสิ่งนี้จะยกเลิกโปรแกรม


ณ จุดนี้เราไปถึงภาษาที่เปิดตัวหลังจากความท้าทายนี้ถูกโพสต์ดังนั้นฉันจึงไม่นับคะแนนโดยเฉพาะอย่างยิ่งเมื่อฉันสร้างมันขึ้นมาเอง (ไม่ใช่ความท้าทายในใจ) อย่างไรก็ตามพวกเขามีซีแมนทิกส์การเคลื่อนไหวของไอพีที่แปลกใหม่ซึ่งทำให้ง่ายต่อการปรับให้เข้ากับคนพูดได้หลายภาษาในขณะที่ยังเพิ่มสิ่งที่น่าสนใจให้กับการแสดงภาษา 2D นี้

2017: อลิซ

อลิซได้รับการออกแบบให้เป็น Fungeoid ที่เต็มไปด้วยคุณสมบัติ ความแตกต่างที่น่าสนใจอย่างหนึ่งของภาษา 2D ส่วนใหญ่ (แต่ไม่ใช่ทั้งหมด) คือ IP สามารถเคลื่อนที่แบบ orthogonally หรือแบบทแยงมุม การสลับระหว่างสิ่งเหล่านี้ยังเปลี่ยนความหมายของคำสั่งเกือบทั้งหมดในภาษา นอกจากนี้ Alice ยังสนับสนุนทั้งตัว<^>vกำหนดทิศทางและมิเรอร์แบบดั้งเดิม\/แต่มิเรอร์มีพฤติกรรมที่ไม่เหมือนใครในอลิซ (ซึ่งทำให้ง่ายต่อการนำค่า IP ของ IP ไปยังส่วนที่ไม่ได้ใช้)

ในขณะที่ภาษาส่วนใหญ่ปฏิบัติต่อ\และ/ราวกับว่าพวกมันสะท้อนมุม 45 องศาและ IP เป็นรังสีแสงที่กระดอนมันอลิซถือว่าพวกมันมีมุม 67.5 ° (ซึ่งอยู่ใกล้กับมุมของร่ายมนตร์สแลชจริง) และ IP ก็เคลื่อนที่ผ่านมิรเรอร์ (ด้วยเหตุนี้จึงเป็นชื่อภาษา) เนื่องจากมุมนี้กระจกจึงสลับไปมาระหว่างการเคลื่อนไหวตามแนวตั้งฉากหรือแนวทแยงมุม นอกจากนี้ในขณะที่อยู่ในโหมด Ordinal (เช่นในขณะที่ IP เคลื่อนที่ไปตามแนวทแยงมุม) กริดจะไม่พันและ IP จะกระเด้งออกจากขอบ

โดยสรุปโค้ดที่ดำเนินการโดยอลิซมีดังต่อไปนี้:

v19
\ \

...

  >      "7102"4&o@

...

IP เริ่มต้นที่มุมซ้ายบนตามปกติvส่งไปทางทิศใต้ ตอนนี้\สะท้อนให้เห็น IP ที่จะย้ายไปทางตะวันตกเฉียงเหนือที่มันกระเด้งออกจากขอบด้านซ้ายของตารางทันที (และย้ายไปทางตะวันออกเฉียงเหนือแทน) 1สามารถถูกเพิกเฉย, IP กระเด้งออกจากขอบด้านบนเพื่อย้ายไปทางตะวันออกเฉียงใต้ต่อไป เราเข้าชมอีกครั้งหนึ่ง\ซึ่งสะท้อน IP ภาคเหนือ 9ยังสามารถถูกละเว้นและจากนั้น IP ก็แรปไปที่ด้านล่างของกริด หลังจากสองสามบรรทัดเราเปลี่ยนเส้นทางไปทางตะวันออกด้วย>เพื่อความสะดวก แล้ว"7102"ผลักดันให้จุดรหัสของ2017, 4&oพิมพ์สี่ตัวละครและ@สิ้นสุดโปรแกรม

2018: Wumpus

Wumpus เป็นภาษา 2D แรกในตารางสามเหลี่ยมซึ่งทำให้การเคลื่อนที่ผ่านโค้ดแตกต่างกันมาก (และช่วยให้เราเข้าถึงส่วนที่ไม่ได้ใช้ของรหัสได้อย่างง่ายดายอีกครั้ง) ดังนั้นแทนที่จะคิดว่าตัวละครแต่ละตัวในกริดเป็นสี่เหลี่ยมจัตุรัสเล็ก ๆ คุณควรคิดว่ามันเป็นรูปสามเหลี่ยมสลับขึ้นและลง มุมซ้ายบนเป็นรูปสามเหลี่ยมขึ้นเสมอ

Wumpus ไม่มี setters ทิศทางเหมือนแต่มันก็ไม่ได้มีกระจก<^>v \/อย่างไรก็ตามเนื่องจากตารางสามเหลี่ยมงานเหล่านี้แตกต่างจากภาษาอื่น ๆ ส่วนใหญ่ IP กระเด้งออกมาเหมือนรังสีแสง (ตามปกติ) แต่คุณควรคิดว่ามันมีมุม 60 องศา ดังนั้น IP ที่เคลื่อนที่ไปทางตะวันออกจะสิ้นสุดการเคลื่อนที่ตามแนวแกนตะวันตกเฉียงเหนือของกริด

ความแตกต่างของภาษาอื่นส่วนใหญ่คือขอบของกริดไม่ได้ห่อ แต่ IP จะกระเด็นออกจากขอบแทน (ราวกับว่าเซลล์ขอบเหล่านั้นมีมิเรอร์ที่เหมาะสม) รายละเอียดเล็ก ๆ น้อย ๆ ที่น่าสนุกอีกอย่างหนึ่งคือเส้นทแยงมุมผ่านกริดสามเหลี่ยมดูเหมือนจริง ๆ กับบันไดในซอร์สโค้ด

โดยที่ในใจรหัสดำเนินการโดย Wumpus เป็นดังต่อไปนี้ (ที่ฉันได้แทนที่ช่องว่างด้วย.เพื่อความชัดเจน

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

v19977เป็นเพียงขยะที่เราสามารถละเลย /ส่ง IP ทางตะวันตกเฉียงเหนือซึ่งจะเคลื่อนที่ผ่าน977(จากด้านขวา) อีกครั้งขณะที่กระดอนจากขอบด้านบน จากนั้น IP จะเคลื่อนไปทางตะวันตกเฉียงใต้ผ่าน2089และช่องว่างก่อนที่มันจะกระทบกับขอบด้านซ้ายเพื่อสะท้อนทิศตะวันออกอีกครั้ง *ยังเป็นขยะ แล้วในที่สุด#2018ผลักดัน2018, Oพิมพ์และ@สิ้นสุดโปรแกรม


ไม่มีปี

ในที่สุดบางบันทึกเกี่ยวกับปีที่ฉันไม่ได้ครอบคลุม

ในขณะที่ค้นคว้าภาษา 2D เพื่อค้นหาภาษาที่เหมาะสมในช่วงหลายปีที่สามารถใช้เป็นภาษาพูดได้หลายภาษาฉันพบว่าขัดกับความเชื่อที่นิยม Befunge ไม่ใช่ภาษา 2D แรก ดูเหมือนว่าชื่อนั้นจะถูกจัดขึ้นโดยBiotaซึ่งสร้างขึ้นในปี 1991 แต่น่าเสียดายที่ภาษานั้นไม่มีผลลัพธ์ดังนั้นฉันจึงไม่สามารถใช้มันสำหรับความท้าทายนี้ได้

เท่าที่ฉันสามารถบอกได้ว่าไม่มีการสร้างภาษา 2 มิติในปี 1992 และ 1995 ซึ่งไม่กี่ปีที่ฉันยังไม่ครอบคลุม:

  • 1994: Orthagonalถูกสร้างขึ้นโดยไม่ขึ้นกับ Befunge ภาษามีความหมายค่อนข้างคล้ายกันจริง ๆ แต่ Orthagonal ไม่ได้วางรหัสต้นฉบับใน 2D แต่ละบรรทัดแทนสิ่ง(x, y, instruction)อันดับ ฉันได้รับข้อมูลจำเพาะภาษาและล่ามดั้งเดิมจากผู้สร้าง Jeff Epler แต่ท้ายที่สุดความจริงที่ว่าไวยากรณ์ไม่ใช่ 2D ทำให้ภาษาไม่เหมาะสมกับกลุ่มคนนี้
  • 2539: Orthogonalผู้สืบต่อจากมุมฉาก (สร้างโดยคนอื่น) ถูกสร้างขึ้น แต่เพื่อจุดประสงค์ในการพูดได้หลายภาษานี้ประสบปัญหาเดียวกับรูปหลายเหลี่ยม
  • 1999: ภาษาเดียวที่ฉันหาได้คือREDGREENของเซลลูล่าร์ น่าเสียดายที่เมื่อเทียบกับ RUBE รุ่นก่อนดูเหมือนว่าจะไม่มีความหมายของ I / O
  • 2000: มีโทรศัพท์มือถืออีกเครื่องหนึ่งของ Chris Pressey ชื่อnoit o 'mnain worbแต่มันไม่มี I / O ใด ๆ นอกจากนี้ยังมีNumberixที่ฉันไม่ได้พยายามเรียกใช้และฉันไม่แน่ใจว่าจะละเว้นอักขระที่ไม่ใช่ฐานสิบหกในซอร์สโค้ดหรือไม่
  • 2002: มีความกล้าหาญที่ไม่มี I / O และZTซึ่งข้อกำหนดภาษาทำให้ฉันหวาดกลัว
  • 2007: ฉันพบสามภาษาที่นี่ Zetaplexเป็นรูปแบบ (ดังนั้นไม่) และRubE บนสายพานลำเลียงดูเหมือนว่าจะต้องมีส่วนหัวที่มีรูปแบบที่ค่อนข้างเข้มงวดซึ่งจะสับสนกับบรรทัดแรกของโปรแกรม นอกจากนี้ยังมีCellbrain by Quintopia แต่ดูเหมือนว่าจะต้องมีส่วนหัวที่เฉพาะเจาะจง
  • 2013: อีกครั้งฉันพบสามภาษา การตกปลาอาจเป็นไปได้ด้วยการปรับโครงสร้างที่ดี แต่ต้องมีโปรแกรมที่จะเริ่มต้นด้วยท่าที่ถูกต้อง Quipuจากหน่วยความจำมีวิธีเข้มงวดเกินไปเกี่ยวกับไวยากรณ์ที่จะอนุญาตให้มีการพูดหลายภาษามาก และนากก็เป็นสมาชิกคนหนึ่งของครอบครัว <>> แต่น่าเสียดายที่ฉันไม่สามารถหาล่ามได้ ไม่เช่นนั้นอาจจะเพิ่มได้ง่าย

หากใครสนใจนี่คือรายการที่สมบูรณ์ของภาษา 2D ที่ใช้งานซึ่งเรียงลำดับตามปีที่ไกลที่สุดที่ฉันหาได้ (ตอนที่คำตอบนี้โพสต์) หากมีรายการใดหายไปโปรดแจ้งให้เราทราบในการแชทเพราะฉันสนใจในรายการทั้งหมด


8
ว้าว. นั่นเป็นเรื่องที่น่าประทับใจจริงๆ
DJMcMayhem

@MartinEnder คุณได้พิจารณาใส่รายการภาษาการเขียนโปรแกรม 2D เป็นปีบน Esolang หรือไม่?
doppelgreener

@doppelgreener ฉันไม่แน่ใจว่ามันจะพอดีกับที่นั่นได้อย่างไร มันเป็นเพียงจุดตัดของหมวดหมู่ 2D กับหมวดหมู่ปีที่แตกต่างกัน
Martin Ender

ฉันจะแก้ไขบรรทัดส่วนหัว RubE On Conveyor Belts หากคุณมีเครื่องย้อนเวลาฉันสามารถยืมเพื่อสอนวิธีอ่านไฟล์อายุ 13 ปีโดยไม่ทราบขนาดล่วงหน้า (นั่นเป็นเหตุผลเดียวที่มีบรรทัดส่วนหัว; IMO คุณสามารถรู้สึกฟรีที่จะไม่นับส่วนหัวขนาดเป็นส่วนหนึ่งของโปรแกรมแม้ว่าจะพูดอย่างเคร่งครัดก็ตาม)
immibis

1
@cairdcoinheringaahing ไปที่นั่นแล้ว และ Wumpus สำหรับปี 2018 ในขณะที่ฉันอยู่ที่นี่
Martin Ender

117

15 ปีงูหลาม

รุ่น: 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 และ3.6.0a4 รุ่นไม่ได้เชื่อมโยงสามารถพบได้ในหน้าดาวน์โหลด

วันที่ปล่อยของ 0.9.1 สามารถพบได้ที่นี่ น่าเสียดายที่ฉันต้องข้ามปีจำนวนมากเนื่องจากไม่มีรุ่นเก่าและปัญหาการรวบรวมในคอมพิวเตอร์ของฉัน ปีที่เป็นตัวแทนคือ 2534, 2543-2545 และ 2549-2559

ทดสอบบน Arch Linux โดยใช้เวอร์ชัน gzipped

# 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
... ว้าว. มันทำให้ฉันประหลาดใจว่าบางคนรู้จักภาษาของพวกเขาดีแค่ไหน มันเหมือนกับการมองย้อนกลับไปเมื่อเวลาผ่านไป ...
wizzwizz4

หลาม 0 สนับสนุนลอง / ยกเว้น?
OldBunny2800

8
@ OldBunny2800 น่าอัศจรรย์ใช่แล้ว
Sp3000

54

สั้นและหวาน APLทั้งสาม( K , J201 , Dyalog 7.1 ) ใน 8 ไบต์

1993+1^2

2536 บวก ...

K: จำนวนเต็ม 1 ตัวแรก {0} ยกเว้น {2} คือ {0}; 2536 - ลองออนไลน์!

J: 1 2 = 1; 1994 - ลองออนไลน์!

APL: LCM (1,2) = 2; 1995 - ลองออนไลน์!


ดีมาก! คิดว่าคุณสามารถรวมภาษา Iverson เข้าด้วยกันได้มากขึ้นใช่ไหม
ไมล์

@miles Get ใช้งานยากด้วย K และ APL2 / APLX / APL * PLUS นั้นคล้ายคลึงกันมากเกินไป
อดัม

@miles คุณรู้จักรุ่น J ตั้งแต่ปี 2000 ไหม ถ้าเป็นเช่นนั้นเราสามารถทำได้2e3+?1กับ Dyalog 9.0.1
อดัม

โอกาสที่ยอดเยี่ยมอีกอย่างคือX^Yตัวเลข X และ Y เช่นเดียวกับ^กำลังของ J แต่ LCM ใน APL
อดัม

2
ฉันพบหน้าฟีเจอร์ต่างๆมากกว่าวันที่เผยแพร่จนถึงปี 2000 jsoftware.com/release/status.htm
ไมล์

46

10 ปี 12 ภาษา 2430 ไบต์

คำตอบนี้เป็นความร่วมมือระหว่างตัวเองและผู้ใช้1000000000

รายการภาษาสั้น ๆ :

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 

นี่คือรหัส:

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

เพื่อให้พอดีกับคำตอบนี้ฉันจะสละลิงค์ TIO ทั้งหมดและจะโพสต์ลิงก์ไปยังล่ามที่ถูกต้องซึ่งผู้ใช้อาจป้อนรหัสได้ นี่คือลิงค์ Pastebinเพื่อจุดประสงค์นั้น

Piet

รูปแบบไฟล์ PPMซึ่งเป็นหนึ่งในรูปแบบภาพที่ล่าม Piet เราใช้สามารถอ่านจากมีรุ่น ASCII ธรรมดา เมื่อใช้สิ่งนี้เราสามารถฝังโค้ดภาษาอื่น ๆ เป็นขยะในไฟล์ภาพที่อ่านโดย Piet และ Braincopter

ภาพมีลักษณะดังนี้:

ภาพดิบ

ไม่ใช่ทุกภาพที่มีความสำคัญต่อ Piet นี่คือรุ่นที่มีบรรทัดที่เน้นเส้นทางที่ Piet ติดตามผ่านโค้ด:

เส้นทาง Piet

แม้จะมีวิธีการที่ซับซ้อนในการสร้างโปรแกรมตัวโปรแกรมเองนั้นค่อนข้างง่าย ที่ด้านบนของภาพจะผลัก1 10 10 10 2ไปที่สแต็ก ข้าง ๆ มันคูณสามและเพิ่มอีกหนึ่งครั้ง ที่มุมด้านล่างผลลัพธ์ (2001) แล้วหยุด

Braincopter

Braincopter เป็นภาษาภาพอื่น ๆ นอกจากนี้ยังขึ้นอยู่กับppmไฟล์ภาพเดียวกันที่จะเรียกใช้ เนื่องจากข้อ จำกัด ที่รุนแรงมากในรหัสของเราจึงสามารถใช้ส่วนย่อยของการดำเนินงานของ Braincopter ต้นฉบับเท่านั้น เราถูก จำกัด ให้ใช้สีที่ใช้งานได้ใน Piet สิ่งนี้จะลบ-โอเปอเรเตอร์จาก Braincopter

นี่คือเส้นทางที่ติดตามโดยรหัส Braincopter:

เส้นทาง Braincopter

โปรแกรม Braincopter นั้นค่อนข้างแปลกเพราะขาด-ผู้ให้บริการ ผนังของสีเขียวและสีฟ้าเข้มทำหน้าที่เปลี่ยนเส้นทางตัวชี้ แต่นอกเหนือจากนั้นจะเหมือนกับ brainfuck ต่อไปนี้:

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

สิ่งนี้พิมพ์ในปี 2005

Paintfuck

Paintfuck เป็นภาษาการเขียนโปรแกรมด้วยภาพที่สามในรายการของเราอย่างไรก็ตามแทนที่จะถ่ายภาพและเอาท์พุทข้อความ Paintfuck ใช้ข้อความและแสดงรูปภาพ

เนื่องจาก Paintfuck ไม่สนใจอักขระที่ไม่เกี่ยวข้องเนื่องจากไม่มีส่วนใหญ่ของรหัสจึงไม่สำคัญ ส่วนที่เกี่ยวข้องของรหัสคือ:

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

ในขณะที่พวกเขาไม่ได้ไม่มีตัวเลือกws ที่ส่วนท้ายของรหัสไม่ทำอะไรเลย พวกเขาอยู่ที่นั่นสำหรับส่วนหญ้าของการแก้ปัญหา n, e, sและwจะใช้ในการย้ายไปรอบ ๆ ภาพและ*จะใช้ในการพล็อตจุดที่ตั้งของบางอย่าง ผลลัพธ์ของโปรแกรม:

เอาท์พุท Paintfuck

รุ่นใหญ่กว่า:

Painfuck เอาท์พุท แต่มันใหญ่กว่า

brainfuck

เช่นเดียวกับ Paintfuck Brainfuck ไม่สนใจอักขระส่วนใหญ่ นี่เป็นสิ่งสำคัญอีกครั้ง:

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

สิ่งเหล่านี้ส่วนใหญ่ไม่เกี่ยวข้องกับสถานการณ์และเป็นตัวอักษรที่ต้องการภาษาอื่น รหัสนี้บางกว่านี้คือ:

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

1993นี้สวยเพียงแค่พิมพ์

Brainbool

Brainbool คล้ายกับ Brainfuck ในการเลือกตัวละคร ความแตกต่างที่ยิ่งใหญ่ที่ทำให้ทั้งสองเข้าด้วยกันคือการขาด-Brainbool ตัวละครสำคัญสำหรับ Brainbool คือ:

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

ผลลัพธ์ของ Brainbool และ brainfuck นั้นไม่เหมือนกัน Brainbool []ซ่อนเอาท์พุทในชุดที่สองของ การเผชิญหน้า Brainfuck +++---ก่อนที่จะถึงการ[ตั้งค่าให้เป็นศูนย์และทำให้ข้ามการส่งออกในขณะที่ Brainbool เห็น+++การตั้งค่าเป็น 1 เท่านั้นทำให้การส่งผ่านลูป ทำนองเดียวกัน Brainbool ถูกตั้งค่าเป็นศูนย์ที่วงที่ 4 ทำให้ข้ามไปในขณะที่ Brainfuck เข้าสู่ลูปด้วยค่า 49

เนื่องจาก Brainbool ไม่มีเอาต์พุตทศนิยมมันจึงส่งออก 2010 ในรูปแบบไบนารี่:

11111011010

การแยก

ส่วนเดียวของรหัสที่มีความสำคัญต่อการแตกตัวคือ:

R"2014";

Rหมายเรียกในอะตอมจะย้ายไปอยู่ด้านขวา"2014"พิมพ์2014และ;การดำเนินการหยุดพัก

Befunge

Befunge ส่งผ่านตัวละครต่อไปนี้เท่านั้น:

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

P3เป็นสิ่งจำเป็นที่จะทำให้ภาพที่ถูกต้องสำหรับ .ppm Piet และสะสมผลักดัน 3 สแต็ค vถูกวางไว้ในการเปลี่ยนเส้นทางชี้ลง จากนั้นจะผ่าน7ในส่วนที่17ใช้เพื่อระบุความกว้างของภาพ. pppm การ>เปลี่ยนเส้นทางตัวชี้ไปทางขวา 7*คูณด้านบนของสแต็กด้วย 7 ออกจาก 49 (ค่า ASCII ของ1) ที่ด้านบนของสแต็ก ::ทำซ้ำส่วนบนสุดของสแต็กสองครั้ง คือการส่งออกโดย 1 เพิ่ม 8 ไปด้านบนที่เพิ่มขึ้นเพื่อ ASCII เอาต์พุตสองครั้ง เพิ่ม ASCII เป็น ASCII และพิมพ์ ในที่สุดก็ยุติโปรแกรม,8 +9:,,92 +13,@

ทั้งหมดนั้นพิมพ์1993ออกมา

ช่องว่าง

ช่องว่างตามชื่ออาจแนะนำให้ใช้ช่องว่างในโปรแกรมของมันเท่านั้น นี่คือสิ่งที่ล่าม 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]

สิ่งที่รหัสนี้ทำส่วนใหญ่นั้นไม่สำคัญกับการดำเนินการของโปรแกรม ส่วนที่สำคัญ:

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

บรรทัดแรกพุช 2003 ถึงสแต็ก หลังจากนั้นจะ[Tab][LF][Space][Tab]พิมพ์ส่วนบนสุดของสแต็ก (2003) เป็นตัวเลข ในที่สุดสาม linefeeds สุดท้ายสิ้นสุดการทำงานของโปรแกรม

หญ้า

หญ้าละเว้นตัวอักษรทั้งหมดจนกว่าแรกwในแฟ้มและหลังจากนั้นทุกตัวอักษรที่ไม่w, หรือW vThe Grass interpreter อ่าน:

wWWWwWWWWwv
wWWwWWWwv
wWWWwWWWWWwWWWWWWwwwWWWWWWWwWWWWWWwwwWWWWWWWWWWwWWWWWWWWWWwv
wWWWwWWWWwv
wWWwWWWwv
wWWwWWWwv
wWWwWWWwv
wWWwwwwwwwwwwwWWWwWWWWWwWWWWWWWwWWWWWWWWWwWWWWWWWWWWWWWWWwWWWWWWWWWWWWwv

บรรทัดแรกกำหนดฟังก์ชั่นที่เพิ่มสองเข้าไปในสิ่งที่ผ่านไป บรรทัดที่สองกำหนดฟังก์ชั่นที่เพิ่มสี่เข้าไปในสิ่งที่ผ่านไป ที่สามกำหนดฟังก์ชั่นที่พิมพ์สองบวกอาร์กิวเมนต์อาร์กิวเมนต์พิมพ์สองครั้งแล้วในที่สุดก็พิมพ์เจ็ดบวกอาร์กิวเมนต์ (Grass พิมพ์อักขระตามค่า ASCII) บรรทัดที่สี่ห้าและหกกำหนดฟังก์ชันที่เพิ่มแปดเพิ่ม 16 เพิ่ม 32 และเพิ่ม 64 ลงในอาร์กิวเมนต์ตามลำดับ บรรทัดสุดท้ายกำหนดฟังก์ชั่นหลักที่ใช้ตัวอักษรw(ตัวเลขที่กำหนดไว้ล่วงหน้าเท่านั้นใน Grass, ASCII ค่า 119) และเพิ่ม 185 ให้กับมันโดยใช้ฟังก์ชั่นเพิ่มที่กำหนดไว้ในโปรแกรมเช่นเดียวกับในตัวเพิ่มหนึ่งฟังก์ชั่น Grass ตัดหมายเลขที่ 256 ดังนั้นผลลัพธ์คือ 48 (สอดคล้องกับอักขระ0) จากนั้นฟังก์ชั่นนี้จะส่งผ่านไปยังฟังก์ชันของบรรทัดที่สามซึ่งพิมพ์ออกมาในปี 2007

แจ่มจรัส

Starry ละเว้นทุกอย่างยกเว้นสำหรับพื้นที่, +, *, ., ,, และ` 'ดังนั้นล่ามเต็มไปด้วยดวงดาวจึงเห็นเพียง:

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

อย่างไรก็ตามคำแนะนำในฉลากและการข้ามจะใช้ในการข้ามส่วนต่าง ๆ ของรหัสซึ่งอาจทำให้เกิดปัญหาหากเรียกใช้ดังนั้นรหัสจึงเป็นสิ่งที่มีประสิทธิภาพ:

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

รหัสนี้จะพุชสองครั้งในกองซ้อนทำซ้ำสองครั้งจากนั้นจะปรากฏและพิมพ์หนึ่งในนั้นเป็นตัวเลข จากนั้นดันศูนย์ให้ทำซ้ำและพิมพ์เลขศูนย์ทั้งสองเป็นตัวเลข ถัดไปก็ปรากฏหนึ่งใน twos และกระโดดแล้วผลักเจ็ดถึงกองและปรากฏและพิมพ์เป็นตัวเลข ในที่สุดมันก็ปรากฏสองครั้งสุดท้ายในสแต็คและกระโดดไปที่จุดสิ้นสุดของโปรแกรม

Python 2.7.2

รหัส Python ตามรูปแบบ:

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

ที่...ยืนสำหรับขยะอื่น ๆ ทั้งหมด

บรรทัดแรกP3v=""นั้นมีเพราะเป็น.ppmไฟล์ที่ถูกต้องรหัสของเราจะต้องเริ่มต้นด้วยP3สิ่งนี้ปกติจะเกิดข้อผิดพลาด แต่ถ้าเราบอกว่าหลามมันเป็นการประกาศตัวแปรมันจะไม่สนใจมัน

2011ต่อไปเราจะมีการพิมพ์ อย่างไรก็ตามเนื่องจากวิธีการ.ppmจัดรูปแบบa เราจึงไม่สามารถใส่ตัวเลขใด ๆ ในบรรทัดนี้ เพื่อให้ได้สิ่งนี้เราจะสรุปค่า ASCII ทั้งหมดของสตริง"~~~~~~~~~~~~~~~y"และพิมพ์ผลลัพธ์ ในที่สุดเราใช้เครื่องหมายคำพูดสามเท่าของคอมเม้นท์หลายบรรทัด

Brainflak

เราบันทึกสิ่งที่ดีที่สุดไว้เป็นครั้งสุดท้าย

Brainflak เช่นเดียวกับคนอื่น ๆ ไม่สนใจตัวละครส่วนใหญ่ ตัวละครที่เกี่ยวข้องคือ:

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

รหัสหลาม(([()])), กด -1 ถึงสแต็กสองครั้งจึงจำเป็นต้องลบออกก่อนที่โปรแกรมจะเริ่มการประมวลผล

หลังจากนั้น Brainbool ใช้[]nilad ซึ่งไม่ทำอะไรเลยและโปรแกรมก็เริ่มขึ้น

(((((()()()()){}){}){}){})({({}[<()>()])}{}<[[]]>)pushes 2016. สุดท้าย[<><>]คือเศษของ Befunge และ Brainfuck แต่โชคดีที่ไม่ทำอะไรเลย

เมื่อโปรแกรมยุติการพิมพ์เนื้อหาของสแต็คจะถูกพิมพ์2016ออกมา


ยอดเยี่ยม! ฉันหวังว่า Piet จะปรากฏตัวอย่างใดการฝังสิ่งต่าง ๆ ใน PPM นั้นยอดเยี่ยม ทำได้ดี!
cincodenada

1
+1 We saved the best for lastสำหรับ : D
DJMcMayhem

38

5 ปี

#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]และ1999: C99

ความคิดเห็นบรรทัดเดียว//ถูกเพิ่มเข้ามาใน C99 เพื่อรวบรวม C89 จะอ่านรหัสที่เป็นc=-4.5 / /*comment*/ -4.5ซึ่งเป็นเช่นเดียวกับc=-4.5 / -4.5ในขณะที่คอมไพเลอร์ C99 จะอ่านเป็นซึ่งเป็นเช่นเดียวกับc=-4.5 //comment/**/
- 4.5 ส่วนหลามเป็นความคิดเห็นในโปรแกรม Cc=-4.5 - 4.5

2010: Python 2.7และ2015: Python 3.5

เอกสารแตกต่างกันระหว่าง Python 3 และ 2 โปรแกรมนี้ใช้ความยาวของเอกสารในการตรวจสอบเวอร์ชันของ Python
ส่วน C อยู่ในสตริงในโปรแกรม Python

2536 [2] : Brainfuck

.,[]+-<>มันเป็นพื้นละเว้นทุกอย่างที่ไม่ได้ เนื่องจากโปรแกรม C มี,อยู่ในนั้นฉันต้องทำให้ Brainfuck ยกเลิกส่วนนั้นโดยตั้งค่าไบต์ปัจจุบันเป็น 0


  1. ข้อมูลจำเพาะ C89 ได้รับการปล่อยตัวในปี 1990 ข้อมูลเพิ่มเติม
  2. ฉันไม่สามารถหาวันที่เผยแพร่อย่างเป็นทางการดังนั้นฉันจะเชื่อEsolangsและวิกิพีเดีย

4
นี้เป็นที่ดีโดยเฉพาะอย่างยิ่งและ-4.5/-4.5 -4.5-4.5การแมชชิงสองเวอร์ชันแต่ละภาษาหลักสองภาษานั้นค่อนข้างน่าประทับใจแม้ว่าจะไม่ได้โยน BF ลงในนั้น :-)
ETHproductions

นี่ไม่ใช่ codegolf แต่a=บรรทัดที่ 2 ไม่จำเป็น
TheInitializer

@TheInitializer ใช่ฉันพยายามโดยไม่ได้a=และมันทำให้เกิดข้อผิดพลาดดังนั้นฉันจึงตัดสินใจที่จะเก็บมันไว้ ฉันไม่รู้ว่าทำไมมันถึงมีข้อผิดพลาด
betseg

@betseg หากรหัสนั้นใช้งานใน Python เท่านั้นรหัสนั้นควรใช้งานได้
TheInitializer

17

15 ปี, จาวาสคริปต์

เนื่องจากวงจรการเปิดตัวของ JavaScript นั้นผิดปกติและไม่สอดคล้องกันฉันจึงต้องใช้การติดตั้ง Firefox โปรดแจ้งให้เราทราบหากไม่ได้รับอนุญาต

รุ่น: 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 (ทั้งหมดผ่านการทดสอบบน Windows 7)

หมายเหตุสำคัญ:การติดตั้งและเปิด Firefox 1.0.0 หรือรุ่นที่ใหม่กว่าอาจลบข้อมูล Firefox ที่บันทึกไว้ทั้งหมดของคุณรวมถึงประวัติและบุ๊คมาร์ค

นอกจากนี้เริ่มต้นด้วย 1.0.0 คุณสามารถเปิดได้ครั้งละหนึ่งเวอร์ชั่นเท่านั้น กำลังพยายามเปิดผลลัพธ์รุ่นอื่นในหน้าต่างใหม่ของรุ่นที่เปิดอยู่แล้ว

คำแนะนำ

  • ตัวเลือกที่ 1:บันทึกรหัสด้านล่างลงในคอมพิวเตอร์ของคุณเป็นเอกสาร HTML และเปิดในแต่ละเบราว์เซอร์
  • ตัวเลือก 2:เปิดhttps://ethproductions.github.io/js-year-test.htmlในแต่ละเบราว์เซอร์

รหัส

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

คุณสามารถเพิ่มปีที่ 16 โดยรวมถึง BF: <!--<<<<-[>+<-----]>--.++++++++..------.[-][-->ก่อนสคริปต์และความคิดเห็น HTML อื่นที่มีเพียง]หลังจากนั้น
Steven H.

6
@StevenH อืม ... ว้าวฉันไม่เคยคิดแม้แต่จะรวมถึง esolangs ในเรื่องนี้ และนั่นเป็นวิธีที่ชาญฉลาดในการรวม BF :-) แต่ฉันไม่แน่ใจว่าฉันต้องการ ...
ETHproductions

13

6 ภาษา, Turtlèdและbrainfuck , Python 3.5, Python 2.7, > <> , ฟิชชัน

Turtlèdไม่เคยมีมาก่อนปีนี้และวัตถุประสงค์ง่าย ๆ แม้ว่า gitub จะไม่นับและ BF มีหลักฐานหน้า esolang เปิดตัวในปี 1993 Python 3.5 คือ 2015, 2.7 คือ 2010> <> ยังมีหน้า esolang โดยระบุปี 2009 เช่นเดียวกับ Fission ปี 2014

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

ฉันควรให้เครดิตกับหน้าค่าคงที่ bf บน esolangs ... ¯ \ _ (ツ) _ / ¯

มันทำงานอย่างไร:

turtled:

Turtlèdไม่ได้ทำอะไรเลยสำหรับสายอื่นที่ไม่ใช่บรรทัดแรก:

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

/ เป็น nop

brainfuck

Brainfuck ไม่สนใจตัวอักษรที่ไม่อยู่ในคำสั่ง

เห็น-[>+<-----]>--.++++++++..------.(สุดท้ายคือจากส่วนหลาม)

ซึ่งเพิ่งทำสิ่งที่ Brainfuck มันใช้การห่อเพื่อหาร 255 ด้วย 5 แล้วลบ 2 จากผลลัพธ์พิมพ์เพิ่มขึ้น 8 ครั้งพิมพ์สองครั้งลดลง 6 ครั้งพิมพ์

Python 2 และ 3

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

ความยาวของเอกสารสำหรับ len แตกต่างกันไปตามรุ่นดังนั้นจึงพิมพ์ปีสำหรับรุ่น 3 หากเป็นความยาวที่เหมาะสมมิฉะนั้นสำหรับเวอร์ชัน 2

> <>

# สะท้อนให้เห็นถึงตัวชี้ไปข้างหลังดังนั้นจึงกดปุ่ม / ที่อีกด้านหนึ่งของบรรทัดนั้นผ่านช่องว่างระหว่างelseและ2010จากนั้นสะท้อนอีกครั้งเพื่อกด "2009" ผลักดัน 9,0,0,2 ลงบนกองซ้อนจากนั้นพิมพ์กลับด้าน .

การแยก

ฟิชชันมี spawners ดังนั้นเราจึงสามารถมีบรรทัดที่ด้านล่างที่มันดำเนินการเพียงอย่างเดียว:

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

13

3 ปี 3 ภาษา: 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   */ 

date.mixalชื่อแฟ้ม

  1. C (1990) - มีคำเตือนรวบรวมและพิมพ์ไป1990stdout
  2. TeX (1982) - คอมไพล์ด้วยtex date.mixal; พิมพ์1982ไปยังไฟล์O.tex(ละเว้นเอาต์พุต DVI)
  3. MIXAL (1997) - คอมไพล์โดยใช้ GNU Mix Development Kit mixasm date.mixalและรันด้วยmixvm -r date.mix; พิมพ์1997ไปยังอุปกรณ์โทรพิมพ์ (= stdout)

โปรแกรม TeX และ MIXAL อยู่ในข้อคิดเห็นในโปรแกรม C; โปรแกรม MIXAL เกิดขึ้นหลังจาก\byeนั้น TeX จะข้ามไป โปรแกรม C และ TeX เป็นความคิดเห็นในโปรแกรม MIXAL ด้วยเหตุผลบางอย่างก็เต็มใจที่จะยอมรับgcc*main


ฉันลืม MIXAL, +1: D
cat

13

3 ปี (GolfScript, CJam, MATL), 24 23 ไบต์

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

ผลลัพธ์นี้

  • 2007 ใน GolfScript

  • 2015 ใน CJam (เวอร์ชั่น 0.6.5)

  • 2016 ใน MATL (รุ่น 19.2.0)

คำอธิบาย

Golfscript

ราชสกุลไม่ได้กำหนดเป็น noops ใน GolfScript ส่วนของรหัสที่ทำอะไรบางอย่างเท่านั้นคือ:

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

ทุกอย่างจาก%เป็นต้นไปเป็นความคิดเห็น

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

การแก้ไข: ใน CJam หลังจาก%คุณได้รับ [11 10] ไม่ใช่ว่ามันสำคัญ
aditsu

@aditsu อ๊ะ! ขอขอบคุณแก้ไข
Luis Mendo

12

2 ภาษา, Python 2.7 และ Python 3.5

งูหลาม 2.7 ได้รับการปล่อยตัวใน2010

งูหลาม 3.5 ได้รับการปล่อยตัวใน2015

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

สิ่งนี้อาศัยPEP 238ซึ่งตัวดำเนินการ/ถูกเปลี่ยนจากการแบ่งจำนวนเต็มใน Python 2 เป็นการหารทศนิยมใน Python 3


3
นี่อาจเป็นความท้าทายที่สนุกถ้ามันเกี่ยวข้องกับการระบุบั๊ก / การเปลี่ยนแปลงในโอเปอเรเตอร์ระหว่างเวอร์ชัน
ไมล์

1
@TuukkaX มันใช้ได้กับฉันทั้ง Python 2.7.12 และ Python 3.5.1 บน Fedora 24
ไมล์

1
คุณทำไม่ได้'2010'if 3/2>1else'2015'แทนเหรอ
Qwerp-Derp

15
หรือคณิตศาสตร์ของเรา:print(int(2010+1/2*10))
Jakube

2
print('2015'if 1/2else'2010')ดีกว่า
Cyoce

12

8 ปี 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

"โปรแกรมใดโปรแกรมหนึ่งอาจพิมพ์ไปที่ STDERR หรือโยนข้อผิดพลาดและคำเตือนเวลารันไทม์ / คอมไพล์และตราบใดที่เอาต์พุตที่ถูกต้องยังคงพิมพ์ไปยัง STDOUT หรือไฟล์" ปัจจุบันการแสดงผลที่ไม่ใช่ข้อผิดพลาดเพียงอย่างเดียวคือปีดังนั้นเราจึงปฏิบัติตามกฎนี้ แต่ถ้าคุณต้องการที่จะเขียนถึงหน่วยความจำแทนแทนที่ด้วยDisp (date)(date)->I

อ้างอิง:

  1. วันที่วางจำหน่ายเครื่องคิดเลข - https://epsstore.ti.com/OA_HTML/csksxvm.jsp?nSetId=74258
  2. วันที่เผยแพร่ TI-83 + OS 1.15 - http://wikiti.brandonw.net/index.php?title=83Plus:OS:VersionDifferences#TIOS_1.15
  3. ความเข้ากันได้ของเครื่องคิดเลข - http://tibasicdev.wikidot.com/compatibility
  4. วันที่เผยแพร่ TI-84 + CSE - https://www.amazon.com/Texas-Instruments-Silver-Graphing-Calculator/dp/B00AWRQKDC
  5. วันที่เผยแพร่ TI-84 + CE - http://www.prnewswire.com/news-releases/texas-instruments-unveils-the-new-ti-84-plus-ce-300026266.htmlและhttps: // www. cemetech.net/forum/viewtopic.php?t=8870

9

5 ปี, Go 1.0, 1.1, 1.4, 1.5, 1.6: 285 257 ไบต์

(1.2 เปิดตัวในปี 2013 เช่น 1.1, 1.3 ในปี 2014 เช่น 1.4 และ 1.7 ในปี 2016 เช่น 1.6)

ยังไม่ได้ทดสอบสิ่งนี้ในทุกรุ่นเพราะฉันสามารถเข้าถึง 1.6 เท่านั้น แต่มันควรใช้งานได้ในทางทฤษฎี! การเปลี่ยนแปลงทางภาษาน่าจะทำให้โปรแกรมไม่สามารถคอมไพล์ได้ดังนั้นฉันจึงต้องพึ่งพาการเปลี่ยนแปลงไลบรารีมาตรฐาน

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 และแสดงความคิดเห็น:

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 ปี 99 ไบต์ / 77 ตัวอักษร

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

หมายเหตุ: ฉันไม่แน่ใจว่าปีถูกต้องหรือไม่

  • Python 2.7, 2010
  • Javascript, 1991
  • อิโมติโนมิกอนปี 2015
  • ><>ปี 2552

ฉันใช้เวลาพอสมควรในการหาวิธีทำให้ Python และ JS ทำงานร่วมกัน

คำอธิบาย

v=1//1;"""ตั้งค่าตัวแปรvเป็น1หารด้วย1ใน Python และ1ใน Javascript ( //เริ่มแสดงความคิดเห็นใน Javascript) และ;"""เริ่มต้นสตริงหลายบรรทัดใน Python ;ไม่สามารถถูกแทนที่ด้วยการขึ้นบรรทัดใหม่เพราะนั่นจะทำให้ Javascript หยุดทำงาน

1991/*"""เป็นส่วนที่เหลือของสตริงหลายบรรทัด จำเป็นต้องมีพื้นที่ว่างเพื่อให้> <> ไม่ผลัก1ไปที่สแต็ก ตั้งแต่จุดเริ่มต้นของสตริงหลายบรรทัดเป็นส่วนหนึ่งของความคิดเห็นใน Javascript มันจะพิมพ์1991และเริ่มแสดงความคิดเห็นหลายบรรทัด

for i in[0]:print 2010#🔟😃😇🔟😗➕➕😨ในหลามเป็นห่วงว่า iterates รายการและวิ่ง[0] print 2010ความคิดเห็นเป็นเพียงรหัส Emotinomicon (จะไม่สนใจทุกสิ่งที่ไม่ใช่อิโมจิหรือสตริง) ใน> <> มัน ( f) ผลัก15 ไปที่สแต็ก

ไม่สามารถลบ for for เนื่องจากเนื่องจาก> <> IP กำลังจะลงในคอลัมน์ 1 และpไม่ใช่คำสั่งที่ถูกต้องใน> <> คุณไม่สามารถแทนที่ด้วยifคำสั่งได้เนื่องจากiเป็นคำสั่งที่จะใส่ใน> <>

""" คือจุดเริ่มต้นของสตริงหลายบรรทัด

" เป็นส่วนหนึ่งของสตริงหลายบรรทัดจำเป็นต้องปิดสตริงที่เราเปิดใน> <> (เครื่องหมายคำพูดแรกของบรรทัดก่อนหน้านี้เริ่มสตริงใน> <>)

>9002nnnn;ใน> <> เปลี่ยนทิศทางไปทางขวา IP ผลัก9, 0, 0และ2การส่งออกเหล่านี้เป็นตัวเลขและสิ้นสุดโปรแกรม

"""#*/ใน Python สิ้นสุดสตริงหลายบรรทัดและเริ่มความคิดเห็น ใน Javascript */ทำให้ความคิดเห็นหลายบรรทัดสิ้นสุดลง


รุ่นโบนัสพร้อม Gol> <>:

5 ภาษา, 4 ปี, 118 114 ไบต์ / 96 92 ตัวอักษร

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

Explanation²

IP เริ่มที่มุมซ้ายบนไปทางขวา vทำให้มันลงไป

f15ผลักดัน

" เริ่มต้นสตริง

` ใช้เพื่อหลบหนีอักขระบางอย่างที่>>> ไม่มี

"ควรปิดสตริง แต่เราใช้`ดังนั้นมันจะไม่

> ส่วนหนึ่งของสตริง

" สิ้นสุดสตริง

>5102nnnn;เป็นรหัสจริง >ทำให้ IP ไปขวา, 5102ผลักดัน5, 1, 0และ2และnnnn;พิมพ์ตัวเลขและสิ้นสุดโปรแกรม


ข้อผิดพลาดของ Python ในตัวยูนิโค้ดที่ไม่มีส่วนหัวที่เหมาะสม ( 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 บันทึกไฟล์เป็น UTF-8
acrolith

7

7 ปี 8 เบราว์เซอร์

ไม่ตรงกับวันที่วางจำหน่ายภาษาเพราะ css ไม่มีการวางจำหน่ายจริง แต่รุ่นของเบราว์เซอร์

สำหรับเบราว์เซอร์ต่อไปนี้จะพิมพ์ชื่อเบราว์เซอร์รุ่นและวันที่เผยแพร่และไม่มีอะไรอื่น มันพิมพ์สิ่งเดียวกันสำหรับรุ่นต่อ ๆ ไป (คุณจะเห็นโครเมียมเป็นรุ่นหนึ่งในหน้าจอเพราะมันยากที่จะดาวน์โหลด chrome รุ่นเก่าด้วยหมายเลขเวอร์ชั่น)

ฉันสามารถพิมพ์หมายเลขรุ่นที่ฉันใช้ แต่ฉันต้องการแสดงเวอร์ชันแรกที่มีการใช้คุณสมบัติที่แนะนำ

  • IE6
  • IE7
  • IE8
  • IE9 (ยังไม่ได้ทดสอบไม่มี IE9 อยู่รอบ ๆ )
  • Firefox 4
  • Firefox 3.6
  • Chrome 18
  • Chrome 21
  • เบราว์เซอร์ที่ทันสมัย

FF3.6 FF4 Chromium19 Chromium22 IE8-นิสัยใจคอ 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 มีการเผยแพร่จริง มี 1.0, 2.0, 2.1, 3.0 และ 4.0 คำถามที่ว่ากันว่าใช้ Wikipedia หรือเว็บไซต์ของภาษาเป็นหลักฐานวันที่ออกดังนั้นคุณควรตรวจสอบ วันที่วางจำหน่ายครั้งแรก: 17 ธันวาคม 1996
mbomb007

มันไม่ได้มีความรู้สึกว่าไม่มีการใช้งานของระดับเหล่านั้น (พวกเขาไม่ได้เรียกว่าปล่อยเพราะพวกเขาไม่ได้คุณควรตรวจสอบลิงค์ที่คุณโพสต์) และ CSS3 และ 4 ไม่มีวันที่วางจำหน่ายเพราะมันถูกสร้างขึ้นทันทีและกลับไปกลับมาระหว่างแบบร่างผู้สมัครและคำแนะนำ นอกจากนี้เบราว์เซอร์ที่ไม่มีการดำเนินการในระดับที่เฉพาะเจาะจง 100% และ 0% ของระดับถัดไปดังนั้นวันที่ดีที่สุดที่คุณจะได้รับคือวันที่รีลีสของเบราว์เซอร์
qwazix

จากนั้นภาษาที่คุณเลือกไม่ตรงตามข้อกำหนดที่กำหนดสำหรับความท้าทายนี้ ไม่ใช่ในแบบที่คุณพยายามจะทำ ภาษานั้นถูกกำหนดโดยการนำไปใช้ดังนั้นคุณต้องเลือกเบราว์เซอร์และใช้มันโดยใช้เบราว์เซอร์เวอร์ชันอื่นไม่ใช่เบราว์เซอร์ที่แตกต่างกัน ฉันยังคงถาม OP แต่
mbomb007

สหกรณ์ไม่ได้พูดรุ่นที่แตกต่างกันนับภาษาที่แตกต่างกันพวกเขาก็บอกว่าจะพิมพ์ออกมาในปีการเปิดตัวของรุ่นภาษาที่ใช้สำหรับภาษาที่แตกต่างกัน อย่างไรก็ตามประมาณครึ่งหนึ่งของคำตอบนั้นขึ้นอยู่กับสมมติฐานว่าเวอร์ชันที่แตกต่างนั้นแตกต่างกันพอที่จะนับเป็นภาษา ถ้า python 2.5.0 และ 2.5.1 นั้นถือว่าแตกต่างกันพอฉันไม่สามารถเข้าใจว่า IE และ Chrome ไม่ได้เป็นเช่นไร
qwazix

6

3 ปี, 89 ไบต์

Python 2, JavaScript (ES6) และ Perl

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

ครั้งแรกที่evalจะทำงาน1บน Python 2 และprint=_=>console.log(1995)JavaScript และ Perl โดยใช้คุณสมบัติการแบ่งจำนวนเต็มของ Python 2 สิ่งนี้จะสร้างprintฟังก์ชั่นใน JavaScript และ Perl เพียงแค่ใส่ใจเกี่ยวกับข้อผิดพลาดทางไวยากรณ์และดำเนินการโดยไม่คำนึงถึง

ที่สองevalอาศัย Perl ตัวแปรสอดแทรก$$(PID ปัจจุบัน) ลงในสตริงซึ่งจะเป็นจริงเมื่อเปรียบเทียบ (ใช้ตัว>ดำเนินการ) เทียบกับ"0"(Python ต้องการสตริงในการเปรียบเทียบนั้นในขณะที่ Perl จะแปลงเป็นจำนวนเต็มโดยปริยาย)

ฉันสามารถใส่รองเท้าในภาษาอื่น ๆ ได้ แต่ต้องการมีวิธีแก้ไขปัญหาที่ไม่ใช้ความคิดเห็นที่ไม่เหมาะสมและทำงานในภาษา 'ปกติ' เท่านั้น

ฉันใช้หน้า Wikipedia นี้เพื่อค้นหาปีที่จะใช้


2

3 ภาษา 3 ปี

คำตอบแบบเฉพาะกิจเพื่อความสนุกสนาน

2002!~+++++++[<+++++++>-]<[.++++++++..------.[-]] 2016 !.
  • เมาส์-2002 : ทุกอย่างหลังจาก~เป็นความเห็นและส่วนแรกซึ่งอาจจะมีการเขียนภาพพิมพ์C0U!!!2002

  • นี้ท้าทายก่อนกระทำของ Calc : ซึ่งเป็นกองตามล่ามเครื่องคิดเลขฉันเพียงแค่การออกแบบใน C11 สำหรับการเขียนโปรแกรมครั้งที่สองเป็นส่วนหนึ่งของโปรแกรมก่อนช่องว่างแรกพิมพ์ข้อผิดพลาด (ได้รับอนุญาตตามสเป็คที่ท้าทาย) และภาพพิมพ์2016 !.2016

  • Brainfuck : พิมพ์ 1993 ตามที่เห็นในคำตอบอื่น ๆ ภายนอกสุดท้ายจะถูกละเว้นโดย.beef

โปรดทราบว่าการแสดงผลการคำนวณของสแต็คในปัจจุบัน< stackกับทุกสายการป้อนข้อมูลที่ไม่ว่างเปล่าเป็นส่วนหนึ่งของพรอมต์>, ไม่ได้เป็นส่วนหนึ่งของการส่งออก


ฉันจะหาข้อมูลเกี่ยวกับ Mouse-2002 ได้จากที่ใด ดูเหมือนว่า GitHub จะไม่มีสเปคใด ๆ
ข้าวสาลีตัวช่วยสร้าง

@WheatWizard README ของที่เก็บประกอบด้วยลิงก์ไปยัง MUSYS ดั้งเดิมของDr. Grogonoและการเริ่มต้นใหม่ของ David Simpson ในปี 2002ซึ่งรวมกันเป็นภาพตกลง
แมว

2

Microsoft Excel / Google ชีต 22 ไบต์

ฟังก์ชั่นแผ่นงานนิรนามที่ไม่มีการป้อนข้อมูลและผลลัพธ์1987ใน Microsoft Excel และ2006ใน Google ชีต

=IfError(M(2006),1987)

0

Perl 5 & Perl 6 (2 ปี)

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

เปิดตัวครั้งแรกของ Perl 5 คือในปี 1994

เปิดตัวครั้งแรกอย่างเป็นทางการของ Perl 6 คือในปี 2015

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.