Tarefa:
Crie um programa ofuscado que imprima Hello World!
(exatamente assim). Seu programa pode não conter nenhuma string.
Regras:
- Você pode usar qualquer linguagem de programação que desejar.
- Torne-o o mais ofuscado possível
- Este é um concurso de popularidade ; portanto, a resposta com mais votos positivos vence.
Nota:
Esta não é uma duplicata desta pergunta . Aquele era código-golfe e tinha regras diferentes.
popularity-contest
obfuscation
hello-world
O médico
fonte
fonte
:)
/[dehlorw01]/
. Além disso, o comprimento foi classificado. Nisso, ele simplesmente não requer o uso de strings (e provavelmente nãochar[][]
, murcha). O comprimento não é contado, mas a criatividade é o principal fator decisivo, portanto, a etiqueta do concurso de popularidade .Respostas:
Python 2
Por acaso eu estava brincando com isso ontem, então:
Aqui está uma versão mais legível: http://codepad.org/UzSmoxF2
Notas:
Uma linha, expressão única (ou seja, nenhuma declaração de impressão).
Sem cordas, sem ints; somente funções, acesso a atributos, listas, tuplas, matemática básica, uma
True
e uma estrela-argumentos.Uso incorporado mínima (
__import__
,getattr
, echr
uma vez cada).A carga útil pode ser alterada facilmente. Aqui está o programa que escrevi para gerá-lo.
Edit: Eu escrevi uma explicação bastante substancial de como isso funciona no meu blog .
fonte
Javascript
Basta executar isso no console do navegador (por exemplo, no Firebug ou no Chrome Dev Tools).
fonte
C
Uma saudação multiplicativa:
fonte
PHP
Eu traduzi isso em uma única declaração, que acho que torna consideravelmente mais difícil decifrar. Esta versão usa apenas 13 caracteres únicos.
Versão original
14 caracteres únicos. Eu poderia criar um script para gerá-los e dublá-lo "PHPFuck", mas não acho que seria muito útil.
Como funciona
fonte
/H/
e contém/W/
.PHP
Aqui está um script PHP simples que gera
Hello World!
:Clique aqui para a demonstração.
fonte
;)
Espaço em branco
Wikipedia: Espaço em branco (linguagem de programação)
Intérprete on-line para testar a resposta
O programa envia os códigos de caracteres ASCII através das seguintes etapas (extraídas da barra lateral de depuração do interpretador):
fonte
Bash (no Linux)
Espero que seus scripts shell não sejam assim:
attr
arquivo é o primeiro/proc/$PID
com um nome de arquivo com 4 caracteresVeja se você consegue identificar o oculto
eval
.fonte
${__[${____}]}${__[${__________}]}${__[${_______}]}${__[${___}${____}]} -${__[${____}]}
(echo -e
) e substitua!
por\\${_________}${____}${___}
\\${_________}$[${______}${____}#${_____[${___________}+${__________}]}]
fazer um ponto de exclamação também ;-)_________
seria definido como0
(o que aconteceria se o script fossesource
d após um erro?).:
comando para limpar quaisquer condições de erro anteriores relatadas em$?
.GolfScript
Foi bastante desafiador criar e depurar isso. Não contém strings, apenas caracteres.
Emite:
Teste on-line
Explicação
Como isso funciona:
[' '(..4/++]
' '(
converte o espaço para o seu código ASCII:32
...
duplica32
duas vezes. Agora você tem três vezes32
.4/
divide o topo32
por 4. Agora você tem duas32
e uma vez8
.++
adiciona o32
,32
e8
. Você recebe72
, qual é o código ASCII paraH
.[' '(3*)))))]
' '(
converte o espaço em32
.3*
multiplica o32
com3
:96
)))))
aumenta96
com 5, você recebe101
, que é o código ASCII parae
.[6`(2*.]
6`(
fornece o código ASCII do char6
:54
2*
multiplica por 2, você recebe108
, que é o código ASCII paral
..
duplica ol
['1'..++~]
'1'..
coloca o caractere1
na pilha e duplica-o duas vezes.++
concatena os três caracteres e retorna a string111
~
converte-o no número inteiro111
, que é o código ASCII parao
[8 2?2/]
8 2?
calcula 8 2 , você obtém64
2/
divide por 2, você recebe32
, que é o código ASCII para um espaço.[' '(4/.(`\`\+~]
' '(
converte o espaço em32
.4/.
divide por 4, você recebe8
. O.
duplica.(`
decrementa o segundo8
e o converte em uma string.\
troca os dois principais elementos. O8
torna-se o elemento superior.`
converte o8
em uma string.\
troca os dois principais elementos. O7
torna-se o elemento superior.+
concatena as duas cadeias. Você recebe87
(como uma string).~
converte a string87
em número inteiro87
, que é o código ASCIIW
.['1'.+~2?10-]
'1'.
coloca o caractere1
na pilha e o duplica.+~
concatena os dois caracteres na string11
e a converte em um número inteiro.2?
calcula 11 2 , você recebe121
.10-
diminui121
com 10, você obter o código ASCII parao
:111
.[13(1)?8((0)))))*-]
13(
coloca12
na pilha.1)
coloca2
na pilha.?
calcula 12 2 , você recebe144
.8((
coloca6
na pilha.0)))))
coloca5
na pilha.*
multiplica6
e5
, você recebe30
.-
substratos144
com30
, você obtém114
, que é o código ASCII parar
[6`(1)*]
6`(
converte6
em um caractere e leva seu código ASCII:54
1)*
multiplica54
com2
, você obtém108
, o código ASCII del
['('(4/2?]
'('(
converte(
para seu código ASCII40
,.4/
divide40
por4
, você recebe10
.2?
calcula 10 2 , você recebe100
, que é o código ASCII parad
[' '()]
' '(
converte o espaço em seu código ASCII:32
)
incrementa o32
, você obtém33
, que é o código ASCII para!
+++++++++++
concatena todos os códigos ASCII em uma sequência.fonte
Brainf ***
Não tenho certeza se isso realmente conta como ofuscado, mas nunca usa mais de quatro símbolos de mais ou menos seguidos. Então tem isso.
fonte
Mathematica
Álgebra simples I matemática.
fonte
FromCharacterCode
quebra toda intriga ...FromCharacterCode
agora está ofuscado. Assim éCoefficientList
.C
Meta-ofuscado. A execução disso através do pré-processador fornece a você o seguinte:
Resultado:
Editar: adicionado sintaxe destacada para maior clareza. :-P
fonte
u *l=x;
efree(l);
me dá o mesmo resultado.Sábio
Explicação:
11382954456.digits(42)
converte 11382954456 na base 42 e fornece uma matriz de seus dígitos, que é[6, 1, 0, 5, 4, 3, 2]
Então, na
sum
verdade, dá a soma de 1 + 2 + 4 + ... + 32 + 64, que é 127Em seguida,
5105882569598991528047304.digits(...)
converte o número na base 128, que fornece a lista[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]
E esses são os códigos ASCII para a sequência a ser impressa.
fonte
Javascript (28187 caracteres)
Provavelmente não é a maneira mais curta de dizer olá a este mundo.
Gerado com JSFuck
fonte
C:
Saídas:
Hello World!
fonte
Malbolge
ou
Eu não tenho idéia de como isso funciona.
Fonte: http://en.wikipedia.org/wiki/Malbolge#.22Hello_World.21.22_in_Malbolge
fonte
Java
Aqui está. Você consegue entender como isso funciona?
Aviso: muito volátil. Pode quebrar espontaneamente no futuro.
fonte
;)
while((crazy = wtf.read()) != -1) stoned.write(crazy);
xDBefunge
Código que diz "Olá, Mundo!":
Código que diz "Olá Mundo!":
fonte
Befunge 98 - 7610 caracteres
Com base na minha resposta aqui: https://codegolf.stackexchange.com/a/15736/9498
Como bônus, esta resposta não usa números e não contém caracteres redundantes (ou seja, não há combinação de caracteres que possam ser removidos para produzir a mesma saída).
Experimente aqui (cole o código, substitua todas as instâncias
'/'[
por"/["
): http://www.quirkster.com/iano/js/befunge.htmlComo funciona:
Bônus extra: este post é tão longo que leva ~ 1 segundo antes que o stackexchange reconheça as alterações ao escrever este post.
fonte
Brainf ** k
É ofuscado e, no entanto, não poderia ser mais simples.
Porque quando você olha atentamente:
fonte
Javascript
Nenhum literal de número, literal de string e apenas uma função (não incluindo
console.log
)!Demonstração aqui .
fonte
[]
literal?No number literals
e eu pulei o número. Se você quiser, pode usarArray()
. Isso não seria literal. E isso tornaria mais confuso. Como alternativa, você pode usar+false
para o+[]
. Ou atéArray()-Array()
.Python 2.6 ou superior
Sem strings, apenas uma função polinomial simples .
fonte
Esta linguagem de programação
Você consegue adivinhar o que faz?
Talvez você precise ir mais fundo na toca do coelho para descobrir.
AVISO LEGAL: A linguagem de programação é mais nova que o desafio.
fonte
C
Os comentários existem apenas para enganar os leitores desinformados.
As constantes são construídas de modo que sua representação na memória (para sistemas little-endian) seja a mesma da string
"Hello World!"
. Em seguida, a matriz (decai para o ponteiro) é passada paraputs
, onde aputs
trata cegamente como achar*
e imprime tudo até que seja atingidaNUL
(que é codificada no último número).O código compila (com avisos) e imprime a saída esperada com o gcc 4.7.0, Windows 7 de 32 bits.
fonte
Java
Teste aqui.
Eu sei, meio chato usar caracteres em vez de strings. Estranho que ele funcione corretamente. Não é?
fonte
a[]
.C (honestamente, 90% C de pré-processador):
Somente com o gcc ou outro compilador que suporte a
__COUNTER__
macro.fonte
(Eu sei que não é realmente estranho .)
dc
Resultado:
fonte
dc<<<5735816763073005734600101863690P
C #
Nenhuma sequência de caracteres ou literal de caracteres, embora as funções de sequência sejam usadas. Ofuscação por podridão13.
fonte
UryybJbeyq
enumeração e aumentar o índice de qual letra pegar do nome ou redefinir o índice, com base em quanto tempo o nome é.C
Sem strings, sem matrizes, sem caracteres, muito poucas óbvias "constantes grandes de armazenamento de dados".
fonte
> <> (Peixe)
Fiz um pequeno labirinto para o ponteiro de instruções em> <>
Online> <> intérprete aqui
fonte
C ++
Resultado
fonte