Ngôn ngữ này được phát hành khi nào?


92

Thử thách của bạn rất đơn giản. Bạn cần phải viết một chương trình in ra STDOUT hoặc một tệp trong năm ngôn ngữ mà nó được viết ra được phát hành. Bởi vì đây là một nhiệm vụ đơn giản như vậy, điều khó khăn là nó phải được viết bằng càng nhiều ngôn ngữ khác nhau càng tốt.

Điểm của bạn là tổng số năm khác nhau được in chính xác.

Đối với mỗi ngôn ngữ bạn sử dụng, bạn phải

  • Chỉ định phiên bản ngôn ngữ bạn đang sử dụng. (Nếu có nhiều phiên bản)

  • Chỉ định năm nào phiên bản đó được phát hành lần đầu tiên và

  • Cung cấp một liên kết đến một trang chứng minh ngày của phiên bản / ngôn ngữ của bạn.

Bất kỳ một trong số này được tính là bằng chứng ngày phát hành, miễn là nó chỉ định số phiên bản (nếu có) và ngày phát hành.

  • Một trang wikipedia.

  • Một trang esolang .

  • Trang web chính thức của ngôn ngữ. Một trang github hoặc số lượng tương tự, miễn là nó có ngày phát hành. (Cam kết mới nhất không được tính, trừ khi có mã số phiên bản ở đâu đó trong mã)

Nếu không có nhiều phiên bản hoặc bản phát hành của một ngôn ngữ, chỉ cần sử dụng ngày phát hành ban đầu của ngôn ngữ.

Phiên bản nhỏ của cùng một ngôn ngữ làm đếm ngôn ngữ như khác nhau, miễn là họ đến từ các năm khác nhau và vẫn cho kết quả chính xác. Bạn không được sử dụng bất kỳ nội dung cung cấp thông tin nào cho bạn (bao gồm cả ngày phát hành) về phiên bản hiện tại của ngôn ngữ bạn đang sử dụng. Ví dụ: đây là một đệ trình python không hợp lệ:

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

Bất cứ bài nộp nào in đúng năm khác biệt nhất sẽ thắng!

Quy tắc

  • Mỗi chương trình phải in ra năm ngôn ngữ và không có gì hơn . Một dòng mới theo dõi (kiểu cửa sổ hoặc kiểu * nix) được cho phép.

  • Không có chương trình có thể mất bất kỳ đầu vào.

  • Trong trường hợp hòa, mã ngắn nhất được ghi bằng byte sẽ thắng. Bạn có thể sử dụng bất kỳ mã hóa nào bạn thích cho việc này, nhưng tất cả các chương trình phải sử dụng cùng một mã hóa.

  • Bất kỳ chương trình nào cũng có thể in ra STDERR, hoặc đưa ra các lỗi và cảnh báo thời gian chạy / biên dịch miễn là đầu ra chính xác vẫn được in ra STDOUT hoặc một tệp.

  • Các ngôn ngữ khác nhau có thể sử dụng các phương thức IO khác nhau, nhưng hầu hết chúng đều là các chương trình đầy đủ, (các chức năng không được phép cho thử thách này) và tuân theo một trong các phương thức IO mặc định của chúng tôi được cho phép .

Chúc mừng chơi golf đa sắc!


Pip không có trang Wikipedia hoặc Esolang, chỉ có GitHub và không có bất kỳ "bản phát hành" nào theo nghĩa GitHub của từ này, nên nó không đủ điều kiện để sử dụng trong thử thách này? (Nó có số phiên bản, được cập nhật ở mỗi lần xác nhận.)
DLosc

1
@dlosc Chà, tôi không muốn loại trừ bất kỳ ngôn ngữ nào một cách không cần thiết, nhưng tôi muốn đảm bảo rằng "ngày phát hành" hoàn toàn khách quan. Bạn có thể nghĩ ra bất kỳ cách nào tốt hơn để thực thi ngày phát hành sẽ bao gồm nhiều ngôn ngữ hơn không?
DJMcMayhem

4
(tình cờ chèn mã khoảng trắng để in 2003 về cơ bản trong mỗi lần gửi)
Ink Ink

8
"Bạn không được sử dụng bất kỳ nội dung cung cấp cho bạn thông tin về phiên bản hiện tại của ngôn ngữ bạn đang sử dụng." Tôi nhấn mạnh. Tôi có thể tìm ngày xây dựng trong tệp thông dịch không?
Adám

2
Tôi không nghĩ rằng cái này là một bản sao cả. Ngay cả khi đó là, thử thách này phải được chấp nhận là 'bản gốc' vì không giống như thử thách khác, thử thách này khuyến khích người dùng ra ngoài và tìm hiểu về những gì họ đang sử dụng.

Câu trả lời:


160

Sơ lược về lịch sử ngôn ngữ lập trình 2D: 16 (+2) năm

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@

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

Tôi đã đề cập rằng tôi thích ngôn ngữ lập trình 2D?

1993: Befunge

Ngôn ngữ (được cho là, xem phần cuối cùng) đã bắt đầu tất cả. Trong Befunge, bạn có thể chuyển hướng luồng điều khiển bằng <v>^, nhưng các gương hiện có ở khắp mọi nơi \/chưa phải là một điều. Trình thông dịch Befunge được sử dụng trên Anarchy Golf bỏ qua các lệnh không xác định. Chúng ta có thể sử dụng điều này để phân biệt họ Befunge với họ> <>. Do đó, mã được thực thi bởi Befunge là thế này:

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

Việc "8991"đẩy các nhân vật riêng lẻ lên ngăn xếp. ,,,in ba cái đầu tiên Sau đó, ;không rõ (chúng ta sẽ sử dụng để phân biệt với Befunge 98), 5-biến nó 8thành một 3,in ra trước khi @kết thúc chương trình.

1997: Khốn khổ

Viết phần này của giải pháp có thể khiến tôi mất chừng nào viết được tất cả những thứ khác ghép chúng lại với nhau ...

Wierd chỉ biết hai biểu tượng: không gian và mọi thứ khác. Con trỏ lệnh cố gắng đi theo đường dẫn được hình thành bởi các ký tự không phải khoảng trắng, bắt đầu theo đường chéo từ góc trên cùng bên trái và luôn cố gắng đi thẳng nhất có thể. Các khúc cua trong đường dẫn tạo thành các hướng dẫn thực tế (với các mức độ lần lượt xác định lệnh nào sẽ thực hiện). Vì vậy, mã được xem bởi Wierd là:

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

1997trên cùng không thực sự được thực thi, nhưng Wierd cho phép chúng ta đọc nó từ mã nguồn, ngắn hơn rất nhiều so với việc cố gắng xây dựng mã ký tự cho chính bốn chữ số (ngay cả khi nó không giống như vậy .. .). Tôi không cảm thấy muốn phá vỡ toàn bộ điều này, nhưng bạn có thể thấy rõ bốn phần lặp lại. Điều này làm là trước tiên chúng ta lưu trữ 1trên ngăn xếp và sau đó mỗi phần trong bốn phần đó sẽ tăng phần này 1và sau đó là các nhánh. Nhánh dưới đẩy cái khác1, lấy ký tự nguồn tại các tọa độ này và in nó, trong khi nhánh trên cùng được chuyển hướng đến phần tiếp theo. Bạn có thể tự hỏi tại sao các đầu của các con đường quá dài một cách không cần thiết, nhưng đó là bởi vì khi Wierd chạm vào cuối của một con đường, nó cố gắng nhảy đến một con đường gần đó trước khi quyết định rằng nó sẽ chấm dứt nhánh hiện tại. Để tránh điều này, chúng ta cần di chuyển các đầu này đủ xa khỏi bất kỳ mã nào khác.

1998: Befunge 98

