Votre tâche consiste à écrire un programme qui s’exécute dans le plus grand nombre de langues possible, avec le moins de caractères possible. Pour éviter des solutions triviales, le programme doit imprimer le nom de la langue dans laquelle il a été exécuté.
Notation
Votre programme doit fonctionner dans au moins 5 langues. Le score d'un programme est donné comme:
(number of languages)1.5 / (length of program)
Le score le plus élevé l'emporte, pas plus de 10 jours après la première réponse valide.
print()
de Perl, Python, PHP, Processing et R serait considérée comme triviale ou est-ce acceptable?n * n / length
Réponses:
Bash, C, C ++, Obj-C, Obj-C ++, Perl, PHP, Ruby, 183 caractères
score ~ 0.1236
Pour les codes de type C et C, j’ai une dette envers @ baby-lapins. Les autres sont inspirés par la reconnaissance du fait que de nombreuses langues ont une
eval
déclaration qui accepte à contrecoeur une syntaxe non valide.Affiche le nom de la langue sur la sortie standard. Parfois, génère beaucoup de messages d’erreur en cas d’erreur standard, supprimez-les dès
2>/dev/null
que vous les exécutez.La solution php affiche les résultats
'PHP'
(y compris les guillemets simples), ce qui peut être un peu fléchissant les règles.Dernière édition: rasé 12 caractères de l'insight qui se
$=
trouvefalse
en Ruby,60
en Perl et quiprint$=?...
est presque sûrement une erreur dans Bash. Le test Perl / Ruby / Bash peut maintenant entrer dans une seule déclaration eval, ce qui en réduit 7 autres.Si les règles peuvent tolérer plus de flexion, je présente cette solution en 8 langues et 43 caractères (score 0.5262).
pour lequel la sortie comprend le nom de l'interprète
php
,perl
,lua
,rscript
,ruby
,python
,cat
, etrot13
.la source
print("phperluarscriptrubypythontibasicatebg13");
Disp
ouOutput(
ou destext(
jetons, il n'y a aucuneprint(
commande. De plus, l'inclusion d'une chaîne dans une expression de valeur réelle donne un résultat différent deERR:INVALID SYNTAX
l'affichage de la chaîne (pas même comme valeur de retour). (En outre, il n'y a pas;
; TI-Basic utilise:
)echo Bash
parps -ocomm= -p$$
? Cela affichera le nom du shell pour au moins bash, zsh, ksh, csh et tcsh, peut-être d'autres.C, C ++, BF, BASH et Ruby; 280 caractères
Le score est d'environ 0,040
Notez que j'utilise un système Linux.
Le code est exécuté ou compilé avec les commandes suivantes (le nom du fichier est
test.c
)C:
Lorsqu'il est exécuté avec
./a.out
, la sortie estC
C ++:
Lorsqu'il est exécuté avec
./a.out
, la sortie estC++
FRAPPER:
Les sorties:
BASH
Rubis:
Les sorties:
Ruby
BrainF ***:
Vérifié en utilisant les éléments suivants:
Un débogueur JS
Un interprète gratuit
Mon interprète
Les sorties:
brainfuck
Notez que si le débogueur JS est utilisé, les deux premiers signes moins doivent être supprimés. Ils ont été inclus pour compenser les signes plus dans le littéral de chaîne
"C++"
. C'était un projet très amusant, je travaille sur l'ajout de plusieurs langues.Juste pour ajouter plus de clarté, voici les spécifications de mon interprète / compilateur:
gcc version 4.6.3
ruby 1.9.3p194 (révision 2012-04-20, révision 35410) [x86_64-linux]
GNU bash, version 4.2.24 (1) - release (x86_64-pc-linux-gnu)
NOTE DE CÔTÉ
En utilisant le tour de @ baby-rabbit, j'ai pu étendre mon code pour qu'il soit exécutable dans 7 langages (Objective-C et Objective-C ++ étant ajoutés). Ce n'est pas ma solution puisque j'en ai copié, mais je pensais la montrer.
Update 9.12 Ajouté l'exécution de SmallTalk avec gnu-smalltalk!
SmallTalk, C, C ++, Objective-C, Objective-C ++, BASH, BF, Ruby; 384 caractères (score: 0.059)
Dans le code ci-dessus, vous devrez renommer le fichier pour produire le nom de la langue pour objective-c, obj-c ++, c et c ++.
la source
brainf***
?if [ 1 = 2 ]
place deif [ 1 == 2 ]
, car les scripts sans hashbang sont exécutés par sh, pas bash. sh peut être ou ne pas être bash, sous Debian, c'est un tiret.bash, c, c ++, obj-c, obj-c ++; 134 caractères; score = 0,083
renommer le fichier et exécuter / compiler en tant que:
(où cc est clang-421.10.42)
la source
Lua, Ruby, VimL, Sed, Befunge (129 caractères; ~ 0,087 points)
Je ne sais pas si cela compte - la partie sed est enchâssée dans la ligne shebang, ce qui est sans doute un hack pour contourner la restriction. Cela signifie également qu'il devrait être exécuté comme un exécutable et non directement avec
sed
.J'ai eu la chance que toutes les autres langues (sans Befunge) ignorent automagiquement la ligne shebang (bien qu'apparemment Ruby refuse d'exécuter le fichier s'il contient une ligne shebang ne contenant pas la chaîne 'ruby').
Exemple d'utilisation:
la source
BF, Bash, Batch, C, vi (163 caractères; score 0,0686)
(
<ESC>
signifie code ASCII 27)J'ai testé cela en tant que fichier de commandes avec la version MS-DOS 6.22 de COMMAND.COM. Par défaut, cet interpréteur mélange les lignes de code source avec la sortie. Pour éviter cela, exécutez-le
echo off
avant d'exécuter le fichier de commandes.Pour exécuter le code vi, que je n'ai testé qu'avec Vim, utilisez la commande suivante:
la source
touch tmpfile
ou: > tmpfile
au lieu decat /dev/null > tmpfile
.bash, zsh, ksh, csh, tcsh, 15 caractères, score de 0,745
Celui-ci est un peu exagéré car ce sont toutes des langues apparentées, mais il existe des différences:
la source
Chaque version de Python, 18,37291 points
Techniquement valable, si vous considérez que toutes les versions de python sont des langages différents. Il existe actuellement 116 versions de python, ce qui me donne une note d'environ 18,37291.
(Je comprends aussi si cela n'est pas considéré comme une réponse valable, c'était juste pour le plaisir)
la source
Bash, C, Gawk, Perl, vi (145 caractères; score .077)
(
<BS>
signifie code ASCII 8.<ESC>
signifie code ASCII 27)Pour exécuter le code vi, que je n'ai testé qu'avec Vim, utilisez cette commande:
la source
C'est une sélection de langues bon marché, mais voici:
CoffeeScript, JScript, Mozilla Javascript (≈ JavaScript 1.3), ECMAScript Edition 5, ECMAScript Edition 3, 223 caractères, score 0.0501)
la source
a="undefined";if(typeof arguments!=a)...else if(typeof WScript!=a...
oh et vous pouvez aussi essayer de le jouer au golf ....{
/}
/;
... l’idée est d’utilisera
pour éviter de réutiliser"undefined"
, vous pouvez également le faireb=alert
et ensuiteb("this is also still just javascript")
. de toute façonThe golden rule of CoffeeScript is: "It's just JavaScript"
(de coffeescript.org ), vous pouvez également utiliser un jquery pour ajouter une sixième langue ....[].map
au lieu deArray.prototype.map
?Java, Lisp, espaces blancs, Intercal, PHP, Befunge-98; score = 0,0189
C'était à l'origine une réponse à cela .
la source
public class...
provoquera un problème de compilation.Windows Batch, TI-Basic, Golf-Basic 84 , Quomplex et GTB 5 * 2/93 = 0,11
Comment ça fonctionne
Le lot Windows était le plus facile, car il
::
commence un commentaire. Assez simple à mettre en œuvre.TI-Basic ne prend pas en charge les minuscules ni les backticks, ce qui l’évite de sauter les instructions
d`"GOLF-BASIC 84":g`1
que Golf-Basic évalue. Affichage du message et transmission à l’étiquette 1, où il se termine rapidement. Ceci est similaire pour GTB, avec son caractère d'affichage à portée de main,~
. À propos, une chaîne sans affichage sera inséréeAns
. Si aucune commande Affichage ne le suit, le résultatAns
sera affiché (pas le cas ici).Quomplex a été pris au début parce que sa syntaxe complexe ne permet pas d’échapper beaucoup. Il ne fait qu'ajouter
"Quomplex"
à la sortie, puis pour la maîtrise du programme ...La maîtrise de la syntaxe de programmation
Pur génie. Quomplex ignore
:
et prend"'
et'"
sous forme de chaînes, le laissant sortir la pile et périr dans une boucle while infinie ([]
). Pendant ce temps, Golf-Basic et TI-Basic prennent le tout"'*[]'"
comme une chaîne, car'
est un opérateur mathématique, pas un opérateur de chaîne.la source
:
indique une étiquette dans un fichier de commandes, pas un commentaire. C'est vrai qu'il n'exécute rien par lui-même, cependant.::
(toujours une étiquette). Je préfère l’utiliser queREM
, d’autant plus que c’est nécessaire dans TI-Basic.JScript, EcmaScript Edition 3, 5, 6, 2016, Node, Mozilla JavaScript (score ≈ 0.1342)
Cette réponse est basée à l'origine sur la réponse de Peter Olson, mais sans le CoffeeScript (en tant que langages importants en espaces peuvent être horribles pour le golf).
J'ai également ajouté Node , ES6 et ES2016 et j'ai un peu joué au code, triplant presque le score original.
la source
16 langues, 348 octets, score: 0.183908046
Cela fonctionne en C (gcc), C ++ (gcc), C (ecpp), C ++ (ecpp), C (clang), C ++ (clang), C (tcc), sh, tiret, bash, zsh, ksh, csh, tcsh, rk et SIL.
la source
JScript, EcmaScript Edition 3, 5, 6, 2016, 2017, Node, Mozilla JavaScript (score = .174193548387), CoffeeScript (en tant que langages non négligeables pouvant être horribles pour le golf).
la source