Twoim zadaniem jest napisanie programu, który będzie działał w jak największej liczbie języków, przy użyciu jak najmniejszej liczby znaków. Aby uniknąć trywialnych rozwiązań, program musi wydrukować nazwę języka, w którym został uruchomiony.
Punktacja
Twój program musi działać w co najmniej 5 językach. Wynik programu jest podawany jako:
(number of languages)1.5 / (length of program)
Najwyższy wynik wygrywa, nie wcześniej niż 10 dni po pierwszej ważnej odpowiedzi.
print()
Perl, Python, PHP, Processing i R byłoby uważane za trywialne, czy jest dopuszczalne?n * n / length
Odpowiedzi:
Bash, C, C ++, Obj-C, Obj-C ++, Perl, PHP, Ruby, 183 znaków
wynik ~ 0,1236
W przypadku kodów C i C mam dług wobec @ baby-rabbit. Inne inspirowane są uznaniem, że wiele języków ma
eval
stwierdzenie, które niechętnie zaakceptują nieprawidłową składnię.Wyświetla nazwę języka na standardowe wyjście. Czasami generuje wiele komunikatów o błędach przy standardowym błędzie, więc pomijaj je przy
2>/dev/null
uruchamianiu.Wyjście rozwiązania php
'PHP'
(łącznie z pojedynczymi cudzysłowami), które może nieco wyginać reguły.Ostatnia edycja: 12 znaków z ogoloną spostrzeżeniu, że
$=
jestfalse
w Ruby,60
Perl, iprint$=?...
jest prawie na pewno błąd w bash. Ogoliłem jeszcze 7 z wglądu, test Perl / Ruby / Bash może teraz przejść do jednej instrukcji eval.Jeśli reguły mogą tolerować więcej zgięć, przedstawię 8 języków, 43 znaki (wynik 0,5262)
dla którego wyjście zawiera nazwę tłumacza
php
,perl
,lua
,rscript
,ruby
,python
,cat
, irot13
.źródło
print("phperluarscriptrubypythontibasicatebg13");
Disp
lubOutput(
lubtext(
, nie maprint(
polecenia. Dołączenie łańcucha jako części wyrażenia o wartościach rzeczywistych powodujeERR:INVALID SYNTAX
, że nie wyświetla się on (nawet jako wartość zwracana). (Ponadto nie ma;
; zastosowania TI-Basic:
)echo Bash
zps -ocomm= -p$$
? Spowoduje to wyświetlenie nazwy powłoki przynajmniej dla bash, zsh, ksh, csh i tcsh, może innych.C, C ++, BF, BASH i Ruby; 280 znaków
Wynik to około 0,040
Zauważ, że używam systemu Linux.
Kod jest uruchamiany lub kompilowany za pomocą następujących poleceń (nazwa pliku to
test.c
)DO:
Po uruchomieniu z
./a.out
wyjściem jestC
C ++:
Po uruchomieniu z
./a.out
wyjściem jestC++
GRZMOTNĄĆ:
Wyjścia:
BASH
Rubin:
Wyjścia:
Ruby
BrainF ***:
Zweryfikowano przy użyciu:
Debuger JS
Darmowy tłumacz
Mój tłumacz
Wyjścia:
brainfuck
Zauważ, że jeśli używany jest debuger JS, należy usunąć dwa pierwsze znaki minus. Zostały one uwzględnione, aby zrównoważyć znaki plus w dosłowności łańcucha
"C++"
. To był bardzo fajny projekt, pracuję nad dodaniem kolejnych języków.Aby jeszcze bardziej wyjaśnić, oto specyfikacje mojego tłumacza / kompilatora:
wersja gcc 4.6.3
ruby 1.9.3p194 (wersja 2012-04-20 wersja 35410) [x86_64-linux]
GNU bash, wersja 4.2.24 (1) -release (x86_64-pc-linux-gnu)
DYGRESJA
Używając sztuczki @ baby-rabbit udało mi się rozszerzyć mój kod, aby był wykonywalny w 7 językach (dodano C-C i C-C ++). To nie jest moje rozwiązanie, ponieważ niektóre z nich skopiowałem, ale pomyślałem, że się pochwalę.
Aktualizacja 9.12 Dodano bieg SmallTalk z gnu-smalltalk!
SmallTalk, C, C ++, Objective-C, Objective-C ++, BASH, BF, Ruby; 384 znaki (Wynik: 0,059)
W powyższym kodzie należy zmienić nazwę pliku, aby utworzyć nazwę języka dla celu-c, obj-c ++, c oraz c ++.
źródło
brainf***
?if [ 1 = 2 ]
zamiastif [ 1 == 2 ]
, ponieważ skrypty bez hashbangu są wykonywane przez sh, a nie bash. sh może, ale nie musi być bash, w Debianie jest to myślnik.bash, c, c ++, obj-c, obj-c ++; 134 znaki; wynik = 0,083
zmień nazwę pliku i uruchom / skompiluj jako:
(gdzie cc jest clang-421.10.42)
źródło
Lua, Ruby, VimL, Sed, Befunge (129 znaków; ~ 0,087 punktów)
Nie jestem pewien, czy to się liczy - część sed jest osadzona w linii shebang, co jest prawdopodobnie włamaniem do obejścia ograniczenia. Oznacza to również, że powinien on być uruchamiany jako plik wykonywalny, a nie bezpośrednio z
sed
.Miałem szczęście, że wszystkie inne języki (sans Befunge) automagicznie ignorują linię shebang (chociaż najwyraźniej Ruby odmawia uruchomienia pliku, jeśli zawiera ona linię shebang, która nie zawiera w sobie łańcucha „ruby”).
Przykładowe użycie:
źródło
BF, Bash, Batch, C, vi (163 znaki; wynik ≈ .0686)
(
<ESC>
oznacza kod ASCII 27.)Przetestowałem to jako plik wsadowy w wersji COMMAND.COM w wersji MS-DOS 6.22. Domyślnie ten interpreter miesza wiersze kodu źródłowego z danymi wyjściowymi. Aby temu zapobiec, wykonaj
echo off
przed uruchomieniem pliku wsadowego.Aby wykonać kod vi, który przetestowałem tylko przy użyciu Vima, użyj następującego polecenia:
źródło
touch tmpfile
lub: > tmpfile
zamiastcat /dev/null > tmpfile
.bash, zsh, ksh, csh, tcsh, 15 znaków, wynik 0,745
Ten jest trochę rozciągnięty, ponieważ są to wszystkie powiązane języki, ale są różnice:
źródło
Każda wersja Python, 18.37291 punktów
Technicznie poprawne, jeśli weźmiesz pod uwagę wszystkie wersje języka Python w różnych językach. Obecnie istnieje 116 wersji Pythona, co moim zdaniem daje wynik około 18,37291.
(Rozumiem również, że jeśli nie jest to poprawna odpowiedź, to tylko dla zabawy)
źródło
Bash, C, Gawk, Perl, vi (145 znaków; wynik ≈ .077)
(
<BS>
oznacza kod ASCII 8.<ESC>
oznacza kod ASCII 27.)Aby wykonać kod vi, który przetestowałem tylko przy użyciu Vima, użyj tego polecenia:
źródło
To jest tani wybór języków, ale oto:
CoffeeScript, JScript, Mozilla JavaScript (≈ JavaScript 1.3), ECMAScript Edition 5, ECMAScript Edition 3, 223 znaków, wynik ≈ 0,0501)
źródło
a="undefined";if(typeof arguments!=a)...else if(typeof WScript!=a...
oh i możesz też spróbować zagrać w golfa ....{
/}
/;
... chodzi o to, aby wykorzystaća
w celu uniknięcia ponownego wykorzystania"undefined"
, można również zrobićb=alert
i potemb("this is also still just javascript")
. w każdym razieThe golden rule of CoffeeScript is: "It's just JavaScript"
(z coffeescript.org ) możesz także użyć jquery, aby dodać szósty język ....[].map
zamiastArray.prototype.map
?Java, Lisp, Whitespace, Intercal, PHP, Befunge-98; wynik = .0189
To była pierwotnie odpowiedź na to .
źródło
public class...
spowoduje problem z kompilatorem.Windows Batch, TI-Basic, Golf-Basic 84 , Quomplex i GTB 5 * 2/93 = 0,11
Jak to działa
Windows Batch był najłatwiejszy, ponieważ
::
zaczyna się komentarz. Dość prosty do wdrożenia.TI-Basic nie obsługuje małych liter ani odwrotnych znaków, co powoduje pominięcie instrukcji
d`"GOLF-BASIC 84":g`1
, które ewaluuje Golf-Basic, wyświetlanie wiadomości i przekazywanie do etykiety 1, gdzie jest natychmiast kończone. Jest to podobne do GTB, z poręcznym charakter wyświetlania~
. Nawiasem mówiąc, zostanie wstawiony ciąg bez wyświetlaczaAns
. Jeśli po nim nie ma żadnych poleceń Display,Ans
zostaną wyświetlone (nie w tym przypadku).Quomplex został wciągnięty na początku, ponieważ jego złożona składnia nie pozwala na pominięcie wielu elementów. Wszystko, co robi, to dodać
"Quomplex"
do wyniku, a następnie do opanowania programu ...Opanowanie składni programowania
Czysty geniusz. Quomplex ignoruje
:
i przyjmuje"'
oraz'"
jako łańcuchy, pozostawiając go do wyprowadzenia stosu i zginięcia w nieskończonej chwili pętli ([]
). Tymczasem Golf-Basic i TI-Basic traktują całość"'*[]'"
jako ciąg, ponieważ'
jest operatorem matematycznym, a nie ciągiem.źródło
:
oznacza etykietę w pliku wsadowym, a nie komentarz. Prawdą jest jednak, że nie wykonuje niczego samodzielnie.::
(choć nadal jest to etykieta). Wolałbym go używaćREM
, zwłaszcza że jest to wymagane w TI-Basic.JScript, EcmaScript Edition 3, 5, 6, 2016, Węzeł, Mozilla JavaScript (wynik 34 0,1342)
Ta odpowiedź jest pierwotnie oparta na odpowiedzi Petera Olsona, ale minus CoffeeScript (ponieważ znaczące białe znaki języki mogą być okropne dla gry w golfa).
Dodałem także Node , ES6 i ES2016 i trochę poprawiłem kod, prawie trzykrotnie zwiększając pierwotny wynik.
źródło
16 języków, 348 bajtów, wynik: 0,183908046
Działa to w C (gcc), C ++ (gcc), C (ecpp), C ++ (ecpp), C (clang), C ++ (clang), C (tcc), sh, dash, bash, zsh, ksh, csh, tcsh, rk i SIL.
źródło
JScript, EcmaScript Edition 3, 5, 6, 2016, 2017, Węzeł, Mozilla JavaScript (wynik = .174193548387), CoffeeScript (ponieważ znaczące białe znaki języki mogą być okropne dla gry w golfa).
źródło