10 lat, 12 języków, 2430 bajtów

46

10 lat, 12 języków, 2430 bajtów

Ta odpowiedź to współpraca między mną a użytkownikiem 1000000000 .

Krótka lista języków:

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 

Oto kod:

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

Aby dopasować to do odpowiedzi, zrezygnuję z całych linków TIO i raczej po prostu opublikuję link do ważnego interpretera, w którym użytkownik może wprowadzić kod. Oto link do tego Pastebin .

Piet

Format pliku PPM , jeden z formatów graficznych, które interpreter Piet używaliśmy może odczytywać, posiada wersję zwykłego tekstu ASCII. Dzięki temu mogliśmy osadzić kod innych języków jako śmieci w pliku obrazu odczytanym przez Piet i Braincopter.

Obraz wygląda następująco:

Surowy obraz

Nie wszystkie zdjęcia są ważne dla Piet. Oto wersja z linią podkreślającą ścieżkę, którą Piet podąża za kodem:

Ścieżka pieta

Pomimo nieco skomplikowanych metod tworzenia programu sam program jest dość prosty. Wzdłuż górnej krawędzi obrazu przesuwa 1 10 10 10 2się na stos; wzdłuż boku mnoży się trzykrotnie i dodaje raz. W dolnym rogu wyświetla wynik (2001), a następnie zatrzymuje się.

Braincopter

Braincopter to drugi język wizualny. Do ppmuruchomienia działa również ten sam plik obrazu. Ze względu na bardzo surowe ograniczenia np. Nasz kod Braincopter może używać tylko podzbioru oryginalnych operacji Braincopter. Jesteśmy ograniczeni do używania kolorów, które są ważne w Piet. To usuwa -operatora z Braincopter.

Oto ścieżka wyznaczona przez kod Braincoptera:

Ścieżka Braincoptera

Program Braincopter jest nieco dziwny z powodu braku -operatora. Ściany niebieskozielonego i ciemnobłękitnego służą do przekierowania wskaźnika, ale poza tym są identyczne z następującym pieprzeniem mózgu:

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

To drukuje 2005.

Paintfuck

Paintfuck jest trzecim wizualnym językiem programowania na naszej liście, jednak zamiast pobierania obrazu i wysyłania tekstu, Paintfuck pobiera tekst i wysyła obraz.

Ponieważ Paintfuck ignoruje nieistotne znaki, ponieważ brak operacji, większość kodu jest nieistotna. Odpowiednia sekcja kodu to:

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

Chociaż nie są to żadne operacje, ws na końcu kodu nic nie robią. Są tam po trawiastą część roztworu. n, e, s, I wsłużą do poruszania się po obrazie i *służy do wykreślić punkt w określonym miejscu. Program generuje:

Wyjście Paintfuck

Większa wersja:

Wydajność Painfuck, ale jest większa

Brainfuck

Podobnie jak Paintfuck Brainfuck ignoruje większość postaci. Jeszcze raz najważniejsze są:

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

Większość z nich jest dodatkowo nieistotna z uwagi na okoliczności i po prostu są to znaki, których potrzebuje inny język. Węższa wersja tego kodu to:

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

To po prostu drukuje 1993.

Brainbool

Brainbool jest bardzo podobny do Brainfuck w doborze postaci. Dużą różnicą, która pozwala na połączenie tych dwóch elementów, jest brak -Brainbool. Ważnymi postaciami dla Brainbool są:

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

