10 лет, 12 языков, 2430 байт

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 для этой цели.

болтушка

Формат файла PPM , один из форматов изображений, из которого мы можем прочитать интерпретатор Piet, имеет текстовую версию ASCII. Используя это, мы смогли встроить код других языков в качестве мусора в файл изображения, прочитанный Пайтом и Брейнкоптером.

Изображение выглядит так:

Сырое изображение

Не все изображения важны для Пита. Вот версия со строкой, обозначающей путь, по которому Piet следует через код:

Пиет путь

Несмотря на несколько запутанные способы создания программы, сама программа довольно проста. Вдоль верхней части изображения он помещается 1 10 10 10 2в стек; вдоль стороны это умножается трижды и добавляет один раз. В нижнем углу выводится результат (2001), а затем останавливается.

Braincopter

Braincopter - другой визуальный язык. Он также опирается на тот же ppmфайл изображения для запуска. Из-за очень жестких ограничений в npiet наш код Braincopter может использовать только подмножество исходных операций Braincopter. Мы ограничены в использовании цветов, которые действительны в Пит. Это удаляет -оператора из Braincopter.

Вот путь, прослеженный кодом Braincopter:

Braincopter путь

Программа Braincopter немного странная из-за отсутствия -оператора. Стены голубого и темного голубого служат для перенаправления указателя, но в остальном он идентичен следующему бреду:

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

Это печатает 2005.

Paintfuck

Paintfuck является третьим языком визуального программирования в нашем списке, однако вместо того, чтобы брать изображение и выводить текст, Paintfuck принимает текст и выводит изображение.

Так как Paintfuck игнорирует нерелевантные символы, поскольку no-ops большая часть кода не имеет значения. Соответствующий раздел кода:

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

Пока они не запрещены, wв конце кода ничего не делается. Они там для части травы решения. n, e, s, И wиспользуются для перемещения изображения и *используются для построения точки в определенном месте. Программа выводит:

Пейнтбук выход

Большая версия:

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используется для указания ширины .ppm изображения. >Перенаправляет указатель вправо. 7*умножает вершину стека на 7, оставляя 49 (значение ASCII 1) на вершине стека. ::дублирует вершину стека дважды. 1Выводится ,. 8 +добавляет 8 к верхнему приращению к ASCII 9. :,,выводит 9дважды. 2 +увеличивает ASCII 1до ASCII 3и ,печатает. Наконец @завершает программу.

В целом это печатает 1993.

Пробелы

Пробелы, как следует из названия, используют только пробелы в своих программах. Вот что видит интерпретатор пробелов:

[Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][Space][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) в виде числа. Наконец, последние три перевода строки завершают выполнение программы.

трава

Трава игнорирует весь символ , пока первый wв файл и после этого всех символов, которые не являются w, Wили v. Травяной переводчик читает:

wWWWwWWWWwv
wWWwWWWwv
wWWWwWWWWWwWWWWWWwwwWWWWWWWwWWWWWWwwwWWWWWWWWWWwWWWWWWWWWWwv
wWWWwWWWWwv
wWWwWWWwv
wWWwWWWwv
wWWwWWWwv
wWWwwwwwwwwwwwWWWwWWWWWwWWWWWWWwWWWWWWWWWwWWWWWWWWWWWWWWWwWWWWWWWWWWWWwv

Первая строка определяет функцию, которая добавляет два к тому, что ей передают. Вторая строка определяет функцию, которая добавляет четыре к тому, что ей передают. Третий определяет функцию, которая печатает два плюс аргумент, печатает аргумент дважды, а затем, наконец, печатает семь плюс аргумент (Grass выводит символы на основе значения ASCII). Четвертая, пятая и шестая строки определяют функции, которые добавляют восемь, добавляют 16, добавляют 32 и добавляют 64 к их аргументу соответственно. Последняя строка определяет основную функцию, которая принимает символ w(единственное предопределенное число в Grass, значение ASCII 119) и добавляет к нему 185, используя функции add, определенные в программе, а также встроенную функцию add one. Трава переносит числа в 256, и поэтому результат равен 48 (соответствует символу0). Затем функция передает это в функцию третьей строки, которая печатает 2007.

звездный