Befunge có một bản cập nhật khá nổi tiếng vào năm 1998 với một thông số rất nghiêm ngặt có thể được khái quát thành các kích thước tùy ý (và tôi cũng nghĩ các cấu trúc liên kết tùy ý). Mặc dù vậy, phần lớn nó tương thích ngược với Befunge, điều này giúp cho việc kết hợp cả hai khá dễ dàng. Befunge này vẫn không có bất kỳ gương nào, vì vậy đường dẫn được thực hiện giống như đối với Befunge 93:

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

Sự khác biệt là Befunge 98 không bỏ qua ;. Thay vào đó, nó hoạt động giống như một nhận xét trong đó tất cả các lệnh cho đến khi lệnh tiếp theo ;bị bỏ qua. Bằng cách này, chúng tôi không giảm giá trị đó 8để 3và in 1998như là.

2001: Một không gian ... PingPong

Năm 2001 là năm của Piet, nhưng tôi thực sự không cảm thấy giống như một tập tin hình ảnh với tất cả các chương trình khác, vì vậy đây là một ngôn ngữ 2D ít được biết đến. Nó dường như có khá nhiều tính năng (mà chúng tôi sẽ không sử dụng). Cảm ơn Sp3000 vì đã tìm được trình thông dịch gốc (đây là liên kết chết duy nhất trên phiên bản lưu trữ của trang web chính thức).

PingPong hơi khác thường ở chỗ nó chỉ có gương và không có <v>^chuyển hướng. Vì vậy, điều này di chuyển qua v19977lúc bắt đầu và sau đó chạm vào gương bao bọc nó xuống phía dưới. Mã liên quan là:

v19977/

...

      /K:0:1:@

...

Mã thực tế khá đơn giản: Kđẩy 20, các chữ số tự đẩy, :in một số nguyên và @chấm dứt chương trình.

2003: SNUSP

Đây là ngôn ngữ đầu tiên nơi mọi thứ trở nên dễ dàng hơn một chút, vì SNUSP hỗ trợ một điểm nhập cảnh rõ ràng. Điểm vào đó được đánh dấu bởi $. Đánh giá từ một số bài viết về esolang, ngôn ngữ này đã truyền cảm hứng cho một số người khác, nhưng thật không may, vào cuối ngày nó chỉ là một dẫn xuất Brainfuck. Điều đó nói rằng, tôi nghĩ rằng cách thiết lập ô hiện tại này là 48 khá gọn gàng (và đã bị đánh cắp từ bài viết của esolang). Đây là phần có liên quan của mã:

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

Đó là 24 +giây và các gương gửi IP qua mỗi cái chính xác hai lần.

2004: Axo

Vì lý do gì, ngôn ngữ này không<^>chuyển hướng nhưng thay vì vsử dụng thông thường %. Do đó, điều này chỉ di chuyển trên dòng đầu tiên. Mã liên quan là:

