Sua tarefa é escrever um programa que seja executado no maior número possível de idiomas, com o mínimo de caracteres possível. Para evitar soluções triviais, o programa deve imprimir o nome do idioma em que foi executado.
Pontuação
Seu programa deve funcionar em pelo menos 5 idiomas. A pontuação de um programa é dada como:
(number of languages)1.5 / (length of program)
A pontuação mais alta vence, não antes de 10 dias após a primeira resposta válida.
print()
Perl, Python, PHP, Processing e R seria considerado trivial ou é aceitável?n * n / length
Respostas:
Bash, C, C ++, Obj-C, Obj-C ++, Perl, PHP, Ruby, 183 caracteres
score ~ 0.1236
Para os códigos C e C, devo uma dívida a @ baby-rabbit. Os outros são inspirados pelo reconhecimento de que muitos idiomas têm uma
eval
declaração que aceita relutantemente sintaxe inválida.Envia o nome do idioma para a saída padrão. Às vezes, gera muitas mensagens de erro no erro padrão; portanto, suprima-as
2>/dev/null
conforme você as executa.A solução php gera
'PHP'
(incluindo as aspas simples), que podem estar distorcendo um pouco as regras.Última edição: raspou 12 caracteres a partir do insight que
$=
estáfalse
no Ruby,60
no Perl, eprint$=?...
é quase certamente um erro no Bash. Com mais 7 dicas do insight, o teste Perl / Ruby / Bash agora pode entrar em uma única declaração de avaliação.Se as regras puderem tolerar mais flexão, apresento essa solução de 8 caracteres e 43 caracteres (pontuação 0,5262)
para os quais a saída inclui o nome do intérprete para
php
,perl
,lua
,rscript
,ruby
,python
,cat
, erot13
.fonte
print("phperluarscriptrubypythontibasicatebg13");
Disp
ouOutput(
outext(
fichas, não háprint(
comando. E incluir uma sequência como parte de uma expressão com valor real resultará em umaERR:INVALID SYNTAX
exibição, não na sequência (nem mesmo como um valor de retorno). (Além disso, não existe;
; TI-Basic usa:
)echo Bash
comps -ocomm= -p$$
? Isso produzirá o nome do shell para pelo menos bash, zsh, ksh, csh e tcsh, talvez outros.C, C ++, BF, BASH e Ruby; 280 caracteres
A pontuação é de cerca de 0,040
Observe que estou usando um sistema Linux.
O código é executado ou compilado com os seguintes comandos (o nome do arquivo é
test.c
)C:
Quando executado com
./a.out
, a saída éC
C ++:
Quando executado com
./a.out
, a saída éC++
BATER:
Saídas:
BASH
Rubi:
Saídas:
Ruby
BrainF ***:
Verificado usando o seguinte:
Um depurador JS
Um intérprete gratuito
Meu intérprete
Saídas:
brainfuck
Observe que, se o depurador JS for usado, os dois primeiros sinais de menos precisarão ser removidos. Eles foram incluídos para compensar os sinais de mais na string literal
"C++"
. Este foi um projeto muito divertido, estou trabalhando para adicionar mais idiomas.Apenas para adicionar mais clareza, aqui estão as especificações do meu intérprete / compilador:
gcc versão 4.6.3
ruby 1.9.3p194 (revisão de 20/04/2012 35410) [x86_64-linux]
Lançamento do GNU bash, versão 4.2.24 (1) (x86_64-pc-linux-gnu)
NOTA
Usando o truque de @ baby-rabbit, consegui estender meu código para ser executável em 7 idiomas (sendo adicionados o objetivo-C e o objetivo-c ++). Esta não é a minha solução desde que copiei algumas, mas pensei em mostrá-la.
Atualização 9.12 Adicionada a execução do SmallTalk com o gnu-smalltalk!
SmallTalk, C, C ++, Objective-C, Objective-C ++, BASH, BF, Ruby; 384 caracteres (Pontuação: 0.059)
No código acima, você precisará renomear o arquivo para produzir o nome do idioma para objetivo-c, obj-c ++, ce ec ++.
fonte
brainf***
?if [ 1 = 2 ]
vez deif [ 1 == 2 ]
, porque scripts sem um hashbang são executados por sh, não por bash. sh pode ou não ser bash, no Debian é um dash.bash, c, c ++, obj-c, obj-c ++; 134 caracteres; score = 0.083
renomeie o arquivo e execute / compile como:
(onde cc é clang-421.10.42)
fonte
Lua, Ruby, VimL, Sed, Befunge (129 caracteres; ~ 0.087 pontos)
Não tenho certeza se isso conta - a parte sed está embutida na linha shebang, que é sem dúvida um truque para contornar a restrição. Isso também significa que ele deve ser executado como um executável e não diretamente com
sed
.Eu tive sorte que todos os outros idiomas (sem Befunge) ignoram automaticamente a linha shebang (embora aparentemente Ruby se recuse a executar o arquivo se ele tiver uma linha shebang que não contenha a string 'ruby').
Uso da amostra:
fonte
BF, Bash, Lote, C, vi (163 caracteres; pontuação 0 .0686)
(
<ESC>
significa código ASCII 27.)Eu testei isso, como um arquivo em lotes, com a versão do COMMAND.COM do MS-DOS 6.22. Por padrão, esse intérprete mistura linhas de código-fonte com a saída. Para impedir que isso aconteça, execute
echo off
antes de executar o arquivo em lotes.Para executar o código vi, que eu testei apenas usando o Vim, use o seguinte comando:
fonte
touch tmpfile
ou em: > tmpfile
vez decat /dev/null > tmpfile
.bash, zsh, ksh, csh, tcsh, 15 caracteres, pontuação 0,745
Este é um pouco exagerado, já que são todos idiomas relacionados, mas há diferenças:
fonte
Toda versão do Python, 18.37291 pontos
Tecnicamente válido, se você considerar que todas as versões do python são linguagens diferentes. Atualmente, existem 116 versões em python, que eu acredito que me dão uma pontuação em torno de 18.37291.
(Também entendo que, se isso não for considerado uma resposta válida, foi apenas por diversão)
fonte
Bash, C, Gawk, Perl, vi (145 caracteres; pontuação 77 .077)
(
<BS>
significa código ASCII 8.<ESC>
significa código ASCII 27.)Para executar o código vi, que eu apenas testei usando o Vim, use este comando:
fonte
Esta é uma seleção barata de idiomas, mas aqui vai:
CoffeeScript, JScript, Mozilla Javascript (≈ JavaScript 1.3), ECMAScript Edition 5, ECMAScript Edition 3, 223 caracteres, pontuação ≈ 0,0501)
fonte
a="undefined";if(typeof arguments!=a)...else if(typeof WScript!=a...
oh e você também pode tentar jogar golfe-lo ....{
/}
/;
... a idéia é usara
para evitar a reutilização"undefined"
, você também pode fazer issob=alert
e depoisb("this is also still just javascript")
. de qualquer maneiraThe golden rule of CoffeeScript is: "It's just JavaScript"
(de coffeescript.org ), você também pode usar alguns jQuery para adicionar um sexto idioma ....[].map
vez deArray.prototype.map
?Java, Lisp, Espaço em Branco, Intercal, PHP, Befunge-98; score = .0189
Esta foi originalmente uma resposta para isso .
fonte
public class...
causará um problema no compilador.Lote do Windows, TI-Básico, Golfe Básico 84 , Quomplex e GTB 5 * 2/93 = 0,11
Como funciona
O Lote do Windows foi o mais fácil, porque
::
inicia um comentário. Bastante simples de implementar.O TI-Basic não suporta letras minúsculas ou reticulares, fazendo com que pule as instruções
d`"GOLF-BASIC 84":g`1
, que o Golf-Basic evoca, Exibindo a mensagem e encaminhando para o Rótulo 1, onde é prontamente finalizado. Isso é semelhante para o GTB, com seu útil caractere de exibição~
,. A propósito, uma string sem exibição será inseridaAns
. Se não houver comandos de exibição a seguir,Ans
será emitido (não é o caso aqui).O Quomplex foi introduzido no início porque sua sintaxe complexa não permitirá que muito seja ignorado. Tudo o que faz é adicionar
"Quomplex"
à saída e, em seguida, ao domínio do programa ...O domínio da sintaxe de programação
Gênio puro. Quomplex ignora
:
e pega"'
e'"
como strings, deixando que ele produza a pilha e pereça em um loop while infinito ([]
). Enquanto isso, o Golf-Basic e o TI-Basic levam o todo"'*[]'"
como uma sequência, porque'
é um operador matemático, não um operador de sequência.fonte
:
indica um rótulo em um arquivo em lotes, não um comentário. É verdade que ele não executa nada por si só.::
(ainda é um rótulo). Prefiro usá-lo do queREM
, principalmente porque é necessário no TI-Basic.JScript, EcmaScript Edition 3, 5, 6, 2016, Node, Mozilla JavaScript (pontuação ≈ 0.1342)
Essa resposta é originalmente baseada na resposta de Peter Olson, mas menos o CoffeeScript (como linguagens com espaço em branco significativo podem ser horríveis para o golfe).
Também adicionei Node , ES6 e ES2016 e joguei o código um pouco, quase triplicando a pontuação original.
fonte
16 idiomas, 348 bytes, pontuação: 0.183908046
Isso funciona em C (gcc), C ++ (gcc), C (ecpp), C ++ (ecpp), C (clang), C ++ (clang), C (tcc), sh, dash, bash, zsh, ksh, csh, tcsh, rk e SIL.
fonte
JScript, EcmaScript Edição 3, 5, 6, 2016, 2017, Nó, JavaScript da Mozilla (pontuação = .174193548387), CoffeeScript (como linguagens com espaço em branco significativo podem ser horríveis para o golfe).
fonte