Звездные игнорирует все , за исключением пространства, +, *, ., ,, `, и '. При этом звездный переводчик видит только:

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

Тем не менее, инструкции label и jump используются для пропуска разделов кода, которые могут вызвать проблемы при запуске, поэтому код фактически таков:

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

Этот код помещает два в стек, дублирует его дважды, а затем выскакивает и печатает один из них как число. Затем толкает ноль, дублирует его и печатает оба ноля в виде чисел. Затем он выталкивает одну из двойок и прыгает, а затем толкает семь к стеку и выталкивает и печатает как число. Наконец, он помещает последние два в стек и переходит в конец программы.

Python 2.7.2

Код Python соответствует формату:

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

где ...стоит за всем другим хламом.

Первая строка P3v=""указана потому, что для того, чтобы быть допустимым .ppmфайлом, наш код должен начинаться с P3этого, что обычно приводит к ошибке, но если мы сообщим python, что это объявление переменной, он проигнорирует его.

Далее мы должны распечатать 2011. Однако из-за способа .ppmформатирования а мы не можем включать в эту строку какие-либо числа. Чтобы обойти это, мы суммируем все значения ASCII строки "~~~~~~~~~~~~~~~y"и напечатаем результат. Наконец, мы используем тройные кавычки многострочного комментария, чтобы python игнорировал все остальное.

Brainflak

Мы сохранили лучшее для последнего.

Brainflak, как и другие, игнорирует большинство персонажей. Соответствующие символы:

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

Код Python, (([()]))дважды помещает -1 в стек, поэтому его необходимо удалить до начала обработки программы.

После этого Brainbool использует []nilad, который ничего не делает, и программа начинается.

(((((()()()()){}){}){}){})({({}[<()>()])}{}<[[]]>)толкает 2016 год. Последнее [<><>]- это остатки Befunge и Brainfuck, но, к счастью, ничего не делает.

Когда программа завершает работу, она печатает содержимое стека, то есть печатает 2016.

Мастер пшеницы
источник
Brilliant! Я надеялся, что Пит появится как-то, встраивать вещи в PPM - это замечательно. Отлично сработано!
Синкоденада
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, что так же, как c=-4.5 - 4.5.
Часть Python - это комментарий в программе на Си.

2010: Python 2.7 и 2015: Python 3.5

Документы различаются между Python 3 и 2, эта программа использует длину документов для определения версии Python.
Часть C находится в строке в программе Python.

1993 [2] : Brainfuck

Это в основном игнорирует все, что нет .,[]+-<>. Так как в программе на С есть ,, я должен был заставить Brainfuck отклонить эту часть, установив текущий байт в 0.


  1. Спецификация C89 была выпущена в 1990 году. Подробнее .
  2. Я не смог найти официальную дату релиза, поэтому я буду верить Esolangs и Wikipedia .
betseg
источник
4
Это здорово, особенно -4.5/-4.5и -4.5-4.5. Создание двух версий каждого из двух основных языков довольно впечатляюще, даже без
добавления
Это не Codegolf, но в a=строке 2 нет необходимости
TheInitializer
@TheInitializer да, я попробовал без, a=и это дало ошибку, поэтому я решил оставить ее. Я не знаю, почему это дало ошибку, хотя, вероятно, опечатка.
Betseg
@betseg, если этот код выполняется только на Python, он должен работать.
TheInitializer
17

15 лет, JavaScript

Поскольку цикл выпуска 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>
ETHproductions
источник
Вы можете добавить 16-й год, включив BF: <!--<<<<-[>+<-----]>--.++++++++..------.[-][-->перед сценарием и другой HTML-комментарий, содержащий только ]последующие.
Стивен Х.
6
@StevenH. Хм ... вау, я даже не думал о включении в это эсолангов. И это действительно умный способ включить BF :-) Но я не уверен, что действительно хочу ...
ETHproductions
13

6 языков, Turtlèd и brainfuck , Python 3.5, Python 2.7, > <> , Fission

Turtlèd не существовал до этого года, и поэтому он легко объективен, даже если коммиты github не учитываются, и у BF есть свидетельство на странице esolang, выпущенное в 1993 году. Python 3.5 - 2015, 2.7 - 2010.> <> также имеет страницу esolang , заявив 2009, как и деление, 2014

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

Я, вероятно, должен отдать должное странице констант bf на esolangs ... ¯ \ _ (ツ) _ / ¯

Как это работает, вроде:

Turtlèd:

Turtlèd ничего не делает для строк, отличных от первого:

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

/ нет

Brainfuck

Brainfuck игнорирует символы не в своих командах

он видит -[>+<-----]>--.++++++++..------.(последний. из части Python)

который просто делает 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 в стек, затем распечатывая в обратном порядке ,

расщепление

У деления есть порождающие, поэтому у нас может быть строка внизу, которую он выполняет в одиночку:

#;"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) - Компилирует с предупреждениями и печатает 1990в stdout.
  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.

musarithmia
источник
Я забыл про MIXAL, +1: D
кот
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 Ой! Спасибо, отредактировано
Луис Мендо
12

2 языка, Python 2.7 и Python 3.5

Python 2.7 был выпущен в 2010 году .

Python 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))
Якуб
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
Timtech
источник
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)}

Развернулся и прокомментировал:

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

Мне понадобилось некоторое время, чтобы понять, как заставить Python и JS работать вместе.

объяснение

v=1//1;"""устанавливает переменную vдля 1деления на 1в Python и 1в Javascript ( //начинает комментарий в Javascript) и ;"""запускает многострочную строку в Python. ;Не может быть заменена новой строки , потому что будет делать Javascript перестанет работать.

1991/*"""остальная часть многострочной строки. Пространство необходимо, чтобы> <> не помещалось 1в стек. Поскольку начало многострочной строки было частью комментария в Javascript, она печатает 1991и запускает многострочный комментарий.

for i in[0]:print 2010#🔟😃😇🔟😗➕➕😨в Python - это цикл for, который повторяет список [0]и запускается print 2010. Комментарий - это просто код Emotinomicon (он игнорирует все, что не является смайликом или строкой). В> <> он ( f) помещается 15 в стек.

Цикл 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заставляет это идти вниз.

fвыталкивает 15.

" начинается строка

` используется для экранирования символов, то, что> <> не имеет.