v19977/2{@{{4{\

Chúng tôi đẩy một vài chữ số để bắt đầu, thực hiện một phân chia. Sau đó 2{in 2, @xóa ngăn xếp. {{in hai (ngầm) 0s. 4{in 4\chấm dứt chương trình.

2005: Đường sắt

Năm 2005 là một lựa chọn khó khăn. Không có năm nào khác tôi tìm thấy nhiều ngôn ngữ 2D, và có ADJUST và Archway, cả hai đều bắt đầu ở góc dưới bên trái (điều này sẽ giúp chúng trở thành những bổ sung dễ dàng). Tôi thích Rail mặc dù và vì nó có một điểm vào rõ ràng nên cũng không khó để thêm vào. Rail tìm kiếm một tuyến bắt đầu với $'main'và bắt đầu di chuyển về phía đông nam từ $. Điều đó có nghĩa là mã liên quan là:

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

Các \-chỉ là theo dõi (no-ops). Đây [2005]là một chuỗi ký tự oin trước khi #kết thúc chương trình.

2006: BestFriends.js

Một Brainfuck hai chiều. Có một ngôn ngữ thú vị khác trong năm nay là Black, bắt đầu ở tọa độ (3,3)(dựa trên 1), điều này cũng sẽ khiến việc sử dụng ngôn ngữ này trở nên thú vị. Tôi không thể tìm thấy một thông dịch viên mặc dù. Vì vậy, chúng tôi sẽ phải làm việc với một công cụ phái sinh BF khác thay thế ...

Điều thú vị ở cái này là nó không định dạng lưới thành các dòng có nguồn cấp giống như hầu hết các ngôn ngữ 2D khác. Thay vào đó |được sử dụng như là dấu phân cách dòng. Vì tôi không sử dụng |cho bất kỳ ngôn ngữ nào khác, tôi chỉ có thể đặt một |dòng cuối cùng làm cho toàn bộ phần còn lại của chương trình thành một dòng duy nhất theo như BF.js. Mã liên quan sau đó là mã này (biến |thành một nguồn cấp dữ liệu thực tế):

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

BF.js không sử dụng <v>^gương cũng không. Cách duy nhất để chuyển hướng luồng điều khiển là {}xoay hướng 90 độ. Vì vậy, những dấu ngoặc nhọn di chuyển IP đến dòng thứ hai. Phần còn lại là một giải pháp Brainfuck đơn giản (không được chơi golf đặc biệt) đặt một ô thành 50(điểm mã 2) và sau đó in 2006bằng cách thay đổi giá trị xung quanh một chút. @chấm dứt chương trình.

2008: BrainSpace 1.0

Trong năm nay tôi thực sự muốn sử dụng DOBELA trong đó sử dụng nhiều điểm nhập cảnh và trông giống như lovechild của FissionZiim . Thật không may, tôi đã không thể làm cho thông dịch viên làm việc. Vì vậy, đây là một dẫn xuất BF khác (cái cuối cùng, tôi hứa).

Trái ngược với cái cuối cùng, cái này biết cả hai <v>^ và gương, vì vậy mã liên quan là:

v
\'\
  8

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

Cái này không có []vòng lặp kiểu BF thông thường (thay vào đó bạn cần tạo một vòng 2D thực tế), vì vậy tôi chỉ quyết định mã hóa 50từ khi tôi có hàng tấn ký tự từ Wierd. Lưu ý rằng '8được bỏ qua, *là một tấm bạt lò xo có điều kiện mà chúng ta có thể bỏ qua và Olà của Brainfuck .. Việc Xchấm dứt chương trình.

2009: > <>

Có lẽ là Fungeoid phổ biến nhất (không phải là Befunge) ít nhất là xung quanh những phần này. > <> có cả hai <v>^và gương nhưng cũng có chuỗi ký tự, vì vậy mã được thực thi là:

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

Chuỗi ký tự chủ yếu phục vụ để bỏ qua \chúng tôi đã sử dụng cho BrainSpace 1.0, nhưng trong khi chúng tôi ở đó, chúng tôi cũng có thể đẩy hai ký tự đầu tiên. ooin chúng. Sau đó 100đẩy ba chữ số, @đẩy phần trên xuống dưới và nin phần 0bên dưới. Chúng tôi làm điều tương tự một lần nữa với 590in 9. Nếu bạn đang tự hỏi tại sao tôi không chỉ in 2009như vậy, hãy đợi năm 2015. ;chấm dứt chương trình.

2010: Hồng y

Điều này là đơn giản, bởi vì nó có một điểm nhập cảnh rõ ràng tại %. Tuy nhiên, cái này tạo ra 4 IP theo mọi hướng (do đó, tên ngôn ngữ, tôi cho là vậy) và chúng ta cần loại bỏ 3 trong số chúng. Đây là mã có liên quan:

 x
x%"2010"x
 x

À vâng. (Trong Cardinal, chế độ chuỗi in trực tiếp thay vì đẩy các ký tự lên ngăn xếp.)

2011: Chạy

Một ngôn ngữ khác có điểm vào rõ ràng (của David Catt , người đã tạo ra một vài esolang rất hay khác), lần này là tại S. Điều này làm cho mã có liên quan phần này:

S1^2^2^6^8MAOUOAOOF

RunR là một chút thú vị bởi vì hầu hết các hoạt động làm việc với một loại đăng ký và các giá trị cần phải được chuyển đến ngăn xếp rõ ràng cho các hoạt động nhị phân. Các chữ số đặt giá trị thanh ghi cho chính chúng và ^đẩy thanh ghi hiện tại vào ngăn xếp. Sau đó Mlà phép nhân (giá trị thời gian đăng ký xuất hiện từ ngăn xếp), Ulà phép trừ, Alà phép cộng , Olà đầu ra. Fchấm dứt chương trình.

2012: Bản sao

Giống như Wierd, Ropy cố gắng theo dõi các phần của các nhân vật không phải không gian, nhưng ở đây các khúc cua không xác định được các lệnh. Trên thực tế, hóa ra Ropy giống với Mê cung của tôi hơn ở chỗ hướng được chọn phụ thuộc vào đỉnh của ngăn xếp. Tuy nhiên, chúng tôi không thực sự cần phải lo lắng về điều đó ở đây, bởi vì Ropy chỉ di chuyển dọc theo dòng đầu tiên:

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

Có rất nhiều thứ chúng ta có thể bỏ qua cho đến >. Tất cả những gì chúng ta cần biết là đỉnh của ngăn xếp tại thời điểm đó sẽ là một 4và sẽ có 2bên dưới.

>trùng lặp 4, /là phân chia biến nó thành a 1. Rồi chúng tôi đẩy 02. &&&nối bốn số trên cùng của ngăn xếp theo thứ tự ngược lại, cho 2012. #đầu ra nó. ????chỉ xóa stack vì nếu không thì đỉnh của stack cũng là đầu ra.

Một địa điểm ưa thích là thứ hai 7trong 19977đã được bổ sung vì Ropy. Việc /phân chia trong Ropy thực hiện top / second(ngược lại với thứ tự thông thường trong nhiều ngôn ngữ dựa trên ngăn xếp), nơi 7 / 9sẽ đưa ra 0. Nếu chúng ta có một số 0 trên đỉnh của ngăn xếp, Ropy sẽ thực hiện một số thứ hoang dã với hướng di chuyển của nó, vì vậy chúng ta cần đẩy cái khác 7để đảm bảo rằng đỉnh của ngăn xếp vẫn dương và Ropy tiếp tục di chuyển về phía đông.

2014: Phân hạch

Với các điểm vào rõ ràng của nó, điều này là dễ dàng. RDLUtạo các nguyên tử (con trỏ lệnh) theo hướng tương ứng, vì vậy bit có liên quan chỉ là thế này:

R"2014";

Lưu ý rằng cũng có Umã nguồn, nhưng nguyên tử đó cuối cùng cũng chạm vào một trong số *từ Wierd, nó chấm dứt chương trình (và nguyên tử này mất nhiều thời gian hơn Rnhu cầu in 2014).

2015: Gol> <>

Sp3000 mạnh hơn> <> phái sinh. Nó phần lớn tương thích ngược với> <> vì vậy mã được thực thi vẫn là:

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

Tuy nhiên, hướng xoay của @đã được thay đổi, đó là thủ thuật tiêu chuẩn để phân biệt> <> và Gol> <> trong đa âm, do đó, bản in này 15thay vì in 09. Do đó, sự kỳ lạ trong nửa sau của chương trình.

2016: CSL

CSL khá thú vị ở chỗ các lệnh không được thực thi ngay lập tức. Thay vào đó, mỗi lệnh được đẩy lên ngăn xếp lệnh eEcó thể được sử dụng để thực thi các lệnh từ nó. Mã có liên quan trở thành:

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

Vì vậy, Ethực thi toàn bộ ngăn xếp lệnh, có nghĩa là các công cụ ở phía trước của nó được thực hiện ngược lại. Chúng ta chỉ cần tìm đến *:

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

Các 1s đẩy mình vào ngăn xếp dữ liệu. +-đang giảm / tăng. Pin trên cùng của ngăn xếp. Sau đó *cố gắng nhân hai giá trị trên cùng của ngăn xếp. Tuy nhiên, ngăn xếp trống, vì vậy điều này chấm dứt chương trình.


Tại thời điểm này, chúng tôi có được các ngôn ngữ được phát hành sau khi thử thách này được đăng, vì vậy tôi không thực sự tính chúng cho điểm, đặc biệt là khi tôi tự tạo ra chúng (không phải với thử thách này trong đầu). Tuy nhiên, họ có một số ngữ nghĩa chuyển động IP mới, giúp dễ dàng đưa chúng vào polyglot trong khi cũng thêm một cái gì đó thú vị vào chương trình giới thiệu các ngôn ngữ 2D này.

2017: Alice

Alice được thiết kế để trở thành một Fungeoid giàu tính năng. Một điểm khác biệt thú vị đối với phần lớn (nhưng không phải tất cả) các ngôn ngữ 2D khác là IP có thể di chuyển trực giao hoặc theo đường chéo. Chuyển đổi giữa những điều này cũng thay đổi ngữ nghĩa của hầu hết các lệnh trong ngôn ngữ. Hơn nữa, Alice hỗ trợ cả <^>vsetters hướng và \/gương truyền thống , nhưng gương có hành vi rất độc đáo trong Alice (giúp dễ dàng dẫn Alice IP đến phần mã chưa được sử dụng cho đến nay).

Trong khi hầu hết các ngôn ngữ đối xử \/như thể chúng là gương ở góc 45 ° và IP như một tia sáng bật ra từ nó, Alice coi chúng là góc 67,5 ° (gần với góc của glyphs chém thực tế) và IP cũng di chuyển qua gương (do đó là tên của ngôn ngữ). Do góc này, gương chuyển đổi giữa chuyển động dọc theo hướng trực giao hoặc đường chéo. Hơn nữa, trong khi ở chế độ Thông thường (nghĩa là trong khi IP di chuyển dọc theo các đường chéo), lưới sẽ không quấn quanh và thay vào đó IP bật ra khỏi các cạnh (trong khi ở chế độ Cardinal, nó sẽ quấn quanh).

Nói chung, mã do Alice thực hiện là như sau:

v19
\ \

...

  >      "7102"4&o@

...

IP bắt đầu ở góc trên cùng bên trái như thường lệ, vgửi nó về phía nam. Bây giờ, \IP phản ánh để di chuyển về phía tây bắc, nơi nó ngay lập tức bật ra khỏi cạnh trái của lưới (và di chuyển về phía đông bắc). 1có thể bỏ qua, IP bật ra khỏi cạnh trên để di chuyển về phía đông nam tiếp theo. Chúng tôi đánh một \cái khác phản ánh IP phía bắc. 9cũng có thể được bỏ qua và sau đó IP kết thúc ở dưới cùng của lưới. Sau một vài dòng chúng tôi chuyển hướng nó về phía đông >cho thuận tiện. Sau đó "7102"đẩy các điểm mã của 2017, 4&oin bốn ký tự đó và @chấm dứt chương trình.

2018: Wumpus

Wumpus là ngôn ngữ 2D đầu tiên trên lưới hình tam giác, giúp cho việc di chuyển qua mã khá khác nhau (và một lần nữa cho phép chúng ta dễ dàng tiếp cận một phần của mã không sử dụng). Vì vậy, thay vì nghĩ mỗi nhân vật trong lưới là một hình vuông nhỏ, bạn nên nghĩ về chúng như các hình tam giác hướng lên và xuống xen kẽ. Góc trên bên trái luôn là một hình tam giác hướng lên.

Wumpus không có setters hướng như thế <^>v, nhưng nó có gương \/. Tuy nhiên, do lưới tam giác, chúng hoạt động khác với hầu hết các ngôn ngữ khác. IP bật ra khỏi chúng như một tia sáng (như thường lệ) nhưng bạn nên nghĩ chúng có góc 60 °. Vì vậy, một IP di chuyển về phía đông sẽ kết thúc di chuyển dọc theo trục tây bắc của lưới điện.

Như một sự khác biệt khác với hầu hết các ngôn ngữ khác, các cạnh của lưới không bao bọc, nhưng IP bật ra khỏi các cạnh thay vào đó (như thể các ô cạnh đó chứa các gương thích hợp). Một chi tiết nhỏ thú vị khác là các đường chéo xuyên qua lưới hình tam giác thực sự trông giống như cầu thang trong mã nguồn.

Với ý nghĩ đó, mã được thực thi bởi Wumpus là như sau (nơi tôi đã thay thế khoảng trắng bằng .cho rõ ràng:

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

Chúng v19977chỉ là rác mà chúng ta có thể bỏ qua. /gửi IP về phía tây bắc, nơi nó di chuyển qua 977(từ bên phải) một lần nữa trong khi bật ra khỏi cạnh trên. Sau đó, IP di chuyển về phía tây nam thông qua 2089và một loạt các khoảng trống, trước khi nó chạm vào cạnh trái để được phản xạ về phía đông một lần nữa. *cũng là rác Sau đó cuối cùng #2018đẩy 2018, Oin nó và @chấm dứt chương trình.


Mất tích năm

Cuối cùng, một số ghi chú về năm tôi không được bảo hiểm.

Trong khi nghiên cứu các ngôn ngữ 2D để tìm ra những ngôn ngữ phù hợp trong nhiều năm có thể được sử dụng trong đa âm, tôi phát hiện ra rằng trái với niềm tin phổ biến, Befunge không phải là ngôn ngữ 2D đầu tiên. Tiêu đề đó dường như được giữ bởi Biota đã được tạo ra vào năm 1991. Thật không may, ngôn ngữ không có bất kỳ đầu ra nào, vì vậy tôi không thể sử dụng nó cho thử thách này.

Theo như tôi có thể nói không có ngôn ngữ 2D nào được tạo ra vào năm 1992 và 1995. Điều đó khiến tôi mất vài năm:

  • 1994: Orthagonal được tạo ra, độc lập với Befunge. Các ngôn ngữ thực sự khá giống nhau về mặt ngữ nghĩa, nhưng Orthagonal không thực sự trình bày mã nguồn ở dạng 2D. Thay vào đó mỗi dòng là một (x, y, instruction)tuple. Tôi thậm chí đã có được thông số ngôn ngữ và trình thông dịch gốc từ nhà sáng tạo Jeff Epler, nhưng cuối cùng, thực tế là cú pháp không phải là 2D khiến ngôn ngữ không phù hợp với đa âm này.
  • 1996: Orthogonal , một sự kế thừa của Orthagonal (do người khác tạo ra) đã được tạo ra, nhưng với mục đích của polyglot này gặp phải những vấn đề tương tự như Orthagonal.
  • 1999: Ngôn ngữ duy nhất tôi có thể tìm thấy là máy tự động di động REDGREEN của Chris Pressey . Thật không may, trái ngược với RUBE tiền nhiệm của nó, nó dường như không có bất kỳ ngữ nghĩa I / O nào.
  • 2000: Có một thiết bị tự động di động khác của Chris Pressey được gọi là noit o 'mnain worb nhưng nó cũng không có bất kỳ I / O nào. Ngoài ra còn có Numberix mà tôi chưa thử chạy và tôi không chắc liệu nó có bỏ qua các ký tự không hex trong mã nguồn hay không.
  • 2002: Có Clunk không có I / O và ZT có đặc tả ngôn ngữ làm tôi sợ.
  • 2007: Tôi tìm thấy ba ngôn ngữ ở đây. Zetaplex dựa trên hình ảnh (vì vậy không) và Thắt lưng Băng tải RubE dường như yêu cầu một tiêu đề với định dạng khá nghiêm ngặt sẽ gây rối với dòng đầu tiên của chương trình. Ngoài ra còn có Cellbrain của Quintopia, nhưng dường như cũng cần một tiêu đề cụ thể.
  • 2013: Một lần nữa, tôi tìm thấy ba ngôn ngữ. Câu cá có thể được thực hiện với một lượng tái cấu trúc tốt nhưng nó sẽ yêu cầu chương trình bắt đầu với một bến hợp lệ. Quipu , từ bộ nhớ, quá khắt khe về cú pháp của nó để cho phép nhiều hình đa giác. Và Swordfish là một thành viên khác trong gia đình> <>, nhưng tiếc là tôi không thể tìm được người phiên dịch. Nếu không, cái này có lẽ sẽ khá dễ dàng để thêm.

Nếu bất cứ ai quan tâm, đây là danh sách đầy đủ các ngôn ngữ 2D được triển khai được sắp xếp theo năm theo như tôi có thể tìm thấy chúng (tại thời điểm câu trả lời này được đăng). Nếu có bất kỳ thiếu trong danh sách này, xin vui lòng cho tôi biết trong trò chuyện vì tôi thực sự quan tâm đến một danh sách đầy đủ.


8
Ồ Điều đó thực sự ấn tượng
DJMcMayhem

@MartinEnder Bạn đã cân nhắc việc đưa danh sách các ngôn ngữ lập trình 2D theo năm lên chính Esolang chưa?
doppelgreener

@doppelgreener Tôi không hoàn toàn chắc chắn làm thế nào nó sẽ phù hợp ở đó. Về cơ bản, đây chỉ là giao điểm của danh mục 2D với các danh mục năm khác nhau.
Martin Ender

Tôi sẽ sửa dòng tiêu đề RubE On Conveyor Belts, nếu bạn có một cỗ máy thời gian tôi có thể mượn để dạy tôi 13 tuổi cách đọc một tập tin mà không cần biết trước kích thước. (Đó là lý do duy nhất có dòng tiêu đề; IMO bạn có thể cảm thấy thoải mái khi không tính tiêu đề kích thước là một phần của chương trình, mặc dù nói đúng là như vậy)
user253751

1
@cairdcoinheringaahing Có bạn đi. Và Wumpus cho năm 2018, trong khi tôi đã ở đó.
Martin Ender

117

15 năm, Python

Các phiên bản: 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 và 3.6.0a4 . Phiên bản không được liên kết có thể được tìm thấy trên trang tải xuống .

Ngày phát hành 0.9.1 có thể được tìm thấy ở đây . Thật không may, tôi đã phải bỏ qua một loạt các năm do thiếu các phiên bản cũ và các vấn đề biên dịch trên máy tính của tôi. Các năm đại diện là 1991, 2000-2002 và 2006-2016.

Đã thử nghiệm trên Arch Linux, sử dụng các phiên bản được nén.

# 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. Nó vẫn làm tôi ngạc nhiên khi một số người biết ngôn ngữ của họ. Nó giống như nhìn lại thời gian ...
wizzwizz4

Có python 0 hỗ trợ thử / ngoại trừ ??
OldBunny2800

8
@ OldBunny2800 Thật đáng ngạc nhiên, đúng vậy
Sp3000

54

Ngắn và ngọt; ba APL ( K , J201 , Dyalog 7.1 ) trong 8 byte

1993+1^2

1993 cộng ...

K: 1 số nguyên đầu tiên {0} ngoại trừ {2}, tức là {0}; 1993 - Hãy thử trực tuyến!

J: 1 2 = 1; 1994 - Hãy thử trực tuyến!

APL: LCM (1,2) = 2; 1995 - Hãy thử trực tuyến!


Rất đẹp! Nghĩ rằng bạn có thể kết hợp nhiều ngôn ngữ Iverson?
dặm

@miles Trở nên khó khăn với K và APL2 / APLX / APL * PLUS quá giống nhau.
Adám

@miles Bạn có biết phiên bản J từ năm 2000 không? Nếu vậy, chúng ta có thể làm 2e3+?1với Dyalog 9.0.1.
Adám

Một triển vọng thú vị khác là X^Yđối với một số số X và Y, cũng như ^sức mạnh trong J, nhưng LCM trong APL.
Adám

2
Tôi đã tìm thấy một trang của các tính năng trên phiên bản với số ngày của họ lên đến 2000, jsoftware.com/release/status.htm
dặm

46

10 năm, 12 ngôn ngữ, 2430 byte

Câu trả lời này là sự hợp tác giữa tôi và người dùng 1000000000 .

Một danh sách ngôn ngữ ngắn gọn:

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 

Đây là mã:

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

Để phù hợp với điều này trong một phản hồi, tôi sẽ bỏ toàn bộ các liên kết TIO và thay vào đó chỉ đăng một liên kết đến một trình thông dịch hợp lệ nơi người dùng có thể nhập mã. Đây là một liên kết Pastebin cho mục đích đó.

Thành phố

Các định dạng file PPM , một trong những định dạng hình ảnh mà người phiên dịch Piet chúng tôi sử dụng có thể đọc từ, có một phiên bản ASCII plaintext. Sử dụng điều này, chúng tôi có thể nhúng mã của các ngôn ngữ khác dưới dạng rác trong tệp hình ảnh được đọc bởi Piet và Braincopter.

Hình ảnh trông như thế này:

Hình ảnh thô

Không phải tất cả các hình ảnh đều quan trọng đối với Piet. Đây là một phiên bản với một dòng làm nổi bật con đường mà Piet đi theo thông qua mã:

Con đường

Mặc dù phương pháp hơi phức tạp để tạo ra chương trình, bản thân chương trình này khá đơn giản. Dọc theo đỉnh của hình ảnh, nó đẩy 1 10 10 10 2lên ngăn xếp; dọc theo bên nó nhân ba lần và thêm một lần. Ở góc dưới, nó đưa ra kết quả (2001) và sau đó dừng lại.

Bím tóc

Braincopter là ngôn ngữ hình ảnh khác. Nó cũng dựa trên cùng một ppmtệp hình ảnh để chạy. Do những hạn chế rất khắc nghiệt trong npiet, mã Braincopter của chúng tôi chỉ có thể sử dụng một tập hợp con của các hoạt động Braincopter ban đầu. Chúng tôi bị hạn chế sử dụng màu sắc là ops hợp lệ trong Piet. Điều này loại bỏ -toán tử từ Braincopter.

Đây là đường dẫn được tìm ra bởi mã Braincopter:

Con đường Braincopter

Chương trình Braincopter hơi lạ vì thiếu người -vận hành. Các bức tường của màu lục lam và màu lục lam phục vụ để chuyển hướng con trỏ nhưng khác với nó giống hệt với bộ não sau:

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

Bản in này năm 2005.

Sơn

Paintfuck là ngôn ngữ lập trình trực quan thứ ba trong danh sách của chúng tôi, tuy nhiên thay vì lấy một hình ảnh và xuất văn bản, Paintfuck lấy văn bản và xuất ra một hình ảnh.

Vì Paintfuck bỏ qua các ký tự không liên quan vì không có phần lớn mã không quan trọng. Phần có liên quan của mã là:

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

Trong khi họ không phải là không có wthì cuối mã không làm gì cả. Họ ở đó cho phần cỏ của giải pháp. n, e, s, Và wđược sử dụng để di chuyển xung quanh hình ảnh và *được sử dụng để vẽ một điểm ở vị trí nhất định. Chương trình đầu ra:

Đầu ra của Paintfuck

Phiên bản lớn hơn:

Sản lượng Painfuck, nhưng lớn hơn

Brainfuck

Giống như Paintfuck Brainfuck bỏ qua hầu hết các nhân vật. Một lần nữa đây là những điều quan trọng:

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

Hầu hết điều này là không liên quan bởi hoàn cảnh và tình cờ là nhân vật mà một số ngôn ngữ khác cần thiết. Phiên bản mỏng hơn của mã này là:

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

Điều này khá đơn giản in 1993.

Brainbool

Brainbool rất giống với Brainfuck trong việc lựa chọn nhân vật. Sự khác biệt lớn cho phép hai người được dệt với nhau là thiếu một -Brainbool. Các nhân vật quan trọng cho Brainbool là:

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

Đầu ra của Brainbool và brainfuck là loại trừ lẫn nhau. Brainbool ẩn đầu ra của nó trong tập thứ hai []. Brainfuck gặp phải +++---trước khi nó đạt đến [cài đặt về 0 và khiến nó bỏ qua đầu ra, trong khi Brainbool chỉ thấy +++cài đặt thành 1 khiến nó đi qua vòng lặp. Tương tự Brainbool được đặt thành 0 ở vòng thứ 4 khiến nó bỏ qua trong khi Brainfuck vào vòng lặp với giá trị 49.

Vì Brainbool không có đầu ra thập phân, nó tạo ra năm 2010 ở dạng nhị phân:

11111011010

Phân hạch

Phần duy nhất của mã quan trọng đối với phân hạch là:

R"2014";

Các Rtriệu tập trong một nguyên tử di chuyển sang phải, các "2014"bản in 2014;thực hiện tạm dừng.

Befunge

Befunge chỉ đi qua các ký tự sau:

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

Điều P3cần thiết là tạo một hình ảnh .ppm hợp lệ cho piet và tích lũy đẩy 3 lên ngăn xếp. những vđược đặt để chuyển hướng các con trỏ xuống dưới. Sau đó, nó đi qua 7trong 17được sử dụng để chỉ ra chiều rộng của hình ảnh .ppm. Các >chuyển hướng con trỏ sang phải. 7*nhân số đỉnh của ngăn xếp với 7 để lại 49 (giá trị ASCII của 1) trên đỉnh của ngăn xếp. ::nhân đôi đỉnh của ngăn xếp hai lần. Đầu 1ra là ,. 8 +thêm 8 vào mức tăng hàng đầu cho ASCII 9. :,,đầu ra 9hai lần. 2 +tăng ASCII 1thành ASCII 3,in. Cuối cùng @chấm dứt chương trình.

Tất cả trong tất cả nó in 1993.

Khoảng trắng

Khoảng trắng, như tên có thể gợi ý, chỉ sử dụng khoảng trắng trong các chương trình của nó. Đây là những gì trình thông dịch Whitespace thấy:

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

Hầu hết những gì mã này làm là không quan trọng đối với việc thực hiện chương trình (tất cả các dòng chỉ chứa khoảng trắng chỉ đơn giản là đẩy số 0 vào ngăn xếp). Phần quan trọng:

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

Dòng đầu tiên đẩy 2003 đến ngăn xếp. Sau đó [Tab][LF][Space][Tab]in ra đầu ngăn xếp (2003) dưới dạng số. Cuối cùng, ba dòng cuối cùng kết thúc thực hiện chương trình.

Cỏ

Cỏ bỏ qua tất cả nhân vật cho đến khi người đầu tiên wtrong tập tin và sau đó tất cả các nhân vật mà không phải là w, Whoặc v. Người phiên dịch Grass đọc:

wWWWwWWWWwv
wWWwWWWwv
wWWWwWWWWWwWWWWWWwwwWWWWWWWwWWWWWWwwwWWWWWWWWWWwWWWWWWWWWWwv
wWWWwWWWWwv
wWWwWWWwv
wWWwWWWwv
wWWwWWWwv
wWWwwwwwwwwwwwWWWwWWWWWwWWWWWWWwWWWWWWWWWwWWWWWWWWWWWWWWWwWWWWWWWWWWWWwv

Dòng đầu tiên xác định một hàm thêm hai vào bất cứ thứ gì nó được truyền. Dòng thứ hai định nghĩa một hàm thêm bốn vào bất cứ thứ gì nó được thông qua. Hàm thứ ba định nghĩa một hàm in hai cộng với đối số, in đối số hai lần, sau đó cuối cùng in bảy đối số (Grass in ra các ký tự dựa trên giá trị ASCII). Các dòng thứ tư, thứ năm và thứ sáu xác định các hàm thêm tám, thêm 16, thêm 32 và thêm 64 vào đối số của chúng, tương ứng. Dòng cuối cùng xác định hàm chính lấy ký tự w(số duy nhất được xác định trước trong Grass, ASCII giá trị 119) và thêm 185 cho nó bằng cách sử dụng các hàm thêm được xác định trong chương trình cũng như hàm thêm vào một hàm. Grass kết thúc số ở 256 và do đó kết quả là 48 (tương ứng với ký tự0). Sau đó, hàm này chuyển hàm này sang hàm thứ ba in ra năm 2007.

Đầy sao

Starry bỏ qua tất cả mọi thứ ngoại trừ không gian, +, *, ., ,, `, và '. Do đó, thông dịch viên đầy sao chỉ nhìn thấy:

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

Tuy nhiên, hướng dẫn nhãn và nhảy được sử dụng để bỏ qua các phần của mã có thể gây ra sự cố nếu chạy, do đó, mã này thực sự hiệu quả:

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

Mã này đẩy hai đến ngăn xếp, sao chép nó hai lần và sau đó bật và in một trong số chúng dưới dạng số. Sau đó đẩy số không, sao chép nó và in cả hai số không dưới dạng số. Tiếp theo, nó xuất hiện một trong hai twos và nhảy và sau đó đẩy bảy đến ngăn xếp và bật lên và in là một số. Cuối cùng, nó xuất hiện hai cái cuối cùng trên stack và nhảy đến cuối chương trình.

Python 2.7.2

Mã Python tuân theo định dạng:

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

nơi ...đứng cho tất cả các rác khác.

Dòng đầu tiên, P3v=""là bởi vì để là một .ppmtệp hợp lệ, mã của chúng tôi phải bắt đầu bằng P3lỗi này thường sẽ xảy ra lỗi nhưng nếu chúng tôi nói với python thì đó là một khai báo biến, nó sẽ bỏ qua nó.

Tiếp theo chúng ta phải in 2011. Tuy nhiên do cách .ppmđịnh dạng a, chúng tôi không thể bao gồm bất kỳ số nào trong dòng này. Để giải quyết vấn đề này, chúng tôi tổng hợp tất cả các giá trị ASCII của chuỗi "~~~~~~~~~~~~~~~y"và in kết quả. Cuối cùng, chúng tôi sử dụng ba trích dẫn của một nhận xét nhiều dòng để con trăn bỏ qua mọi thứ khác.

Brainflak

Chúng tôi đã tiết kiệm tốt nhất cho lần cuối.

Brainflak, giống như những người khác, bỏ qua hầu hết các nhân vật. Các nhân vật có liên quan là:

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

Mã python (([()])), đẩy -1 đến ngăn xếp hai lần để nó cần được gỡ bỏ trước khi chương trình bắt đầu xử lý.

Sau đó Brainbool sử dụng một con []nilad không làm gì cả và chương trình bắt đầu.

(((((()()()()){}){}){}){})({({}[<()>()])}{}<[[]]>)đẩy năm 2016. Cuối cùng [<><>]là tàn dư của Befunge và Brainfuck nhưng may mắn không làm gì cả.

Khi chương trình kết thúc, nó in nội dung của ngăn xếp, đó là in 2016.


Xuất sắc! Tôi đã hy vọng Piet sẽ xuất hiện bằng cách nào đó, nhúng mọi thứ vào PPM thật tuyệt vời. Làm tốt!
cincodenada

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

38

5 năm

#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

Nhận xét dòng đơn //đã được thêm vào trong C99, vì vậy trình biên dịch C89 sẽ đọc mã c=-4.5 / /*comment*/ -4.5đó, giống như c=-4.5 / -4.5, trong khi trình biên dịch C99 sẽ đọc như c=-4.5 //comment/**/
- 4.5, tương tự như c=-4.5 - 4.5.
Phần Python là một nhận xét trong chương trình C.

2010: Python 2.72015: Python 3.5

Các tài liệu khác nhau giữa Python 3 và 2, chương trình này sử dụng độ dài của tài liệu để phát hiện phiên bản Python.
Phần C nằm trong một chuỗi trong chương trình Python.

1993 [2] : Brainfuck

Về cơ bản, nó bỏ qua mọi thứ không có .,[]+-<>. Vì chương trình C có ,trong đó, tôi phải tạo Brainfuck để loại bỏ phần đó bằng cách đặt byte hiện tại thành 0.


  1. Thông số kỹ thuật C89 được phát hành vào năm 1990. Thông tin thêm .
  2. Tôi không thể tìm thấy ngày phát hành chính thức, vì vậy tôi sẽ tin EsolangWikipedia .

4
Điều này là tuyệt vời, đặc biệt là -4.5/-4.5-4.5-4.5. Việc trộn hai phiên bản, hai phiên bản của hai ngôn ngữ chính khá ấn tượng, thậm chí không cần ném BF vào đó :-)
ETHproductions

Đây không phải là codegolf, nhưng a=dòng 2 là không cần thiết
TheInitializer

@TheInitializer yeah, tôi đã thử mà không có a=lỗi, vì vậy tôi quyết định giữ nó. Tôi không biết tại sao nó lại báo lỗi, có lẽ là một lỗi đánh máy.
betseg

@betseg nếu mã đó chỉ được thực thi trong Python, nó sẽ hoạt động.
TheInitializer

17

15 năm, JavaScript

Do chu kỳ phát hành của JavaScript rất bất thường và không nhất quán, tôi sẽ sử dụng triển khai Firefox. Xin vui lòng cho tôi biết nếu điều này không được phép.

Các phiên bản: Phoenix 0.1 , Firebird 0.6 , Firefox 1.0.0 , 1.5.0 , 2.0.0 , 3.0 Beta 1 , 3.0.0 , 3.5.0 , 3.6.0 , 4.0.0 , 10.0.0 , 18.0.0 , 27.0 .0 , 35.0.0 , 44.0.0 (tất cả được thử nghiệm trên Windows 7)

Lưu ý quan trọng: Cài đặt và mở Firefox 1.0.0 hoặc bất kỳ phiên bản nào sau này có thể xóa tất cả dữ liệu Firefox đã lưu của bạn , bao gồm cả lịch sử và dấu trang.

Ngoài ra, bắt đầu với 1.0.0, bạn chỉ có thể mở một phiên bản tại một thời điểm; cố gắng mở một phiên bản khác dẫn đến một cửa sổ mới của phiên bản đã mở.

Hướng dẫn

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

Bạn có thể thêm năm thứ 16 bằng cách bao gồm BF: <!--<<<<-[>+<-----]>--.++++++++..------.[-][-->trước tập lệnh và một nhận xét HTML khác chỉ chứa ]sau đó.
Steven H.

6
@StevenH. Ừm ... wow, tôi thậm chí không bao giờ nghĩ về việc bao gồm esolang trong này. Và đó là một cách thực sự thông minh để bao gồm BF :-) Nhưng tôi không chắc là tôi thực sự muốn ...
Sản phẩm ETH

13

6 ngôn ngữ, Turtlèdbrainfuck , Python 3.5, Python 2.7, > <> , Phân hạch

Turtlèd đã không tồn tại trước năm nay và rất dễ khách quan, ngay cả khi github cam kết không được tính và BF có bằng chứng trang esolang, phát hành năm 1993. Python 3.5 là 2015, 2.7 là 2010> <> cũng có trang esolang , nêu 2009, cũng như Phân hạch, 2014

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

Tôi có lẽ nên cung cấp tín dụng cho trang hằng bf trên esolang ... ¯ \ _ (ツ) _ /

Cách thức hoạt động, loại:

Turtlèd:

Turtlèd không thực sự làm bất cứ điều gì cho các dòng khác ngoài dòng đầu tiên:

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

/ là một nop

Brainfuck

Brainfuck bỏ qua ký tự không trong lệnh của nó

nó nhìn thấy -[>+<-----]>--.++++++++..------.(cái cuối cùng là từ phần trăn)

mà chỉ cần thực hiện công cụ Brainfuck, nó sử dụng gói để chia 255 cho 5, sau đó trừ 2 từ kết quả, in, tăng 8 lần, in hai lần, giảm 6 lần, in

Con trăn 2 và 3

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

Độ dài của tài liệu cho len khác nhau giữa các phiên bản, do đó, nó sẽ in năm cho phiên bản 3 nếu đó là độ dài phù hợp, khác với phiên bản 2.

> <>

# phản ánh con trỏ ngược, để nó chạm vào / ở phía bên kia của dòng đó, đi qua khoảng trống giữa else2010sau đó phản xạ lại để nhấn "2009", đẩy 9.0,0,2 lên ngăn xếp, sau đó in ra đảo ngược .

Phân hạch

Phân hạch có sinh sản, vì vậy chúng ta có thể có một dòng ở dưới cùng mà nó thực hiện một mình:

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

13

3 năm, 3 ngôn ngữ: 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   */ 

Đặt tên cho tập tin date.mixal.

  1. C (1990) - Biên dịch với các cảnh báo và in 1990tới stdout.
  2. TeX (1982) - Biên dịch với tex date.mixal ; in 1982ra tập tin O.tex(bỏ qua đầu ra DVI).
  3. MIXAL (1997) - Biên dịch bằng Bộ công cụ phát triển hỗn hợp GNU mixasm date.mixalvà chạy vớimixvm -r date.mix ; in ra 1997thiết bị teletype (= stdout).

Các chương trình TeX và MIXAL trong một nhận xét trong chương trình C; chương trình MIXAL xuất hiện sau \byeđó để TeX bỏ qua nó. Các chương trình C và TeX là một nhận xét trong chương trình MIXAL. Vì một số lý do gccsẵn sàng chấp nhận *main.


Tôi đã quên về MIXAL, +1: D
con mèo

13

3 năm (GolfScript, CJam, MATL), 24 23 byte

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

Đầu ra này

  • 2007 trong GolfScript.

  • 2015 trong CJam (phiên bản 0.6.5).

  • 2016 trong MATL (phiên bản 19.2.0).

Giải trình

Golf

Mã thông báo không xác định là noops trong GolfScript . Các phần duy nhất của mã thực sự làm một cái gì đó là:

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"

Camam

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

TOÁN

Tất cả mọi thứ từ %trở đi là một nhận xét.

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

Sửa chữa: trong CJam sau khi %bạn nhận được [11 10]. Không phải là vấn đề.
aditsu

@aditsu Rất tiếc! Cảm ơn, đã chỉnh sửa
Luis Mendo

12

2 ngôn ngữ, Python 2.7 và Python 3.5

Python 2.7 đã được phát hành vào năm 2010 .

Python 3.5 được phát hành vào năm 2015 .

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

Điều này phụ thuộc vào PEP 238 nơi toán tử /được thay đổi từ phép chia số nguyên trong Python 2 sang phép chia dấu phẩy động trong Python 3.


3
Điều này có thể là một thách thức thú vị nếu nó liên quan đến việc xác định lỗi / thay đổi trong khai thác giữa các phiên bản
dặm

1
@TuukkaX Nó làm việc cho tôi trong cả hai Python 2.7.12 và Python 3.5.1 trên Fedora 24.
dặm

1
Bạn không thể làm '2010'if 3/2>1else'2015'thay thế?
Qwerp-Derp

15
Hoặc chúng tôi toán học:print(int(2010+1/2*10))
Jakube

2
print('2015'if 1/2else'2010')tốt hơn
Cyoce

12

8 năm, 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

"Bất kỳ chương trình nào cũng có thể in ra STDERR, hoặc đưa ra các lỗi và cảnh báo về thời gian chạy / biên dịch miễn là đầu ra chính xác vẫn được in ra STDOUT hoặc một tệp." Hiện tại, màn hình không có lỗi duy nhất là năm, vì vậy chúng tôi đang tuân thủ quy tắc này. Tuy nhiên, nếu bạn muốn ghi vào bộ nhớ thay thế, hãy thay thế Disp (date)bằng (date)->I.

Người giới thiệu:

  1. Ngày phát hành của máy tính - https://epsstore.ti.com/OATube/csksxvm.jsp?nSetId=74258
  2. Ngày phát hành TI-83 + OS 1.15 - http://wikiti.brandonw.net/index.php?title=83Plus:OS:VersionDifferences#TIOS_1.15
  3. Khả năng tương thích máy tính - http://tibasicdev.wikidot.com/comp Tương thích
  4. Ngày phát hành TI-84 + CSE - https://www.amazon.com/Texas-Instrument-Silver-Graphing-Calculator/dp/B00AWRQKDC
  5. Ngày phát hành TI-84 + CE - http://www.prnewswire.com/news-release/texas-instrument-unveils-the-new-ti-84-plus-ce-300026266.htmlhttps: // www. cemetech.net/forum/viewtopic.php?t=8870

9

5 năm, Đi 1.0, 1.1, 1.4, 1.5, 1.6: 285 257 byte

(1.2 được phát hành vào năm 2013 như 1.1, 1.3 vào năm 2014 như 1.4 và 1.7 vào năm 2016 như 1.6.)

Chưa thử nghiệm điều này trên mọi phiên bản vì tôi chỉ có thể truy cập 1.6, nhưng nó chỉ hoạt động trên lý thuyết! Thay đổi ngôn ngữ có thể đã khiến chương trình không biên dịch, vì vậy tôi đã dựa vào các thay đổi thư viện tiêu chuẩn.

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 và bình luận:

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 năm, 99 byte / 77 ký tự

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

Lưu ý: Tôi không chắc năm đó có đúng không

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

Tôi phải mất một thời gian để tìm ra cách làm cho Python và JS hoạt động cùng nhau.

Giải trình

v=1//1;"""đặt biến vthành 1chia cho 1Python và 1trong Javascript ( //bắt đầu nhận xét bằng Javascript) và ;"""bắt đầu chuỗi đa dòng trong Python. Các; không thể được thay thế bằng một dòng mới vì đó sẽ làm cho Javascript ngừng làm việc.

1991/*"""là phần còn lại của chuỗi multiline. Không gian là cần thiết để> <> không đẩy 1lên ngăn xếp. Do sự bắt đầu của chuỗi đa dòng là một phần của một nhận xét trong Javascript, nên nó in1991 và bắt đầu một nhận xét đa dòng.

for i in[0]:print 2010#🔟😃😇🔟😗➕➕😨trong Python, là một vòng lặp for lặp lại danh sách [0]và chạy print 2010. Nhận xét chỉ là mã Emotinomicon (nó bỏ qua mọi thứ không phải là biểu tượng cảm xúc hoặc chuỗi). Trong> <>, nó ( f) đẩy 15 vào ngăn xếp.

Không thể xóa vòng lặp for vì IP của> <> đang đi xuống trong cột 1 và pkhông phải là lệnh hợp lệ trong> <>. Bạn cũng không thể thay thế nó bằng một ifcâu lệnh, bởi vì đó ilà lệnh nhận đầu vào trong> <>.

""" là sự khởi đầu của một chuỗi nhiều dòng.

" là một phần của chuỗi đa dòng, cần thiết để đóng chuỗi chúng tôi đã mở trong> <> (dấu ngoặc kép đầu tiên của dòng trước đó đã bắt đầu một chuỗi trong> <>).

>9002nnnn;trong> <>, thay đổi hướng IP sang phải, đẩy 9, 0, 02, sản lượng này như số và kết thúc chương trình.

"""#*/trong Python, kết thúc chuỗi multiline và bắt đầu nhận xét. Trong Javascript, */làm cho nhận xét đa dòng kết thúc.


Phiên bản thưởng với Gol> <>:

5 ngôn ngữ, 4 năm, 118 114 byte / 96 92 ký tự

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

Giải thích²

IP bắt đầu ở góc trên bên trái, đi bên phải. Làm vcho nó đi xuống.

fđẩy 15.

" bắt đầu chuỗi.

` được sử dụng để thoát các ký tự, thứ mà> <> không có.

" nên đóng chuỗi, nhưng chúng tôi đã sử dụng ` , vì vậy nó sẽ không.

> một phần của chuỗi.

" kết thúc chuỗi.

>5102nnnn;là mã thực tế. >làm cho các IP đi đúng, 5102đẩy 5, 1, 02, và nnnn;in những con số và kết thúc chương trình.


Lỗi Python trên các ký tự unicode mà không có tiêu đề thích hợp. ( 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)
Thuật sĩ lúa mì

@WheatWizard Lưu tệp dưới dạng UTF-8
acrolith

7

7 năm, 8 trình duyệt

Không chính xác ngày phát hành ngôn ngữ vì css không thực sự có bản phát hành, nhưng phiên bản trình duyệt (có thể được coi là phiên bản trình biên dịch?)

Đối với các trình duyệt sau, phần này sẽ in tên trình duyệt, phiên bản và ngày phát hành và không có gì khác. Nó cũng in điều tương tự cho một vài phiên bản sau, (bạn sẽ thấy chromium là một phiên bản trễ trong ảnh chụp màn hình vì khó tải xuống các phiên bản cũ của chrome theo số phiên bản)

Tôi có thể in số phiên bản tôi đã sử dụng nhưng tôi thích hiển thị phiên bản đầu tiên nơi giới thiệu tính năng được sử dụng.

  • IE6
  • IE7
  • IE8
  • IE9 (chưa được kiểm tra, không có IE9 xung quanh)
  • Firefox 4
  • Firefox 3.6
  • Chrome 18
  • Chrome 21
  • Trình duyệt hiện đại

FF3.6 FF4 Chromium19 Chromium22 IE8-quirks Tương thích 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;
}

bộ lọc.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 thực sự có bản phát hành. Có 1.0, 2.0, 2.1, 3.0 và 4.0. Câu hỏi thậm chí được cho là sử dụng Wikipedia hoặc trang web của ngôn ngữ làm bằng chứng về ngày phát hành, vì vậy bạn nên kiểm tra. Ngày phát hành ban đầu: 17 tháng 12 năm 1996
mbomb007

Điều đó không có nghĩa là không có triển khai bất kỳ cấp độ nào trong số đó (chúng thậm chí không được gọi là bản phát hành, vì chúng không phải, bạn nên kiểm tra liên kết bạn đã đăng). Và CSS3 và 4 thậm chí không có ngày phát hành vì chúng đang được tạo một cách nhanh chóng và quay lại giữa các bản nháp, ứng cử viên và đề xuất. Ngoài ra, không có trình duyệt nào thực hiện một mức cụ thể 100% và 0% của cấp độ tiếp theo, vì vậy ngày tốt nhất bạn có thể đến là ngày phát hành của trình duyệt.
qwazix

Sau đó, ngôn ngữ bạn đã chọn không đáp ứng các thông số kỹ thuật cần thiết cho thử thách này. Không phải theo cách bạn đang cố gắng để làm điều đó. Một ngôn ngữ được xác định bởi việc triển khai nó, vì vậy bạn phải chọn một trình duyệt và gắn bó với nó, sử dụng các phiên bản trình duyệt khác nhau , không phải các trình duyệt khác nhau. Tôi vẫn sẽ hỏi OP, mặc dù.
mbomb007

OP không nói các phiên bản khác nhau được tính là các ngôn ngữ khác nhau, họ chỉ nói sẽ in ra năm phát hành của phiên bản ngôn ngữ được sử dụng cho các ngôn ngữ khác nhau . Tuy nhiên ~ một nửa câu trả lời dựa trên giả định rằng các phiên bản khác nhau đủ khác nhau để được tính là ngôn ngữ. Nếu python 2.5.0 và 2.5.1 được coi là đủ khác nhau, tôi không thể hiểu IE và Chrome không như thế nào.
qwazix

6

3 năm, 89 byte

Python 2, JavaScript (ES6) và Perl

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

Cái đầu tiên evalsẽ chạy 1trên Python 2 và print=_=>console.log(1995)trên JavaScript và Perl bằng tính năng phân chia số nguyên của Python 2. Điều này tạo ra một printhàm trong JavaScript và Perl chỉ âm thầm quan tâm đến các lỗi cú pháp và tiếp tục bất chấp.

Cái thứ hai evaldựa vào Perl nội suy biến $$(PID hiện tại) thành chuỗi, điều này sẽ đúng khi so sánh (sử dụng >toán tử) với "0"(Python yêu cầu một chuỗi trong so sánh đó trong khi Perl hoàn toàn chuyển đổi thành số nguyên).

Tôi có thể bấm còi bằng nhiều ngôn ngữ hơn, nhưng muốn có một giải pháp không lạm dụng các bình luận và chỉ hoạt động với các ngôn ngữ 'thông thường'.

Tôi đã sử dụng trang Wikipedia này để lấy năm để sử dụng.


2

3 ngôn ngữ, 3 năm

Một câu trả lời đặc biệt cho vui.

2002!~+++++++[<+++++++>-]<[.++++++++..------.[-]] 2016 !.
  • Chuột-2002 : mọi thứ sau đó~là một bình luận, và phần đầu tiên, cũng có thể được viếtC0U!!!, in2002.

  • cam kết trước thử thách này của Calc : là trình thông dịch máy tính dựa trên ngăn xếp mà tôi vừa thiết kế trong C11 cho Lập trình II, một phần của chương trình trước khi không gian đầu tiên in lỗi (được cho phép theo thông số thử thách) và2016 !.in2016.

  • Brainfuck : in năm 1993 như đã thấy trong các câu trả lời khác. Các ngoại lai cuối cùng .được bỏ qua bởi beef.

Lưu ý rằng hiển thị của ngăn xếp hiện tại của Calc < stackvới mỗi dòng đầu vào không trống là một phần của dấu nhắc >, không phải là một phần của đầu ra.


Tôi có thể tìm hiểu về Chuột-2002 ở đâu? Các github dường như không có bất kỳ loại thông số kỹ thuật.
Thuật sĩ lúa mì

@WheatWizard README của kho chứa các liên kết đến MUSYS gốc của Tiến sĩ Grogonokhởi động lại năm 2002 của David Simpson , cùng nhau vẽ một bức tranh OK.
con mèo

2

Microsoft Excel / Google Sheets, 22 byte

Chức năng Bảng tính ẩn danh không có đầu vào và đầu ra 1987trong Microsoft Excel và 2006trong Google Sheets

=IfError(M(2006),1987)

0

Perl 5 & Perl 6 (2 năm)

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

Lần phát hành đầu tiên của Perl 5 là vào năm 1994

Bản phát hành chính thức đầu tiên của Perl 6 là vào năm 2015

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.