Tarea:
Cree un programa ofuscado que imprima Hello World!
(exactamente así). Es posible que su programa no tenga ninguna secuencia.
Reglas:
- Puede usar cualquier lenguaje de programación que desee.
- Hazlo lo más ofuscado posible
- Este es un concurso de popularidad , por lo que gana la respuesta con más votos a favor.
Nota:
Este no es un duplicado de esta pregunta . Ese era el código de golf y tenía reglas diferentes.
popularity-contest
obfuscation
hello-world
TheDoctor
fuente
fuente
:)
/[dehlorw01]/
. Además, la longitud fue graduada. En esto, simplemente no requiere el uso de cadenas (y probablemente nochar[][]
, marchitarse). La longitud no se cuenta, pero la creatividad es el principal factor decisivo, por lo tanto, la etiqueta del concurso de popularidad .Respuestas:
Python 2
Estaba jugando con esto ayer, así que:
Aquí hay una versión más legible: http://codepad.org/UzSmoxF2
Notas:
Una línea, expresión única (es decir, sin declaración de impresión).
Sin cadenas, sin ints; solo funciones, acceso a atributos, listas, tuplas, matemática básica, una
True
y una estrella-args.El uso de orden interna mínima (
__import__
,getattr
ychr
una vez cada uno).La carga útil se puede cambiar fácilmente. Aquí está el programa que escribí para generarlo.
Editar: escribí una explicación bastante sustancial de cómo funciona esto en mi blog .
fuente
JavaScript
Simplemente ejecute esto en la consola del navegador (por ejemplo, en Firebug o en Chrome Dev Tools).
fuente
C
Un saludo multiplicativo:
fuente
PHP
He traducido esto en una sola declaración, que creo que hace que sea mucho más difícil de descifrar. Esta versión usa solo 13 caracteres únicos.
Versión original
14 personajes únicos. Podría hacer un script para generar estos y doblarlo "PHPFuck", pero no creo que sea muy útil.
Cómo funciona
fuente
/H/
y/W/
en ella.PHP
Aquí hay un script PHP simple que genera
Hello World!
:Haga clic aquí para la demostración.
fuente
;)
Espacio en blanco
Wikipedia: Intérprete en línea de espacios en blanco (lenguaje de programación)
para evaluar la respuesta
El programa introduce los códigos de caracteres ASCII a través de los siguientes pasos (tomados de la barra lateral de depuración del intérprete):
fuente
Bash (bajo Linux)
Espero que sus scripts de shell no se vean así:
attr
archivo es el primer archivo/proc/$PID
con un nombre de archivo de 4 caracteresVea si puede ver lo oculto
eval
.fuente
${__[${____}]}${__[${__________}]}${__[${_______}]}${__[${___}${____}]} -${__[${____}]}
(echo -e
) y reemplazar!
por\\${_________}${____}${___}
\\${_________}$[${______}${____}#${_____[${___________}+${__________}]}]
hacer un signo de exclamación también ;-)_________
se establecería en0
(¿qué sucedería si el guión fuerasource
d después de un error?).:
comando para borrar las condiciones de error anteriores informadas en$?
.GolfScript
Fue bastante difícil crear y depurar esto. No contiene cadenas, solo caracteres.
Produce:
Prueba en línea
Explicación
Cómo funciona esto:
[' '(..4/++]
' '(
convierte el espacio a su código ASCII:32
...
duplica32
dos veces Ahora tienes tres veces32
.4/
divide la parte superior32
por 4. Ahora tienes dos32
y una vez8
.++
suma el32
,32
y8
. Obtienes72
, que es el código ASCII paraH
.[' '(3*)))))]
' '(
convierte el espacio a32
.3*
multiplica el32
con3
:96
)))))
aumenta96
con 5, obtienes101
, que es el código ASCII parae
.[6`(2*.]
6`(
da el código ASCII del char6
:54
2*
lo multiplica por 2, obtienes108
, que es el código ASCII paral
..
duplica ell
['1'..++~]
'1'..
pone el char1
en la pila y lo duplica dos veces.++
concatena los tres caracteres y devuelve la cadena111
~
lo convierte al número entero111
, que es el código ASCII parao
[8 2?2/]
8 2?
calcula 8 2 , obtienes64
2/
lo divide por 2, obtienes32
, que es el código ASCII para un espacio.[' '(4/.(`\`\+~]
' '(
convierte el espacio a32
.4/.
lo divide por 4, obtienes8
. El lo.
duplica.(`
disminuye el segundo8
y lo convierte en una cadena.\
intercambia los dos elementos superiores. El se8
convierte en el elemento superior.`
convierte el8
a una cadena.\
intercambia los dos elementos superiores. El se7
convierte en el elemento superior.+
concatena las dos cadenas. Obtienes87
(como una cadena).~
convierte la cadena87
al entero87
, que es el código ASCII paraW
.['1'.+~2?10-]
'1'.
pone el char1
en la pila y lo duplica.+~
concatena los dos caracteres a la cadena11
y lo convierte en un entero.2?
calcula 11 2 , obtienes121
.10-
disminuye121
con el 10, se obtiene el código ASCII parao
:111
.[13(1)?8((0)))))*-]
13(
se pone12
en la pila.1)
se pone2
en la pila.?
calcula 12 2 , obtienes144
.8((
se pone6
en la pila.0)))))
se pone5
en la pila.*
se multiplica6
y5
, se obtiene30
.-
resta144
con30
, obtienes114
, que es el código ASCII parar
[6`(1)*]
6`(
se convierte6
en un char y toma su código ASCII:54
1)*
se multiplica54
con2
, obtienes108
, el código ASCII del
['('(4/2?]
'('(
convierte(
a su código ASCII,40
.4/
se divide40
por4
, obtienes10
.2?
calcula 10 2 , obtienes100
, que es el código ASCII parad
[' '()]
' '(
convierte el espacio a su código ASCII:32
)
incrementa el32
, obtienes33
, que es el código ASCII para!
+++++++++++
concatena todos los códigos ASCII en una cadena.fuente
Brainf ***
No estoy seguro de si esto realmente cuenta como ofuscado, pero nunca usa más de cuatro símbolos más o menos seguidos. Entonces ahí está eso.
fuente
Mathematica
Álgebra simple I matemática.
fuente
FromCharacterCode
rompe toda intriga ...FromCharacterCode
ahora está ofuscado. Así esCoefficientList
.C
Meta-ofuscado. Ejecutar esto a través del preprocesador le da esto:
Salida:
Editar: resaltado de sintaxis agregado para mayor claridad. :-PAGS
fuente
u *l=x;
yfree(l);
me da el mismo resultado.Sabio
Explicación:
11382954456.digits(42)
convierte 11382954456 en la base 42 y da una matriz de sus dígitos, que es[6, 1, 0, 5, 4, 3, 2]
Entonces, en
sum
realidad da la suma de 1 + 2 + 4 + ... + 32 + 64, que es 127Luego
5105882569598991528047304.digits(...)
convierte el número en base 128, lo que da la lista[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]
Y estos son los códigos ASCII para la cadena que se imprimirá.
fuente
Javascript (28187 caracteres)
Probablemente no sea la forma más corta de saludar a este mundo.
Generado con JSFuck
fuente
C:
Salidas:
Hello World!
fuente
Malbolge
o
No tengo idea de cómo funciona esto.
Fuente: http://en.wikipedia.org/wiki/Malbolge#.22Hello_World.21.22_in_Malbolge
fuente
Java
Aquí está. ¿Puedes entender cómo funciona?
Advertencia: muy volátil. Puede romperse espontáneamente en el futuro.
fuente
;)
while((crazy = wtf.read()) != -1) stoned.write(crazy);
xDBefunge
Código que dice "¡Hola, mundo!":
Código que dice "¡Hola mundo!":
fuente
Befunge 98 - 7610 caracteres
De acuerdo con mi respuesta aquí: https://codegolf.stackexchange.com/a/15736/9498
Como beneficio adicional, esta respuesta no usa ningún número y no contiene caracteres redundantes (es decir, no hay combinación de caracteres que puedan eliminarse de manera que produzca la misma salida).
Pruébelo aquí (pegue el código, reemplace cada instancia de
'/'[
con"/["
): http://www.quirkster.com/iano/js/befunge.htmlCómo funciona:
Bonificación adicional: esta publicación es tan larga que toma ~ 1 segundo antes de que stackexchange reconozca los cambios al escribir esta publicación.
fuente
Brainf ** k
Está ofuscado y, sin embargo, no podría ser más simple.
Porque cuando miras de cerca:
fuente
JavaScript
¡Sin literales de números, sin literales de cadena y solo una función (sin incluir
console.log
)!Demostración aquí .
fuente
[]
un literal?No number literals
, y me salté el número. Si lo desea, puede usarArray()
en su lugar. Eso no sería un literal. Y lo haría más confuso. Alternativamente, puede usar+false
para+[]
. O inclusoArray()-Array()
.Python 2.6+
Sin cadenas, solo una simple función polinómica .
fuente
Este lenguaje de programación
¿Puedes adivinar lo que hace?
Quizás tenga que profundizar en la madriguera del conejo para descubrirlo.
DESCARGO DE RESPONSABILIDAD: El lenguaje de programación es más nuevo que el desafío.
fuente
C
Los comentarios están ahí solo para engañar a los lectores desinformados.
Las constantes se construyen de modo que su representación en la memoria (para sistemas little-endian) sea la misma que la cadena
"Hello World!"
. Luego, se pasa la matriz (decae al puntero)puts
, donde laputs
trata a ciegas como achar*
e imprime todo hasta que llegueNUL
(que está codificado en el último número).El código compila (con advertencias) e imprime la salida esperada con gcc 4.7.0, Windows 7 de 32 bits.
fuente
Java
Prueba aquí.
Lo sé, algo cojo para usar caracteres en lugar de cadenas. Extraño que funcione correctamente. ¿No es así?
fuente
a[]
.C (sinceramente, 90% de preprocesador de C):
Solo con gcc u otro compilador que admita la
__COUNTER__
macro.fuente
(Sé que no es realmente extraño ).
corriente continua
Salida:
fuente
dc<<<5735816763073005734600101863690P
C#
No hay cadenas o literales de caracteres, aunque se utilizan funciones de cadena . Ofuscación por podredumbre 13.
fuente
UryybJbeyq
enumeración e incrementando el índice de qué letra tomar del nombre o restableciendo el índice, en función de la longitud del nombre.C
Sin cadenas, sin matrices, sin caracteres, muy pocas "constantes grandes de almacenamiento de datos" obvias.
fuente
> <> (Pescado)
Hice un pequeño laberinto para el puntero de instrucciones en> <>
En línea> <> intérprete aquí
fuente
C ++
Salida
fuente