"следует закрыть строку, но мы использовали `, так что не будет.

> часть строки.

" заканчивает строку

>5102nnnn;это фактический код. >делает IP идти прямо, 5102толкает 5, 1, 0и 2, и nnnn;печатает число и заканчивает программу.

акролит
источник
Ошибки Python для символов Unicode без правильного заголовка. ( 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)
Пшеничный волшебник
@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>
qwazix
источник
2
У CSS действительно есть выпуски. Существует 1,0, 2,0, 2,1, 3,0 и 4,0. В вопросе даже сказано использовать Википедию или языковой сайт в качестве доказательства даты выпуска, так что вам следовало проверить. Дата
первого
Это не означает, что ни один из этих уровней не реализован (они даже не называются релизами, потому что это не так, вы должны были проверить ссылку, которую вы разместили). А CSS3 и 4 даже не имеют даты выпуска, потому что они создаются на лету, и переходят от одного проекта к другому к другим. Кроме того, ни один браузер не реализует определенный уровень 100% и 0% следующего уровня, поэтому наилучшей датой, которую вы можете придумать, является дата выпуска браузера.
qwazix
Тогда выбранный вами язык не соответствует требуемым спецификациям для этой задачи. Не так, как вы пытаетесь это сделать. Язык определяется его реализацией, поэтому вы должны выбрать браузер и придерживаться его, используя разные версии браузера , а не разные браузеры. Я все еще спрашиваю ОП, хотя.
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 неявно преобразуется в целое число).

Я мог бы носить обувь на большем количестве языков, но хотел иметь решение, которое не злоупотребляло бы комментариями и работало только на «обычных» языках.

Я использовал эту страницу Википедии, чтобы найти годы, чтобы использовать.

Дом Гастингс
источник
2

3 языка, 3 года

Специальный ответ для развлечения.

2002!~+++++++[<+++++++>-]<[.++++++++..------.[-]] 2016 !.
  • Мышь-2002 : все, что после~- это комментарий, и первая часть, которую тоже можно написатьC0U!!!, печатает2002.

  • это предварительная фиксация Calc : интерпретатор калькулятора на основе стека, который я только что разработал в C11 для Programming II, часть программы перед первым пробелом печатает ошибку (разрешено согласно спецификации вызова) и2016 !.печатает2016.

  • Brainfuck : печатает 1993, как видно из других ответов. Финал посторонний .игнорируется beef.

Обратите внимание, что отображение Calc текущего стека < stackс каждой непустой строкой ввода является частью приглашения >, а не частью вывода.

кошка
источник
Где я могу узнать о Mouse-2002? Github, похоже, не имеет каких-либо спецификаций.
Пшеничный волшебник
@WheatWizard README из репозитория содержит ссылки на оригинальный MUSYS доктора Грогоно и на перезагрузку Дэвида Симпсона в 2002 году , которые вместе рисуют нормальное изображение.
кот
2

Microsoft Excel / Google Sheets, 22 байта

Функция анонимного рабочего листа, которая не требует ввода и вывода 1987в Microsoft Excel и 2006Google Sheets

=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 году

bb94
источник