Seu objetivo é escrever "Olá, mundo!" (menos as aspas). Este é um concurso de popularidade , e a maioria dos votos ganha. O comprimento do código será usado para romper laços.
Tudo vale, desde que esteja dentro das seguintes regras:
- Todos os caracteres devem ser letras ou números, portanto, você pode usar apenas caracteres na cadeia "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".
- Todo o código que você usa deve estar em um arquivo, com exceção dos módulos / classes importados / como eles são chamados no seu idioma favorito.
- Somente as bibliotecas / estruturas padrão para o seu idioma de escolha são permitidas (por exemplo, o módulo Math do Python é permitido, mas Numpy, Scipy e Pygame não são). Permitirei o TkInter, pois é o padrão de fato para GUIs em Python.
- Nenhuma entrada é permitida, seja lendo a partir de stdin, lendo um arquivo, exibindo uma imagem ou lendo na web.
+10 pontos de brownie se você descobrir como fazê-lo em Java sem violar as regras.
Em suas marcas, prepare-se, código!
EDIT: chaves ({}), colchetes ([]) e parênteses (()) são permitidos, pois isso seria praticamente impossível para a maioria dos idiomas sem eles. Também estou removendo a regra de limite de caracteres. Espero que isso torne mais interessante.
EDIT ^ 2: espaço em branco também é permitido. Meu cérebro não está funcionando corretamente, desculpe. >. <
;
? Como posso escrever qualquer coisa em C?72 101 108 108 111 44 32 87 111 114 108 100 33{a.
requer o período no final do trabalho e um caminhou:
semelhante requer dois pontos. Sem.
e:
não somos nada.Respostas:
Perl
Alguns dizem que perl é uma linguagem cheia de ruído ascii e símbolos aleatórios como
$
... Isso não é verdade: Pfonte
s/PATTERN/REPLACEMENT/FLAGS
, mas você pode usar quase tudo o que quiser, em vez das barras. O código aqui usa "z" em vez de barras e transforma (nada) em "Helloq Worldm" e, em seguida, substitui "q" pelo chr 44 (usando o sinalizador \ e para avaliar REPLACEMENT aka "chr 44" como uma expressão) que é ", " Em seguida, substitui "m" pelo chr 33, um "!" E o imprime.q//
, qualquer delimitador pode ser usadoq!! q** q\\ q;;
,. Algumas exceções são que para fechar(
você usa)
,q() q[] q{} q<>
e que a utilização de um alfanumérico como um delimitador, ele deve ser afastado do operador a ambigüidade disallow, por exemploq qq
,q 66
. Os mesmos truques se aplicam a outros operadores de aspas.C
fonte
switch(putchar(72)){}switch(putchar(101)){}
etc.putchar(putchar(108))
(editar - BBC básico mudou-se para separar a resposta conforme sugerido. A maioria dos votos sobre isso é definitivamente para a resposta do LOGO.)
LOGOTIPO
Intérprete em http://www.calormen.com/jslogo/#
Saída (o triângulo verde é o cursor da tartaruga)
fonte
Applescript
Não há colchetes
[]
,{}
parênteses ou parênteses()
neste:A saída é:
fonte
set s to s as list
transforma"H"
em{"H"}
(uma lista). Em outras linguagens, como Java, geralmente é muito mais complicado fazer isso.Bater
Esse tipo de funciona, se você apertar os olhos:
fonte
banner Hello World
oufiglet Hello World
,
e!
. Caso contrário, eu usaria simplesmente velhoecho
.base64
Satisfaz as regras originais.
fonte
"
Pitão
Então, assumimos que todo mundo lê horizontalmente? Para os usuários que gostam de ler verticalmente:
fonte
sys.stdout.write
é a maneira padrão de gerar texto sem novas linhas na maioria das versões do Python (o comportamento é ligeiramente alterado no 3.0). Não podemos fazer isso aqui por causa dos períodos.Poliglota: HQ9 +, H9 +, HQ9 ++, CHIQRSX9 +, HQ9 + B e HQ9 + 2D (1 byte)
Obrigado @victor pela lista de idiomas.
fonte
OMGROFL
Sou um grande fã de línguas esotéricas. Felizmente, o OMGROFL é alfanumérico:
O
iz
comando define um valor para uma variável, neste casolol
,lool
eloool
serve como variáveis ...O
rofl
comando ecoa o equivalente ASCII ao número armazenado na variável.O
stfu
comando finaliza o programa;)fonte
COBOL
Foram necessárias algumas alterações para se tornar apenas uma fonte verdadeiramente alfanumérica.
A ID do PROGRAMA pode ser descartada. Você obtém um nome de programa gerado (consulte as mensagens).
O ARMAZENAMENTO DE TRABALHO pode ser descartado. Novamente o compilador geme.
Como essas duas linhas anteriormente tinham pontos / pontos ausentes ausentes, que não são mais relevantes agora que as descrições estão ausentes, o número de mensagens de erro é o mesmo de antes e ainda não afeta o código gerado para o programa.
Ao alterar o COMP-5 para COMP, as cláusulas VALUE não são mais permitidas, pois o COMP 9999 possui apenas quatro dígitos decimais, enquanto o COMP-5 é um binário de dois bytes com todos os valores de bits disponíveis.
Os valores nos MOVEs são os valores decimais que fornecem os valores binários que fornecem os pares de caracteres.
Mesmo que os campos COMP tenham quatro dígitos e não permitam cláusulas VALUE com mais de quatro dígitos, você pode usar mais dígitos no MOVE de um valor literal sem truncamento nesse ponto ... não me pergunte por que. A opção do compilador DIAGTRUNC (que eu desliguei) produzirá diagnósticos de aviso para eles.
A opção do compilador TRUNC (BIN) pode ser usada para tratar o COMP como COMP-5, mas os MOVEs são outra maneira de fazê-lo.
Por ser COBOL, a saída deve estar em MAIÚSCULAS (uma mentira, mas apenas por diversão).
OK, cedido, agora produz:
O qual, sendo um número ímpar de caracteres, exigiu algumas alterações adicionais, já que não podemos ter campos binários de números ímpares com este compilador. Olhe para essa linha de 13 Xs! Normalmente seria escrito como X (13), mas pode ser como eu mostrei ...
E ORTEXT é necessário (ou não OR, de qualquer maneira) como um nome, porque OR é uma palavra reservada para o compilador (significa OR, é claro).
Esses são os valores EBCDIC, não ASCII, pois estão sendo executados em uma caixa compatível com EBCDIC e Big Endian.
Oh, COBOL requer muitos pontos / períodos completos. Eu os deixei de fora (eles são banidos), então recebi muitas mensagens de compilação. Apenas disse ao compilador para gerar o código de qualquer maneira (nenhuma das mensagens está relacionada ao código do objeto).
Mesmo sem DIAGTRUNC, as mensagens agora têm até 17 ...
fonte
-
é permitidoRuby (usando apenas alnums e espaços em branco)
Resultado:
Hello, World!
fonte
Javascript
Use o console do navegador para testar.
fonte
Javascript
fonte
ferNANDo
fonte
Rebol
Única solução alfanumérica:
Acima está uma atualização que usa a excelente sugestão do Dr. Rebmu de
add space 1
(que produz!
) para chegar a todos os personagens.Abaixo está a versão original:
Versão mais curta com suportes:
E versão ainda mais curta com aparelho:
E versão mais curta com suportes e chaves:
A Rebol usa chaves
{}
para cotação de várias linhas. Tão completamente válido sob mudanças de regras, mas não com todo o espírito (IMHO), como minhas duas primeiras respostas acima.NB Imprimir o
!
foi uma dor!O Rebol permite e usa caracteres de pontuação rotineiramente para nomes de funções e tipos de dados. Portanto, opções como
to-char 33
outo char! 33
não seriam permitidas sob as regras (mesmo que essas pontuações não sejam operadores par se).Felizmente, encontrei uma maneira atrevida, transformando o objeto do sistema Rebol:
make object! [...]
em uma corda e em uma cereja, escolha!
isso :)Atualização: E agora também a vírgula escolhida pela cereja no texto da licença no objeto do sistema.
fonte
!
não é permitido-
ou!
então você pode agora remover o voto para baixoC
Usa apenas caracteres alfanuméricos, espaços e chaves {}, colchetes [] e parênteses ().
printf () aceita um char * como argumento, mas como não podemos usar aspas ("), eu tipecast a string como uma matriz longa e longa. Os valores vistos aqui são strings ASCII, em little endian (0x48 = H, 0x65 = e, 0x6c = l e assim por diante.] Eu o estimei por muito tempo [], pois dessa forma posso passar um argumento de 8 bytes e, portanto, usar apenas duas chamadas printf () em vez de quatro.
fonte
BBC BASIC
Emulador em bbcbasic.co.uk
Separado da minha resposta do LOGO.
O caminho fácil
Os números à direita são apenas códigos ASCII. É exatamente o mesmo que imprimir. Se me permitisse uma vírgula, poderia fazê-lo em uma única linha (
VDU 72,101,108,etc.
)Uma maneira mais criativa
fonte
Mathematica
fonte
DC
O DC é a ferramenta perfeita para o trabalho.
O
P
comando DCs exibe um número da pilha e envia sua representação bruta do computador para o STDIO. Vendo como5735816763073854918203775149089 = 0x48656C6C6F2C20576F726C6421
, que é representado como0x21, 0x64, 0x6C... = 'H', 'e', 'l'...
em uma arquitetura little-endian, ele geraHello, World!
.fonte
16i48656C6C6F2C20576F726C6421P
JavaScript!
E eles disseram que isso não poderia ser feito ... Sem operadores de atribuição, sem concatenadores, sem aspas! Arghhhh!
Não temas ... Pois a força é
with
você ...fonte
Javascript
Atualização: Conseguiu cortar um monte de personagens introduzindo também uma função Mundial.
Outra solução Javascript que grava no console.log:
Inspirado por esta entrada .
Primeiro, defino funções nomeadas Olá e Mundo. Isso será usado mais tarde.
Então inicio minha cadeia de aninhados. O
with (console)
ewith (String)
são usados para que eu possa chamar mais tardeconsole.log
eString.fromCharCode
sem usar um ponto.O plano agora é construir a string
Hello, World!
abusando de aninhadas. Cada vez que chamei concat (), a string resultante será o contexto no próximo with-block. Tomo um atalho para"Hello"
acessar rapidamente aname
propriedade daHello
função. Então concatenar os caracteres de vírgula e espaço usandoString.fromCharCode
.O próximo truque é obter a
"World"
parte da string. Não posso usar o mesmo método que costumava obterHello
, pois não posso invocar World.name. Em vez disso, coloquei essa lógica dentro do método World e a invoco.Por fim, anexo o ponto de exclamação final e envio o resultado diretamente para a função de log, que é obviamente console.log.
fonte
Perl
Em um Perl moderno (5.10 ou mais recente):
No Perl mais antigo:
Ambas as soluções acima usam o
q
operador de aspas do Perl e permitem delimitadores seletivos para citar uma string, por exemplo.q{}
q[]
q()
q//
Esta solução requer a alteração de regra que permite chaves, parênteses ou parênteses. Portanto, apesar de totalmente válido, acho que uma
mniip
excelente resposta Perl está mais no verdadeiro espírito das regras (+1).No entanto, tirando uma folha da
mniip
resposta, minha solução poderia ser escrita assim:e, embora seja mais difícil, funciona.
fonte
syntax error at -e line 1, near "say chr"
Perl
fonte
Pitão:
causa "Olá, mundo!" para aparecer na sua tela. Não acredita em mim? Experimente você mesmo! Além disso, na verdade, isso não usa a web, abre um navegador que pode procurar um site.
fonte
dc, (26 bytes para os jogadores)
Espaço em branco e
[]
colchetes agora são permitidos:Resultado:
fonte
Rebmu , 46 caracteres
É paralelo à solução da @ dragetun no Rebol (como o Rebmu é uma ferramenta de ensino Rebol / Red que é um "dialeto" que visa chamar a atenção para os idiomas, agitando no Code Golf. :-P)
No entanto, para obter os personagens ausentes, fiz algo mais óbvio. Acabei de adicionar espaço, em vez de procurar e analisar as strings do sistema. Você pode adicionar espaço 1 para obter o caractere literal # "!" e adicione espaço 12 para obter o caractere literal "", ".
Se rodarmos isso, podemos ver "silencioso":
Qual é razoavelmente logial:
fonte
Espaço em branco
Ok, podemos usar espaço em branco. Ele usa apenas
Space
,Tab
,LineFeed
e ignora quaisquer outros caracteres.Com comentário:
S
,T
ouL
meiosSpace
,Tab
ouLineFeed
respectivamente.Com destaque: http://en.wikipedia.org/wiki/Whitespace_(programming_language)#Sample_code
fonte
T-SQL, 52
Ah, isso é melhor! Conversão binária direta, apenas 52 caracteres.
Anteriormente...
Existe uma solução muito mais inteligente e eficiente para isso que funcionaria se pudéssemos usar
=
e+
( Consultar dados internos padrão no msdb e usá-lo para construir uma cadeia de consulta compatível com EXEC)Mas como não podemos, você recebe essa abordagem ingênua:
fonte
Pitão:
Pfff, quem precisa da parte numérica do alfanumérico?
Isso depende da localidade, portanto, sua milhagem pode variar. No entanto, se você realmente deseja replicar esse resultado, poderá usar o seguinte em vez das instruções de importação:
(isso não faz parte do meu envio, é apenas compartilhar meus locais para recreação)
fonte
J - 73 char
Isso pode ser feito, afinal!
Aqui está a questão sobre J. A maioria das primitivas é pontuação ASCII, seguida por até dois pontos ou dois pontos. As primitivas que não são feitas de pontuação são um caractere alfanumérico seguido de dois pontos ou dois pontos. Portanto, não é permitido nenhum deles, exceto
{ } [ ]
.[
e]
são verbos de identidade e, portanto, são inúteis.Felizmente,
{
indexa matrizes, portanto, se tivéssemos, digamos, uma string com cada caractere ASCII (a.
chamado alfabeto ), poderíamos extrair as letras pelos seus pontos de código ASCII. Também temos uma maneira alternativa de criar strings ,0 : 0
e depois outras coisas)
; o cólon no qual tem um alias na biblioteca padrãodef
,.Depois, há um verbo na biblioteca padrão
show
, que fornece a representação interna de um verbo se você passar o nome como uma string. Há outro verbodo
, que avaliará uma string. Portanto, se pudermos retirar uma.
de qualquer representação, podemos avaliar isso e retirarHello, World!
.Nosso salvador vem na forma de
take
, um apelido para{.
isso tem uma
em seu nome.show'take'
retornarátake=: {.
, então temos a nossaa.
e, portanto, uma solução.Podemos nos livrar
{
usando o equivalente essencialmentepick
da biblioteca padrão, mas o ponto final não pode ser evitado.fonte