Seu objetivo : escrever um pedaço de código que resultará no resultado clássico de "Olá, mundo!" sendo impresso em STDOUT ou equivalente.
Regras : O código deve estar inteiramente impresso ASCII. Todo o código deve estar funcional - a remoção de qualquer caractere de contagem único deve alterar o resultado ou fazer com que o código não funcione. Todas as variáveis devem ser usadas após a atribuição. Literais de caracteres e cadeias devem ser necessários para a saída - ou seja, a substituição de qualquer literal de caractere ou qualquer caractere dentro de uma literal de cadeia por outro caractere deve ser capaz de alterar o resultado (e não via efeito da sequência de escape - substituindo caractere por barra invertida ou equivalente)
(NOTA: a regra final foi editada em)
Pontuação : é aqui que fica interessante. A pontuação mais alta ganha conforme determinado pelo número de caracteres, de acordo com as regras típicas do boliche de código. Mas o uso repetido de caracteres resultará em deduções de pontos. Especificamente...
- O uso repetido de qualquer caractere alfanumérico (az, AZ, 0-9) resultará em uma dedução de 3 pontos por repetição (o primeiro uso não resulta em dedução).
- O uso repetido da pontuação básica ([!? .-, ": ';]) - incluindo os colchetes - resultará em uma dedução de 2 pontos por repetição.
- O uso repetido de outros caracteres ASCII {`~ @ # $% ^ & * _ + = | \ /> <} - incluindo os colchetes - resultará em uma dedução de 4 pontos por repetição.
- O uso repetido de espaços, tabulações e novas linhas resultará em uma dedução de 1 ponto por repetição. Ou seja, apenas o primeiro uso de um espaço, guia ou nova linha contará para o seu total.
Nota: os comentários não contam para o total, apesar dos caracteres que marcam o início / fim de um comentário. Por exemplo, em C / C ++, se você tiver /* This is a comment */
, ele contará duas barras e dois asteriscos, mas nada entre eles.
Alguns exemplos (nota: usando Julia como linguagem de exemplo) ...
print("Hello, world!");
Total de caracteres visíveis: 22
Contém espaço: +1
Alfanuméricos repetidos: -12 para llor Pontuação
repetida: -2 para "
Pontuação final: 22 + 1-12-2 = 9
print("Hel",char(108),"o, wor",0x108,"d!"); # 0x108 makes a Uint8 that prints as ASCII
Total de caracteres: 43 (não conta nenhum caractere depois de #, que é o caractere de comentário)
Contém espaço: +1
Alfanuméricos repetidos: -18 para rr1008 Pontuação
repetida: -24 para () "" "" ",,,,,
Final pontuação: 43 + 1-24-18 = 2
xy=STDOUT
m="Hello, world!"
print(xy,m);
Total de caracteres visíveis: 37
Contém nova linha: +1
Contém espaço: +1
Alfanuméricos repetidos: -18 para xyllor Pontuação
repetida: -4 para ",
outro ASCII repetido: -4 para =
Pontuação final: 37 + 1 + 1-18-4 -4 = 13
Alguns códigos inválidos ...
x=2;print("Hello,world!")
Problema: x
está atribuído, mas não usado.
print("Hello,"*" world!")
Problema: *
é desnecessário, o resultado será o mesmo sem ele.
k=1
if k>0
print("Hello, world!")
else
print("abcghjmquvxyzABCDEFGIJKLMNOPQRSTUVWXYZ_+*-&|")
end
Problema: O segundo print
comando não será executado. Além disso, a remoção de caracteres entre aspas no segundo print
comando não altera a saída.
x="Hello, world!";
print(x)
Problema: a remoção da nova linha não altera o resultado ou causa o erro (em Julia, ponto e vírgula é necessário apenas se vários comandos estiverem na mesma linha, caso contrário, apenas suprime o valor de retorno).
print("Hellos\b, world!")
Problema: o s
personagem não afeta o resultado, pois é apagado \b
. Isso é aceitável se feito por meio de code ( "Hello",char(100),"\b, world!"
), mas não pode ser feito por meio de literais de string ou de caracteres.
Calculadora de pontuação conveniente - http://jsfiddle.net/4t7qG/2/ - graças a Maçaneta