Su tarea es escribir un programa que se ejecute en tantos idiomas como sea posible, con la menor cantidad de caracteres posible. Para evitar soluciones triviales, el programa debe imprimir el nombre del idioma en el que se ejecutó.
Puntuación
Su programa tiene que funcionar en al menos 5 idiomas. El puntaje de un programa se da como:
(number of languages)1.5 / (length of program)
El puntaje más alto gana, no antes de 10 días después de la primera respuesta válida.
print()
Perl, Python, PHP, Processing y R se consideraría trivial o es aceptable?n * n / length
Respuestas:
Bash, C, C ++, Obj-C, Obj-C ++, Perl, PHP, Ruby, 183 caracteres
puntaje ~ 0.1236
Para los códigos C y C, tengo una deuda con @ baby-rabbit. Los otros se inspiran en el reconocimiento de que muchos idiomas tienen una
eval
declaración que aceptará de mala gana una sintaxis no válida.Envía el nombre del idioma a la salida estándar. A veces genera muchos mensajes de error en el error estándar, así que suprímalos
2>/dev/null
mientras los ejecuta.Los resultados de la solución php
'PHP'
(incluidas las comillas simples), que pueden estar doblando las reglas un poco.Última edición: afeitó 12 caracteres de la información que
$=
estáfalse
en Ruby,60
en Perl, yprint$=?...
es casi seguro un error en Bash. Afeitado 7 más de la perspectiva, la prueba Perl / Ruby / Bash ahora puede entrar en una sola declaración de evaluación.Si las reglas pueden tolerar más flexión, presento esta solución de 8 idiomas y 43 caracteres (puntaje 0.5262)
para el que el resultado incluye el nombre del intérprete para
php
,perl
,lua
,rscript
,ruby
,python
,cat
, yrot13
.fuente
print("phperluarscriptrubypythontibasicatebg13");
Disp
oOutput(
otext(
fichas, no hay ningúnprint(
comando. E incluir una cadena como parte de una expresión de otro modo con valor real da como resultado unaERR:INVALID SYNTAX
, no la visualización de la cadena (ni siquiera como un valor de retorno). (Además, no hay;
; usos de TI-Basic:
)echo Bash
conps -ocomm= -p$$
? Esto generará el nombre del shell para al menos bash, zsh, ksh, csh y tcsh, tal vez otros.C, C ++, BF, BASH y Ruby; 280 caracteres
El puntaje es de aproximadamente 0.040
Tenga en cuenta que estoy usando un sistema Linux.
El código se ejecuta o compila con los siguientes comandos (el nombre del archivo es
test.c
)C:
Cuando se ejecuta con
./a.out
, la salida esC
C ++:
Cuando se ejecuta con
./a.out
, la salida esC++
GOLPETAZO:
Salidas:
BASH
Rubí:
Salidas:
Ruby
BrainF ***:
Verificado usando lo siguiente:
Un depurador JS
Un intérprete gratis
Mi intérprete
Salidas:
brainfuck
Tenga en cuenta que si se utiliza el depurador JS, entonces los dos primeros signos menos deben eliminarse. Se incluyeron para compensar los signos más en el literal de cadena
"C++"
. Este fue un proyecto muy divertido, estoy trabajando para agregar más idiomas.Solo para agregar más claridad, aquí están las especificaciones de mi intérprete / compilador:
gcc versión 4.6.3
ruby 1.9.3p194 (revisión 2012-04-20 35410) [x86_64-linux]
GNU bash, versión 4.2.24 (1) -release (x86_64-pc-linux-gnu)
NOTA LATERAL
Usando el truco de @ baby-rabbit pude extender mi código para que sea ejecutable en 7 lenguajes (agregando Objective-C y Objective-C ++). Esta no es mi solución, ya que copié algunas, pero pensé en mostrarlas.
Actualización 9.12 ¡Se agregó SmallTalk run con gnu-smalltalk!
SmallTalk, C, C ++, Objective-C, Objective-C ++, BASH, BF, Ruby; 384 caracteres (Puntuación: 0.059)
En el código anterior, deberá cambiar el nombre del archivo para generar el nombre del idioma para aim-c, obj-c ++, c y c ++.
fuente
brainf***
?if [ 1 = 2 ]
lugar deif [ 1 == 2 ]
, porque los scripts sin un hashbang se ejecutan mediante sh, no bash. sh puede o no ser bash, en Debian es dash.bash, c, c ++, obj-c, obj-c ++; 134 caracteres; puntuación = 0.083
cambiar el nombre del archivo y ejecutar / compilar como:
(donde cc es clang-421.10.42)
fuente
Lua, Ruby, VimL, Sed, Befunge (129 caracteres; ~ 0.087 puntos)
No estoy seguro de si esto cuenta: la parte sed está incrustada en la línea shebang, que podría decirse que es un truco para sortear la restricción. Esto también significa que debe ejecutarse como un ejecutable y no directamente con
sed
.Tuve la suerte de que todos los demás idiomas (sin Befunge) ignoren automáticamente la línea shebang (aunque aparentemente Ruby se niega a ejecutar el archivo si tiene una línea shebang que no contiene la cadena 'ruby').
Uso de la muestra:
fuente
BF, Bash, Batch, C, vi (163 caracteres; puntuación ≈ .0686)
(
<ESC>
significa código ASCII 27.)Probé esto, como un archivo por lotes, con la versión 6.22 de COMMAND.COM de MS-DOS. Por defecto, ese intérprete mezcla líneas de código fuente con la salida. Para evitar que eso suceda, ejecute
echo off
antes de ejecutar el archivo por lotes.Para ejecutar el código vi, que solo he probado usando Vim, use el siguiente comando:
fuente
touch tmpfile
o en: > tmpfile
lugar decat /dev/null > tmpfile
.bash, zsh, ksh, csh, tcsh, 15 caracteres, puntaje 0.745
Este es un poco exagerado ya que todos son lenguajes relacionados, pero hay diferencias:
fuente
Cada lanzamiento de Python, 18.37291 puntos
Técnicamente válido, si considera que todas las versiones de Python son idiomas diferentes. Actualmente hay 116 versiones de python, que creo que me dan una puntuación de alrededor de 18.37291.
(También entiendo que si esto no se considera una respuesta válida, fue solo por diversión)
fuente
Bash, C, Gawk, Perl, vi (145 caracteres; puntuación ≈ .077)
(
<BS>
significa el código ASCII 8.<ESC>
significa el código ASCII 27.)Para ejecutar el código vi, que solo he probado usando Vim, use este comando:
fuente
Esta es una selección barata de idiomas, pero aquí va:
CoffeeScript, JScript, Mozilla Javascript (≈ JavaScript 1.3), ECMAScript Edition 5, ECMAScript Edition 3, 223 caracteres, puntaje ≈ 0.0501)
fuente
a="undefined";if(typeof arguments!=a)...else if(typeof WScript!=a...
oh, y también puedes intentar jugar al golf ...{
/}
/;
... la idea es utilizara
para evitar la reutilización"undefined"
, también podría hacerlob=alert
y luegob("this is also still just javascript")
. de todos modosThe golden rule of CoffeeScript is: "It's just JavaScript"
(de coffeescript.org ), también puede usar un poco de jquery para agregar un sexto idioma ...[].map
lugar deArray.prototype.map
?Java, Lisp, Whitespace, Intercal, PHP, Befunge-98; puntuación = .0189
Esto fue originalmente una respuesta a esto .
fuente
public class...
causará un problema de compilación.Windows Batch, TI-Basic, Golf-Basic 84 , Quomplex y GTB 5 * 2/93 = 0.11
Cómo funciona
Windows Batch fue el más fácil, porque
::
comienza un comentario. Bastante simple de implementar.TI-Basic no admite letras minúsculas o comillas invertidas, lo que hace que omita las declaraciones
d`"GOLF-BASIC 84":g`1
, que Golf-Basic evalúa, muestra el mensaje y lo reenvía a la etiqueta 1, donde finaliza rápidamente. Esto es similar a GTB, con su carácter útil muestra,~
. Por cierto, se colocará una cadena sin pantallaAns
. Si no hay comandos de pantalla que lo sigan, seAns
generarán (no es el caso aquí).Quomplex se coló al principio porque su sintaxis compleja no permitirá que se salte mucho. Todo lo que hace es agregar
"Quomplex"
a la salida, y luego para el dominio del programa ...El dominio de la sintaxis de programación
Genio puro. Quomplex ignora
:
y toma"'
y'"
como cadenas, dejándolo salir a la pila y perecer en un ciclo while infinito ([]
). Mientras tanto, Golf-Basic y TI-Basic toman el todo"'*[]'"
como una cadena, porque'
es un operador matemático, no un operador de cadena.fuente
:
indica una etiqueta en un archivo por lotes, no un comentario. Sin embargo, es cierto que no ejecuta nada por sí solo.::
(aunque sigue siendo una etiqueta). Prefiero usarlo queREM
, especialmente porque es obligatorio en TI-Basic.JScript, EcmaScript Edition 3, 5, 6, 2016, Nodo, JavaScript de Mozilla (puntaje ≈ 0.1342)
Esta respuesta se basa originalmente en la respuesta de Peter Olson, pero sin el CoffeeScript (ya que los lenguajes significativos para espacios en blanco pueden ser horribles para el golf).
También agregué Node , ES6 y ES2016 y jugué un poco el código, casi triplicando el puntaje original.
fuente
16 idiomas, 348 bytes, puntuación: 0.183908046
Esto funciona en C (gcc), C ++ (gcc), C (ecpp), C ++ (ecpp), C (clang), C ++ (clang), C (tcc), sh, dash, bash, zsh, ksh, csh, tcsh, rk y SIL.
fuente
JScript, EcmaScript Edition 3, 5, 6, 2016, 2017, Node, JavaScript de Mozilla (puntaje = .174193548387), CoffeeScript (ya que los idiomas con espacios en blanco significativos pueden ser horribles para el golf).
fuente