Wyniki Brainbool i brainfuck wykluczają się wzajemnie. Brainbool ukrywa swoje wyjście w drugim zestawie []. Brainfuck napotyka, +++---zanim osiągnie wartość [zerową i powoduje pominięcie wyjścia, podczas gdy Brainbool widzi +++ustawienie tylko na 1, powodując przejście przez pętlę. Podobnie Brainbool jest ustawiony na zero w czwartej pętli, co powoduje przeskakiwanie, gdy Brainfuck wchodzi do pętli o wartości 49.

Ponieważ Brainbool nie ma wyjścia dziesiętnego, wypisuje 2010 w postaci binarnej:

11111011010

Rozszczepienie

Jedyną częścią kodu, która jest ważna dla rozszczepienia, jest:

R"2014";

Na Rwezwanie w atomie porusza się w prawo, z "2014"nadrukami 2014i ;wstrzymuje wykonania.

Befunge

Befunge przechodzi tylko przez następujące postacie:

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

P3one niezbędne do utworzenia prawidłowego obrazu .ppm dla polecenia piet i kumulacyjnego wypychania 3 na stos. vumieszcza przekierować wskaźnik w dół. Następnie przechodzi przez 7w 17użyte w celu wskazania szerokości obrazu .ppm. >Przekierowuje kursor w prawo. 7*mnoży górę stosu przez 7, pozostawiając 49 (wartość ASCII z 1) na szczycie stosu. ::dwukrotnie duplikuje górę stosu. Dane 1wyjściowe są generowane przez ,. 8 +dodaje 8 do górnego przyrostu do ASCII 9. :,,wysyła 9dwa razy. 2 +inkrementuje ASCII 1do ASCII 3i ,drukuje. Wreszcie @kończy program.

W sumie drukuje 1993.

Biała przestrzeń

Biała spacja, jak może sugerować nazwa, używa tylko białych znaków w swoich programach. Oto, co widzi tłumacz WhiteSpace:

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

Większość tego, co robi ten kod, nie ma znaczenia dla wykonania programu (wszystkie wiersze zawierające tylko spacje po prostu wypychają zero na stos). Ważna część:

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

Pierwsza linia wypycha 2003 na stos. Następnie [Tab][LF][Space][Tab]drukuje górną część stosu (2003) jako liczbę. Na koniec trzy ostatnie przejścia liniowe kończą wykonywanie programu.

Trawa

Trawa ignoruje wszystko aż pierwszy znak ww pliku i po, że wszystkie znaki, które nie są w, Wlub v. Tłumacz Grassa brzmi:

wWWWwWWWWwv
wWWwWWWwv
wWWWwWWWWWwWWWWWWwwwWWWWWWWwWWWWWWwwwWWWWWWWWWWwWWWWWWWWWWwv
wWWWwWWWWwv
wWWwWWWwv
wWWwWWWwv
wWWwWWWwv
wWWwwwwwwwwwwwWWWwWWWWWwWWWWWWWwWWWWWWWWWwWWWWWWWWWWWWWWWwWWWWWWWWWWWWwv

Pierwszy wiersz definiuje funkcję, która dodaje dwa do wszystkiego, co jest przekazywane. Druga linia definiuje funkcję, która dodaje cztery do tego, co jest przekazywane. Trzeci definiuje funkcję, która wypisuje dwa plus argument, dwa razy argument, następnie wreszcie siedem plus argument (Grass wypisuje znaki na podstawie wartości ASCII). Czwarta, piąta i szósta linia definiują funkcje, które odpowiednio dodają osiem, 16, 32 i 64. Ostatni wiersz definiuje główną funkcję, która przyjmuje znak w(jedyna predefiniowana liczba w Grass, wartość ASCII 119) i dodaje do niej 185 za pomocą funkcji add zdefiniowanych w programie, a także wbudowanej funkcji add one. Trawa zawija liczby na 256, więc wynik to 48 (odpowiadający znakowi0). Następnie funkcja przekazuje to do funkcji trzeciego wiersza, który wypisuje 2007.

Gwiaździsty

Gwiaździste ignoruje wszystko, z wyjątkiem miejsca, +, *, ., ,, `, i '. Tak więc gwiaździsty tłumacz widzi tylko:

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

Jednak etykiety i instrukcje skoku są używane do pomijania części kodu, które mogą powodować problemy, jeśli zostaną uruchomione, więc kod działa w następujący sposób:

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

Ten kod wypycha dwa na stos, duplikuje go dwukrotnie, a następnie wyskakuje i drukuje jeden z nich jako liczbę. Następnie wypycha zero, powiela je i drukuje oba zera jako liczby. Następnie wyskakuje jedno z nich i skacze, a następnie przesuwa siódemkę na stos, a wyskakuje i drukuje jako liczbę. W końcu wyskakuje dwa ostatnie na stosie i przeskakuje na koniec programu.

Python 2.7.2

Kod Python ma następujący format:

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

gdzie ...oznacza wszystkie inne śmieci.

Pierwszy wiersz P3v=""jest tam, ponieważ aby być poprawnym .ppmplikiem, nasz kod musi zaczynać się od P3tego, zwykle będzie to błąd, ale jeśli powiemy Pythonowi, że jest to deklaracja zmiennej, zignoruje go.

Następnie musimy wydrukować 2011. Jednak ze względu na sposób .ppmformatowania nie możemy w tym wierszu zawierać żadnych liczb. Aby obejść ten problem, sumujemy wszystkie wartości ASCII łańcucha "~~~~~~~~~~~~~~~y"i wypisujemy wynik. Wreszcie używamy potrójnych cytatów komentarza wielowierszowego, aby python ignorował wszystko inne.

Brainflak

Najlepsze zostawiliśmy na koniec.

Brainflak, podobnie jak inne, ignoruje większość postaci. Odpowiednie postacie to:

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

Kod python (([()])), wypycha -1 do stosu dwukrotnie, więc należy go usunąć, zanim program zacznie przetwarzać.

Następnie Brainbool używa []nilada, który nic nie robi i program się rozpoczyna.

(((((()()()()){}){}){}){})({({}[<()>()])}{}<[[]]>)popycha 2016. Ostatni [<><>]to resztki Befunge i Brainfuck, ale na szczęście nic nie robi.

Po zakończeniu programu drukuje zawartość stosu, czyli drukuje 2016.

Sriotchilism O'Zaic
źródło
Znakomity! Miałem nadzieję, że Piet jakoś się pojawi, osadzanie rzeczy w PPM jest genialne. Dobra robota!
cincodenada
1
+1 dla We saved the best for last. : D
DJMcMayhem

Odpowiedzi:

38

5 lat

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

Komentarz jednowierszowy //został dodany w C99, więc kompilator C89 odczytałby ten kod jako c=-4.5 / /*comment*/ -4.5, który jest taki sam jak c=-4.5 / -4.5, podczas gdy kompilator C99 odczytałby jako c=-4.5 //comment/**/
- 4.5, który jest taki sam jak c=-4.5 - 4.5.
Część Python jest komentarzem w programie C.

2010: Python 2.7 i 2015: Python 3.5

Dokumenty różnią się w Pythonie 3 i 2, ten program wykorzystuje długość dokumentów do wykrycia wersji Pythona.
Część C znajduje się w ciągu znaków w programie Python.

1993 [2] : Brainfuck

Zasadniczo ignoruje wszystko, co nie jest .,[]+-<>. Ponieważ program C ma ,w sobie, musiałem zmusić Brainfuck do odrzucenia tej części poprzez ustawienie bieżącego bajtu na 0.


  1. Specyfikacja C89 została wydana w 1990 roku. Więcej informacji .
  2. Nie mogłem znaleźć oficjalnej daty premiery, więc uwierzę w Esolangs i Wikipedię .
betseg
źródło
4
To jest świetne, zwłaszcza -4.5/-4.5i -4.5-4.5. Łączenie dwóch wersji każdego z dwóch głównych języków jest imponujące, nawet bez wrzucania tam BF :-)
ETHproductions
To nie jest codegolf, ale a=linia 2 nie jest potrzebna
TheInitializer,
@TheInitializer tak, próbowałem bez a=i dało to błąd, więc postanowiłem go zatrzymać. Nie wiem jednak, dlaczego wystąpił błąd, prawdopodobnie literówka.
betseg
@betseg, jeśli ten kod jest wykonywany tylko w Pythonie, powinien działać.
TheInitializer,
17

15 lat, JavaScript

Ponieważ cykl wydawania JavaScript jest bardzo nietypowy i niespójny, zamierzam użyć implementacji Firefoksa. Daj mi znać, jeśli nie jest to dozwolone.

Wersje: 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 (wszystkie testowane w systemie Windows 7)

Ważna uwaga: instalacja i otwarcie przeglądarki Firefox 1.0.0 lub dowolnej późniejszej wersji może usunąć wszystkie zapisane dane Firefoksa , w tym historię i zakładki.

Począwszy od wersji 1.0.0, możesz mieć otwartą tylko jedną wersję na raz; próba otwarcia innej wersji powoduje otwarcie nowego okna już otwartej wersji.

Instrukcje

Kod

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    // We're all the way back to the good old Phoenix 0.1 browser...
    return 2002;
})());
</script>
ETHprodukcje
źródło
Możesz dodać 16 rok, dołączając BF: <!--<<<<-[>+<-----]>--.++++++++..------.[-][-->przed skryptem i inny komentarz HTML zawierający tylko ]później.
Steven H.
6
@StevenH. Um ... wow, nigdy nawet nie myślałem o włączeniu do tego esolangów. I to jest naprawdę sprytny sposób na włączenie BF :-) Ale nie jestem pewien, czy naprawdę chcę ...
ETHproductions
13

6 języków, Turtlèd and brainfuck , Python 3.5, Python 2.7, > <> , Fission

Turtlèd nie istniał przed tym rokiem, więc jest tak obiektywny, nawet jeśli zatwierdzenia github się nie liczą, a BF ma dowód strony esolang, wydany w 1993 roku. Python 3.5 to 2015, 2.7 to 2010.> <> także ma stronę esolang , z 2009 r., podobnie jak Fission, 2014

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

Prawdopodobnie powinienem przypisać stronę stałych bf na esolangach ... ¯ \ _ (ツ) _ / ¯

Jak to działa, rodzaj:

Turtlèd:

Turtlèd tak naprawdę nie robi nic dla linii innych niż pierwsza:

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

/ jest nop

Brainfuck

Brainfuck ignoruje znaki w swoich poleceniach

widzi -[>+<-----]>--.++++++++..------.(ostatni. pochodzi z części python)

który po prostu robi Brainfuck, używa zawijania, aby podzielić 255 przez 5, a następnie odjąć 2 od wyniku, wydrukować, zwiększyć 8 razy, wydrukować dwa razy, zmniejszyć 6 razy, wydrukować

Python 2 i 3

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

długość dokumentacji dla len różni się w zależności od wersji, więc drukuje rok dla wersji 3, jeśli jest odpowiedniej długości, w przeciwnym razie dla wersji 2.

> <>

# Odzwierciedla wskaźnik wstecz, więc uderza / po drugiej stronie tej linii, przechodzi przez przestrzeń pomiędzy elsei 2010, następnie odbija znowu uderzy „2009”, spychając 9,0,0,2 na stosie, a następnie drukowanie odwrócone .

Rozszczepienie

Rozszczepienie ma spawnery, więc możemy mieć linię na dole, którą wykonuje samodzielnie:

#;"4102"L
        L spawn left moving atom
  "4102"  print this right to left
 ;        halt
# python comment
Zniszczalna cytryna
źródło
13

3 lata, 3 języki: 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   */ 

Nazwij plik date.mixal.

  1. C (1990) - Kompiluje z ostrzeżeniami i drukuje 1990do stdout.
  2. TeX (1982) - Kompiluj z tex date.mixal; drukuje 1982do pliku O.tex(zignoruj ​​wyjście DVI).
  3. MIXAL (1997) - Skompiluj za pomocą GNU Mix Development Kit mixasm date.mixali uruchom z mixvm -r date.mix; drukuje 1997na urządzeniu typu teletekstu (= stdout).

Programy TeX i MIXAL są w komentarzu w programie C; program MIXAL pojawia się później, \byewięc TeX go ignoruje. Programy C i TeX są komentarzem w programie MIXAL. Z jakiegoś powodu gccjest skłonny to zaakceptować *main.

musarithmia
źródło
Zapomniałem o MIXAL, +1: D
kot
13

3 lata (GolfScript, CJam, MATL), 24 23 bajty

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

To wychodzi

  • 2007 w GolfScript.

  • 2015 w CJam (wersja 0.6.5).

  • 2016 w MATL (wersja 19.2.0).

Wyjaśnienie

Golfscript

Niezdefiniowane tokeny to nuty w GolfScript . Jedyne części kodu, które faktycznie coś robią, to:

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

Wszystko od %początku jest komentarzem.

[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"
Luis Mendo
źródło
Korekta: w CJam po %zdobyciu [11 10]. To nie ma znaczenia.
aditsu 30.01.17
@aditsu Whoops! Dzięki, zredagowano
Luis Mendo
12

2 języki, Python 2.7 i Python 3.5

Python 2.7 został wydany w 2010 roku .

Python 3.5 został wydany w 2015 roku .

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

Zależy to od PEP 238, w którym operator /zmieniono z dzielenia liczb całkowitych w Pythonie 2 na dzielenie zmiennoprzecinkowe w Pythonie 3.

mile
źródło
3
To może być zabawne wyzwanie, jeśli wiąże się z identyfikacją błędów / zmian w operatorach między wersjami
mile
1
@TuukkaX Działa dla mnie zarówno w Pythonie 2.7.12, jak i Pythonie 3.5.1 na Fedorze 24.
mile
1
Nie możesz '2010'if 3/2>1else'2015'zamiast tego zrobić ?
Qwerp-Derp,
15
Albo my matematyka:print(int(2010+1/2*10))
Jakube
2
print('2015'if 1/2else'2010')jest lepiej
Cyoce 30.09.16
12

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

„Każdy program może drukować do STDERR lub generować błędy czasu wykonania / błędów kompilacji i ostrzeżenia, dopóki prawidłowe wyjście jest nadal drukowane do STDOUT lub pliku.” Obecnie jedynym bezbłędnym wyświetlaniem jest rok, więc przestrzegamy tej zasady. Jednakże, jeśli chcesz napisać do pamięci zamiast wymienić Disp (date)z (date)->I.

Bibliografia:

  1. Daty wydania kalkulatora - https://epsstore.ti.com/OA_HTML/csksxvm.jsp?nSetId=74258
  2. Data wydania TI-83 + OS 1.15 - http://wikiti.brandonw.net/index.php?title=83Plus:OS:VersionDifferences#TIOS_1.15
  3. Kompatybilność kalkulatora - http://tibasicdev.wikidot.com/compatibility
  4. Data wydania TI-84 + CSE - https://www.amazon.com/Texas-Instruments-Silver-Graphing-Calculator/dp/B00AWRQKDC
  5. Data wydania TI-84 + CE - http://www.prnewswire.com/news-releases/texas-instruments-unveils-the-new-ti-84-plus-ce-300026266.html i https: // www. cemetech.net/forum/viewtopic.php?t=8870
Timtech
źródło
9

5 lat, Go 1.0, 1.1, 1.4, 1.5, 1.6: 285 257 bajtów

(1.2 zostało wydane w 2013 r. Jak 1.1, 1.3 w 2014 r. Jak 1.4, a 1.7 w 2016 r. Jak 1.6.)

Nie przetestowałem tego w każdej wersji, ponieważ mogę uzyskać dostęp tylko do wersji 1.6, ale powinno to działać teoretycznie! Zmiany językowe prawdopodobnie spowodowałyby, że program się nie skompilował, więc polegałem na standardowych zmianach w bibliotece.

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

Nie golfił i skomentował:

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)
}
GODŁO
źródło
7

4 lata, 99 bajtów / 77 znaków

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

Uwaga: Nie jestem pewien, czy lata są prawidłowe

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

Zajęło mi trochę czasu, aby dowiedzieć się, jak sprawić, by Python i JS ze sobą współpracowały.

Wyjaśnienie

v=1//1;"""ustawia zmienną vna 1dzieloną przez 1w Pythonie i na 1JavaScript ( //rozpoczyna komentarz w JavaScript), i ;"""uruchamia ciąg wieloliniowy w Pythonie. Nie ;można go zastąpić nowym wierszem, ponieważ spowoduje to, że JavaScript przestanie działać.

1991/*"""jest resztą ciągu wielowierszowego. Potrzebne jest miejsce, aby> <> nie przesuwał 1się na stos. Ponieważ początek ciągu wielowierszowego był częścią komentarza w JavaScript, drukuje 1991i rozpoczyna komentarz wielowierszowy.

for i in[0]:print 2010#🔟😃😇🔟😗➕➕😨w Pythonie jest pętlą for, która iteruje listę [0]i uruchamia się print 2010. Komentarz jest po prostu kodem Emotinomicon (ignoruje wszystko, co nie jest emoji lub łańcuchem). W> <> it ( f) wypycha 15 na stos.

Pętli for nie można usunąć, ponieważ adres IP> <> spada w kolumnie 1 i pnie jest prawidłowym poleceniem w> <>. Nie można również zastąpić go ifinstrukcją, ponieważ ijest to komenda do wprowadzania danych w> <>.

""" jest początkiem ciągu wielowierszowego.

" jest częścią ciągu wielowierszowego, potrzebnego do zamknięcia ciągu, który otworzyliśmy w> <> (pierwszy znak cudzysłowu w poprzednim wierszu rozpoczął ciąg w> <>).

>9002nnnn;w> <>, zmienia kierunek IP do prawej, popycha 9, 0, 0i 2, wyjścia te jak numery i kończy program.

"""#*/w Pythonie kończy ciąg multilinii i rozpoczyna komentarz. W Javascript */powoduje , że komentarz wielowierszowy kończy się.


Wersja premiowa z Golem> <>:

5 języków, 4 lata, 118 114 bajtów / 96 92 znaków

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

Wyjaśnienie²

Adres IP zaczyna się w lewym górnym rogu, w prawo. vPozwala zejść.

fpopycha 15.

" zaczyna ciąg.

` służy do ucieczki znaków, czegoś, czego> <> nie ma.

"powinien zamknąć ciąg, ale użyliśmy `, więc nie będzie.

> część łańcucha.

" kończy ciąg.

>5102nnnn;jest rzeczywistym kodem. >czyni IP idź w prawo, 5102popycha 5, 1, 0i 2, a nnnn;drukuje numery i kończy program.

acrolith
źródło
Błędy języka Python w znakach Unicode bez odpowiedniego nagłówka. ( 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)
Sriotchilism O'Zaic
@WheatWizard Zapisz plik jako UTF-8
acrolith
7

7 lat, 8 przeglądarek

Nie są to daty wydania w języku, ponieważ css tak naprawdę nie ma wydań, ale wersje przeglądarki (może to być może wersja kompilatora?)

W przypadku następujących przeglądarek drukuje nazwę przeglądarki, wersję i datę wydania i nic więcej. Drukuje to samo dla kilku późniejszych wersji (zobaczysz, że chrom jest jedną wersją późno na zrzutach ekranu, ponieważ trudno jest pobrać stare wersje chrome według numeru wersji)

Mogłem wydrukować numer wersji, którego użyłem, ale wolałem pokazać pierwszą wersję, w której wprowadzono używaną funkcję.

  • IE6
  • IE7
  • IE8
  • IE9 (nieprzetestowane, nie ma w pobliżu IE9)
  • Firefox 4
  • Firefox 3.6
  • Chrome 18
  • Chrome 21
  • Nowoczesne przeglądarki

FF3.6 FF4 Chrom19 Chrom 22 Dziwactwa IE8 Kompatybilność z IE8-IE7 IE8

index.html

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

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

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

    </svg>

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

style.css

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

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

filter.svg

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

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

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

    </svg>

    <div class="filter">
      <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
        <g
           transform="scale(8)"
           aria-label="FF4"
           id="text8419">
           <rect
              style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.79374999;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
              id="rect21965"
              width="17.005648"
              height="3.9855044"
              x="-0.16825682"
              y="-0.025296567" />
          <path
             d="m 1.0052634,1.5511362 v 0.7639843 h 0.4564063 q 0.092604,0 0.092604,0.066146 0,0.069453 -0.092604,0.069453 H 0.69107072 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 h 0.1785938 V 0.72431329 h -0.1785938 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 H 2.1793519 V 1.0484278 q 0,0.089297 -0.069453,0.089297 -0.066146,0 -0.066146,-0.089297 V 0.72431329 H 1.0052634 V 1.4155373 H 1.4848207 V 1.2667091 q 0,-0.089297 0.066146,-0.089297 0.069453,0 0.069453,0.089297 v 0.4332552 q 0,0.089297 -0.069453,0.089297 -0.066146,0 -0.066146,-0.089297 V 1.5511362 Z"
             style="fill:#000000;stroke-width:0.79374999"
             id="path8421" />
          <path
             d="m 2.9883464,1.5511362 v 0.7639843 h 0.4564063 q 0.092604,0 0.092604,0.066146 0,0.069453 -0.092604,0.069453 h -0.770599 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 H 2.8527475 V 0.72431329 H 2.6741537 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 H 4.1624349 V 1.0484278 q 0,0.089297 -0.069453,0.089297 -0.066146,0 -0.066146,-0.089297 V 0.72431329 H 2.9883464 V 1.4155373 H 3.4679037 V 1.2667091 q 0,-0.089297 0.066146,-0.089297 0.069453,0 0.069453,0.089297 v 0.4332552 q 0,0.089297 -0.069453,0.089297 -0.066146,0 -0.066146,-0.089297 V 1.5511362 Z"
             style="fill:#000000;stroke-width:0.79374999"
             id="path8423" />
          <path
             d="M 5.6692683,1.8917872 H 4.7729923 V 1.7363445 l 0.754062,-1.28322911 h 0.277813 V 1.7561883 h 0.112448 q 0.0893,0 0.0893,0.069453 0,0.066146 -0.0893,0.066146 h -0.112448 v 0.4233333 h 0.112448 q 0.0893,0 0.0893,0.066146 0,0.069453 -0.0893,0.069453 h -0.499402 q -0.0893,0 -0.0893,-0.069453 0,-0.066146 0.0893,-0.066146 h 0.251355 z m 0,-0.1355989 V 0.58871439 h -0.07938 L 4.9019713,1.7561883 Z"
             style="fill:#000000;stroke-width:0.79374999"
             id="path8425" />
          <path
             d="M 8.2881171,1.6077068 H 6.9585859 q -0.089297,0 -0.089297,-0.069453 0,-0.066146 0.089297,-0.066146 h 1.3295312 q 0.089297,0 0.089297,0.066146 0,0.069453 -0.089297,0.069453 z"
             style="stroke-width:0.79374999"
             id="path8422" />
          <path
             d="m 8.9582054,0.90656104 q 0,-0.14882812 0.1785937,-0.31749999 0.1819011,-0.17197916 0.4365625,-0.17197916 0.2414323,0 0.4233333,0.17197916 0.1852081,0.17197916 0.1852081,0.39687498 0,0.14882817 -0.0893,0.28111977 Q 10.006617,1.3960402 9.7056533,1.67716 L 9.0210439,2.3154672 v 0.00992 H 10.059533 V 2.2063266 q 0,-0.089297 0.06945,-0.089297 0.06614,0 0.06614,0.089297 V 2.460988 H 8.8920596 V 2.2625506 L 9.6725804,1.5283318 q 0.2315104,-0.2282031 0.3009635,-0.3307291 0.07276,-0.102526 0.07276,-0.21497396 0,-0.17197916 -0.1422132,-0.30096353 -0.1422136,-0.12898437 -0.3307292,-0.12898437 -0.1686718,0 -0.3075781,0.0992188 -0.1355989,0.0992188 -0.1752864,0.24804686 -0.019844,0.0661458 -0.069453,0.0661458 -0.023151,0 -0.042995,-0.0165365 -0.019844,-0.0198437 -0.019844,-0.0429948 z"
             style="stroke-width:0.79374999"
             id="path8424" />
          <path
             d="m 12.207981,1.3001287 v 0.3307292 q 0,0.3902604 -0.171979,0.6349999 -0.171979,0.2447396 -0.446484,0.2447396 -0.274506,0 -0.446485,-0.2447396 Q 10.971054,2.0211183 10.971054,1.6308579 V 1.3001287 q 0,-0.39356766 0.171979,-0.63830724 0.171979,-0.24473957 0.446485,-0.24473957 0.274505,0 0.446484,0.24473957 0.171979,0.24473958 0.171979,0.63830724 z M 11.589518,0.55268084 q -0.224896,0 -0.353881,0.22820312 -0.128984,0.22489584 -0.128984,0.53578124 v 0.2943489 q 0,0.3241146 0.132292,0.5457031 0.135599,0.2182813 0.350573,0.2182813 0.224895,0 0.35388,-0.2248959 0.128984,-0.2282031 0.128984,-0.5390885 V 1.3166652 q 0,-0.32411458 -0.135599,-0.54239582 -0.132292,-0.22158854 -0.347265,-0.22158854 z"
             style="stroke-width:0.79374999"
             id="path8426" />
          <path
             d="M 13.642054,0.43692564 V 2.3253891 h 0.459713 q 0.0893,0 0.0893,0.066146 0,0.069453 -0.0893,0.069453 h -1.055026 q -0.0926,0 -0.0926,-0.069453 0,-0.066146 0.0926,-0.066146 h 0.459714 V 0.61551938 l -0.373724,0.37372394 q -0.02646,0.0264584 -0.06945,0.0264584 -0.02646,0 -0.0463,-0.0198438 -0.01654,-0.023151 -0.01654,-0.056224 0,-0.0297656 0.03638,-0.0661458 l 0.436562,-0.43656248 z"
             style="stroke-width:0.79374999"
             id="path8428" />
          <path
             d="M 15.625137,0.43692564 V 2.3253891 h 0.459713 q 0.0893,0 0.0893,0.066146 0,0.069453 -0.0893,0.069453 h -1.055026 q -0.0926,0 -0.0926,-0.069453 0,-0.066146 0.0926,-0.066146 h 0.459714 V 0.61551938 l -0.373724,0.37372394 q -0.02646,0.0264584 -0.06945,0.0264584 -0.02646,0 -0.0463,-0.0198438 -0.01654,-0.023151 -0.01654,-0.056224 0,-0.0297656 0.03638,-0.0661458 l 0.436563,-0.43656248 z"
             style="stroke-width:0.79374999"
               id="path8430" />
          </g>
      </svg>
    </div>
    <div class="white gradient msfilter" style=color:white>
      FF3.6-2010
    </div>
  </body>
 </html>
qwazix
źródło
2
CSS faktycznie ma wersje. Dostępne są wersje 1.0, 2.0, 2.1, 3.0 i 4.0. Pytanie mówiło nawet o użyciu Wikipedii lub strony językowej jako dowodu daty wydania, więc powinieneś to sprawdzić. Data pierwszego wydania: 17 grudnia 1996 r.
mbomb007
Nie ma to sensu, że nie ma implementacji żadnego z tych poziomów (nie są nawet nazywane wydaniami, ponieważ tak nie jest, powinieneś sprawdzić link, który opublikowałeś). A CSS3 i 4 nie mają nawet daty wydania, ponieważ są tworzone w locie i przechodzą między szkicami, kandydatami i rekomendacjami. Ponadto żadna przeglądarka nie implementuje określonego poziomu 100% i 0% następnego poziomu, więc najlepszą datą, jaką możesz wymyślić, jest data premiery przeglądarki.
qwazix
Wówczas wybrany język nie spełnia wymaganych specyfikacji dla tego wyzwania. Nie w sposób, w jaki próbujesz to zrobić. Język jest definiowany przez jego implementację, więc musisz wybrać przeglądarkę i pozostać przy niej, używając różnych wersji przeglądarki , a nie różnych przeglądarek. Nadal jednak pytam OP.
mbomb007
OP nie powiedział, że różne wersje liczą się jako różne języki, po prostu powiedział, aby wydrukować rok wydania używanej wersji językowej dla różnych języków . Jednak ~ połowa odpowiedzi była oparta na założeniu, że różne wersje są na tyle różne, że można je zaliczyć do języków. Jeśli python 2.5.0 i 2.5.1 są uważane za wystarczająco różne, nie mogę zrozumieć, w jaki sposób IE i Chrome nie są.
qwazix
6

3 lata, 89 bajtów

Python 2, JavaScript (ES6) i Perl

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

Pierwszy evalbędzie działał 1w Pythonie 2 oraz print=_=>console.log(1995)w JavaScript i Perlu przy użyciu funkcji dzielenia liczb całkowitych w Pythonie 2. To tworzy printfunkcję w JavaScript, a Perl tylko cicho dba o błędy składniowe i kontynuuje niezależnie.

Drugi evalpolega na interpolacji Perla przez zmienną $$(bieżący PID) w ciągu, co będzie prawdziwe, gdy zostanie porównane (za pomocą >operatora) z "0"(Python wymaga ciągu w tym porównaniu, podczas gdy Perl domyślnie konwertuje na liczbę całkowitą).

Mogłem mieć klakson w większej liczbie języków, ale chciałem mieć rozwiązanie, które nie nadużywałoby komentarzy i działało tylko w „zwykłych” językach.

Skorzystałem z tej strony w Wikipedii, aby pobrać lata użytkowania.

Dom Hastings
źródło
2

3 języki, 3 lata

Ad-hoc odpowiedź dla zabawy.

2002!~+++++++[<+++++++>-]<[.++++++++..------.[-]] 2016 !.
  • Mouse-2002 : wszystko po~jest komentarzem, a pierwsza część, którą można również napisaćC0U!!!, drukuje2002.

  • to zatwierdzenie kalkulacyjne kalkulatora oparte na stosie, które właśnie zaprojektowałem w C11 dla Programowania II, część programu przed pierwszą spacją wypisuje błąd (dozwolony w specyfikacji wyzwania) i2016 !.drukuje2016.

  • Brainfuck : drukuje 1993, jak widać w innych odpowiedziach. Ostateczne obce .jest ignorowane przez beef.

Zauważ, że wyświetlanie bieżącego stosu < stackprzez Calc z każdą niepustą linią wejściową jest częścią pytania >, a nie częścią wyniku.

kot
źródło
Gdzie mogę dowiedzieć się o Mouse-2002? Github nie wydaje się mieć żadnych specyfikacji.
Sriotchilism O'Zaic
@WheatWizard README repozytorium zawiera łącza do oryginalnego MUSYS Dr. Grogono i do ponownego uruchomienia Davida Simpsona w 2002 r. , Które razem malują OK.
kot
2

Microsoft Excel / Arkusze Google, 22 bajtów

Anonimowa funkcja arkusza roboczego, która nie pobiera danych wejściowych i wyjściowych 1987w programie Microsoft Excel i 2006Arkuszach Google

=IfError(M(2006),1987)
Taylor Scott
źródło
0

Perl 5 i Perl 6 (2 lata)

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

Pierwsze wydanie Perla 5 miało miejsce w 1994 roku

Pierwsze oficjalne wydanie Perla 6 miało miejsce w 2015 roku

bb94
źródło