Ihre Aufgabe ist es, ein Programm zu schreiben, das mit so wenig Zeichen wie möglich in so vielen Sprachen wie möglich ausgeführt wird. Um triviale Lösungen zu vermeiden, muss das Programm den Namen der Sprache ausgeben, in der es ausgeführt wurde.
Wertung
Ihr Programm muss in mindestens 5 Sprachen arbeiten. Die Punktzahl eines Programms wird wie folgt angegeben:
(number of languages)1.5 / (length of program)
Die höchste Punktzahl gewinnt, frühestens 10 Tage nach der ersten gültigen Antwort.
print()
Perl, Python, PHP, Processing und R als trivial angesehen, oder ist sie akzeptabel?n * n / length
Antworten:
Bash, C, C ++, Obj-C, Obj-C ++, Perl, PHP, Ruby, 183 Zeichen
Ergebnis ~ 0,1236
Für die C- und C-ähnlichen Codes bin ich @ baby-rabbit schuldig. Die anderen sind von der Erkenntnis inspiriert, dass viele Sprachen eine
eval
Aussage haben, die widerwillig ungültige Syntax akzeptiert.Gibt den Sprachnamen zur Standardausgabe aus. Es kann vorkommen, dass bei Standardfehlern viele Fehlermeldungen angezeigt werden. Unterdrücken Sie sie daher beim
2>/dev/null
Ausführen mit.Die PHP-Lösung gibt
'PHP'
(einschließlich der einfachen Anführungszeichen), die die Regeln ein wenig biegen können.Letzte Änderung: 12 Zeichen aus der Erkenntnis rasiert,
$=
diefalse
in Ruby,60
in Perl undprint$=?...
fast sicher ein Fehler in Bash ist. Der Perl / Ruby / Bash-Test kann jetzt in einer einzigen Bewertung zusammengefasst werden.Wenn die Regeln mehr Biegen tolerieren, präsentiere ich diese 8-sprachige Lösung mit 43 Zeichen (Punktzahl 0.5262).
enthält , für die der Ausgang der Namen des Interpreters für
php
,perl
,lua
,rscript
,ruby
,python
,cat
, undrot13
.quelle
print("phperluarscriptrubypythontibasicatebg13");
Disp
oderOutput(
odertext(
Token, gibt es keinenprint(
Befehl. Wenn Sie eine Zeichenfolge als Teil eines ansonsten reellen Ausdrucks einfügenERR:INVALID SYNTAX
, wird die Zeichenfolge nicht angezeigt (auch nicht als Rückgabewert). (Auch gibt es keine;
; TI-Basic verwendet:
)echo Bash
mitps -ocomm= -p$$
? Dadurch wird der Name der Shell für mindestens bash, zsh, ksh, csh und tcsh ausgegeben, möglicherweise für andere.C, C ++, BF, BASH und Ruby; 280 Zeichen
Der Wert liegt bei 0,040
Beachten Sie, dass ich ein Linux-System verwende.
Der Code wird mit den folgenden Befehlen ausgeführt oder kompiliert (der Name der Datei lautet
test.c
)C:
Wenn mit ausgeführt
./a.out
, wird ausgegebenC
C ++:
Wenn mit ausgeführt
./a.out
, wird ausgegebenC++
BASH:
Ausgänge:
BASH
Rubin:
Ausgänge:
Ruby
Gehirn ***:
Verifiziert mit:
Ein JS-Debugger
Ein kostenloser Dolmetscher
Mein Dolmetscher
Ausgänge:
brainfuck
Beachten Sie, dass bei Verwendung des JS-Debuggers die ersten beiden Minuszeichen entfernt werden müssen. Sie wurden eingefügt, um die Pluszeichen im Zeichenfolgenliteral auszugleichen
"C++"
. Dies war ein sehr lustiges Projekt, ich arbeite daran, weitere Sprachen hinzuzufügen.Zur weiteren Verdeutlichung hier die Angaben meines Interpreters / Compilers:
gcc version 4.6.3
ruby 1.9.3p194 (2012-04-20 Revision 35410) [x86_64-linux]
GNU Bash, Version 4.2.24 (1) -Release (x86_64-pc-linux-gnu)
RANDNOTIZ
Mit dem Trick von @ baby-rabbit konnte ich meinen Code so erweitern, dass er in 7 Sprachen ausführbar ist (Objective-C und Objective-C ++ werden hinzugefügt). Dies ist nicht meine Lösung, da ich einige kopiert habe, aber ich dachte, ich würde es vorführen.
Update 9.12 SmallTalk mit gnu-smalltalk hinzugefügt!
SmallTalk, C, C ++, Objective-C, Objective-C ++, BASH, BF, Ruby; 384 Zeichen (Score: 0.059)
Im obigen Code müssen Sie die Datei umbenennen, um den Namen der Sprache für Objective-C, Obj-C ++, C und C ++ zu erzeugen.
quelle
brainf***
?if [ 1 = 2 ]
anstelle von verwendenif [ 1 == 2 ]
, da Skripte ohne Hashbang von sh und nicht von bash ausgeführt werden. sh darf oder darf nicht bash sein, auf Debian ist es dash.bash, c, c ++, obj-c, obj-c ++; 134 Zeichen; Punktzahl = 0,083
Datei umbenennen und ausführen / kompilieren als:
(wobei cc clang-421.10.42 ist)
quelle
Lua, Ruby, VimL, Sed, Befunge (129 Zeichen; ~ 0,087 Punkte)
Ich bin mir nicht sicher, ob dies zählt - der Sed-Teil ist in die Shebang-Linie eingebettet, was wohl ein Hack ist, um die Einschränkung zu umgehen. Dies bedeutet auch, dass es als ausführbare Datei und nicht direkt mit ausgeführt werden sollte
sed
.Ich hatte das Glück, dass alle anderen Sprachen (ohne Befunge) die shebang-Zeile automatisch ignorieren (obwohl Ruby sich anscheinend weigert, die Datei auszuführen, wenn sie eine shebang-Zeile enthält, in der die Zeichenfolge 'ruby' nicht enthalten ist).
Beispielnutzung:
quelle
BF, Bash, Batch, C, vi (163 Zeichen; Punktzahl ≈ .0686)
(
<ESC>
steht für ASCII-Code 27.)Ich habe dies als Batchdatei mit der MS-DOS 6.22-Version von COMMAND.COM getestet. Standardmäßig mischt dieser Interpreter Quellcodezeilen mit der Ausgabe.
echo off
Führen Sie vor dem Ausführen der Batchdatei die folgenden Schritte aus, um dies zu verhindern .Verwenden Sie den folgenden Befehl, um den vi-Code auszuführen, den ich nur mit Vim getestet habe:
quelle
touch tmpfile
oder: > tmpfile
anstelle von verwendencat /dev/null > tmpfile
.bash, zsh, ksh, csh, tcsh, 15 Zeichen, Score 0,745
Das ist ein bisschen schwierig, da sie alle verwandte Sprachen sind, aber es gibt Unterschiede:
quelle
Jedes Python-Release enthält 18.37291 Punkte
Technisch gültig, wenn Sie alle Python-Versionen als verschiedene Sprachen betrachten. Derzeit gibt es 116 Python-Versionen, von denen ich glaube, dass sie eine Punktzahl von etwa 18,37291 ergeben.
(Auch ich verstehe, wenn dies keine gültige Antwort ist, war dies nur zum Spaß)
quelle
Bash, C, Gawk, Perl, vi (145 Zeichen; Punktzahl ≈ .077)
(
<BS>
steht für ASCII-Code 8.<ESC>
steht für ASCII-Code 27.)Verwenden Sie diesen Befehl, um den vi-Code auszuführen, den ich nur mit Vim getestet habe:
quelle
Dies ist eine billige Auswahl an Sprachen, aber hier geht's:
CoffeeScript, JScript, Mozilla Javascript (≈ JavaScript 1.3), ECMAScript Edition 5, ECMAScript Edition 3, 223 Zeichen, Punktzahl ≈ 0.0501)
quelle
a="undefined";if(typeof arguments!=a)...else if(typeof WScript!=a...
oh, und Sie können es auch versuchen, Golf zu spielen ...{
/}
/;
... die Idee ist , zu verwenden ,a
zu vermeiden , die Wiederverwendung"undefined"
, könnten Sie auch tun ,b=alert
und dannb("this is also still just javascript")
. sowiesoThe golden rule of CoffeeScript is: "It's just JavaScript"
(von coffeescript.org ), können Sie auch einige Jquery verwenden , um eine sechste Sprache .... hinzuzufügen[].map
anstelle von tunArray.prototype.map
?Java, Lisp, Whitespace, Intercal, PHP, Befunge-98; score = .0189
Dies war ursprünglich eine Antwort darauf .
quelle
public class...
verursacht ein Compilerproblem.Windows Batch, TI-Basic, Golf-Basic 84 , Quomplex und GTB 5 * 2/93 = 0,11
Wie es funktioniert
Windows Batch war am einfachsten, da
::
fängt ein Kommentar an. Ziemlich einfach zu implementieren.TI-Basic unterstützt keine Kleinbuchstaben oder Backticks und überspringt die Anweisungen
d`"GOLF-BASIC 84":g`1
, die Golf-Basic auswertet, zeigt die Nachricht an und leitet sie an Label 1 weiter, wo sie umgehend beendet wird. Ähnliches gilt für GTB mit seinem handlichen Displaycharakter~
. Übrigens wird eine Zeichenfolge ohne Anzeige eingegebenAns
. Wenn keine Anzeigebefehle folgen,Ans
wird ausgegeben (hier nicht der Fall).Quomplex hat sich am Anfang eingeschlichen, weil aufgrund seiner komplexen Syntax nicht viel übersprungen werden kann. Alles, was es tut, ist
"Quomplex"
die Ausgabe und dann für die Beherrschung des Programms hinzufügen ...Die Beherrschung der Programmiersyntax
Einfach genial. Quomplex ignoriert
:
und nimmt"'
und'"
als Zeichenketten und gibt den Stack aus und geht in einer unendlichen while-Schleife zugrunde ([]
). Währenddessen nehmen Golf-Basic und TI-Basic das Ganze"'*[]'"
als String, da'
es sich um einen mathematischen Operator handelt, nicht um einen String-Operator.quelle
:
bezeichnet ein Etikett in einer Batch-Datei, keinen Kommentar. Es stimmt jedoch, dass es nichts alleine ausführt.::
(trotzdem ein Label). Ich würde es lieber benutzen alsREM
, zumal es in TI-Basic benötigt wird.JScript, EcmaScript Edition 3, 5, 6, 2016, Knoten, Mozilla JavaScript (Punktzahl score 0,1342)
Diese Antwort basiert ursprünglich auf der Antwort von Peter Olson, jedoch ohne das CoffeeScript (da für das Golfen Whitespace-relevante Sprachen schrecklich sein können).
Ich habe auch Node , ES6 und ES2016 hinzugefügt und den Code ein wenig golfen, wodurch sich die ursprüngliche Punktzahl fast verdreifacht hat.
quelle
16 Sprachen, 348 Bytes, Score: 0,183908046
Dies funktioniert in C (gcc), C ++ (gcc), C (ecpp), C ++ (ecpp), C (clang), C ++ (clang), C (tcc), sh, dash, bash, zsh, ksh, csh, tcsh, rk und SIL.
quelle
JScript, EcmaScript Edition 3, 5, 6, 2016, 2017, Node, Mozilla JavaScript (Score = .174193548387), CoffeeScript (da Whitespace-signifikante Sprachen für das Golfen schrecklich sein können).
quelle