El desafío es escribir el código más elaborado, incrustado en el arte ASCII que lee e imprime "DFTBA". Por ejemplo, lo siguiente dice DFTBA:
oooooooooo. oooooooooooo ooooooooooooo oooooooooo. .o.
`888' `Y8b `888' `8 8' 888 `8 `888' `Y8b .888.
888 888 888 888 888 888 .8"888.
888 888 888oooo8 888 888oooo888' .8' `888.
888 888 888 " 888 888 `88b .88ooo8888.
888 d88' 888 888 888 .88P .8' `888.
o888bood8P' o888o o888o o888bood8P' o88o o8888o
Y lo siguiente, en bash imprime DFTBA
echo "DFTBA"
El desafío es escribir uno que haga las dos cosas.
Condiciones ganadoras
Respuestas válidas, (todas las condiciones a mi discreción)
- Se puede leer claramente como DFTBA
- Imprimir DFTBA cuando se ejecuta
- Debe ser funcional sin conexión a Internet.
- tener letras de igual altura
- no debe tener más de 80 columnas
- no debe tener más de 10 filas
Puntos (suma más alta gana)
- Filas * Columnas / 32
- Legibilidad: 25 para legible, 50 para muy claro
- 1 punto por cada carácter diferente que no sea un espacio en blanco utilizado
Restricciones
Estos pueden usarse para algo, por lo que se supone que todas las respuestas se liberan al dominio público. Si no puede, o elige no publicar su respuesta en el dominio público: publique un comentario / respuesta a la pregunta original que diga "La respuesta creada y / o compartida por mí, no puede considerarse de dominio público" .
¡Las respuestas de dominio no público también son bienvenidas! Solo asegúrese de especificar :-)
¿Qué es el DFTBA?
A veces significa "Don't Forget To Be Awesome", pero no siempre ... Larga historia ... Esta canción relacionada podría ayudar a explicar (o confundir).
fuente
Respuestas:
(He hecho una redacción completa aquí, ya que es bastante extenso cómo llegué a estos dos resultados)
Brainfuck, rango ASCII completo de 0 a 255: 80x10 = 800/32 = 25 + 25 + 219 = 269
Hay una línea en el medio de esta parte superior que no es del todo estrecha, pero esa es solo la pantalla aquí en CodeGolf. Si descarga el archivo original desde el enlace de arriba y verlo en el desarrollador Brainfuck Bloc de notas o Wordpad en lugar de, por ejemplo, que se verá correcta como éste .
Brainfuck, parte ASCII rango 0 a 127: 80x10 = 800/32 = 25 + 25 + 95 = 145
fuente
\s
expresiones regulares (espacios en blanco), cadena a matriz |> único |> longitud.Piet, puntaje incierto (153ish)
Entiendo que esto no se ajusta estrictamente a las especificaciones (que requieren el arte ASCII), sin embargo, el código fuente proporciona un DFTBA muy legible. El rastro está abajo.
Piet ignora todos los colores que no significan nada. Como resultado, utilicé el gris como el "color de comentario" genérico para delinear y similares. El gris no se interpreta (como verás en la traza). Quería dejar en claro qué píxeles estaban en el programa y cuáles no.
He usado 15 colores, que son 13 sin espacios en blanco. Tiene 89x32 píxeles, aunque podría comprimirse más. Usé 4 códigos de operación (restar, dividir, empujar y salidac). ¿Quizás si usara la puntuación como pensaría, 153?
Probablemente no garantiza un puntaje, pero fue un ejercicio interesante. ¡Nunca antes había usado Piet, nunca había hecho tanta programación de prueba y error! Necesitaba npiet ampliamente, y su rastro. ¡Todavía no puedo entender cómo funciona el movimiento del cursor con alguna estabilidad!
Cómo funciona:
fuente
Malbolge (
7180 x 10) / 32 + 25 + 94 =141.1875144Actualización: se agregó más espacio entre las letras para aumentar el puntaje.
Probado con el intérprete oficial de Malbolge. Por supuesto, no es realmente difícil imprimir texto estático con Malbolge. La codificación utilizada por Malbolge casi garantiza que tendrá todo el conjunto de caracteres ASCII imprimibles allí.
Explicación del código (la gente dijo que no lo entendía):
(Para obtener más información sobre Malbolge, consulte http://esolangs.org/wiki/Malbolge ).
Primero, normalicemos el código a las operaciones dadas en la página anterior:
También tenga en cuenta que después de cada ciclo de instrucción, la instrucción ejecutada se vuelve a codificar y el puntero de código y el puntero de datos se incrementan en 1.
Al principio,
C
(código ptr)= D
(datos ptr)= 0
. Esto significa[D] = 'b' (98)
y lai
instrucción está seleccionada. Entonces saltamos a la dirección 99. (C
primero se establece en 98 y luego aumenta), el puntero de datos ahora es 1.En 98 hay una cadena de NOP (
o
). Estos tienen el efecto de que todos ellos son re-codificado y queC
yD
se incrementan. La siguiente instrucción real (*
) se encuentra en la dirección 140, así que ahoraC=140
yD=42
.*
gira a la derecha (o división por tres) en lo que apunta el puntero de datos, y se almacena de nuevo en la memoria y en el acumuladorA
.[42] = 'x' (120), so A <- [42] <- '(' (40)
.Otra fila de NOP causa
C=154 (p)
yD=62 ( [D]='j' (106) )
.p
Es el operador loco . No voy a reproducir su tabla aquí, pero lo que sucede esA = [D] = crazy(A, [D])
.A
sigue siendo 42,[D]
es 106, lo que significacrazy(A, [D]) = 29504
.<
, que es la salida. Emite el acumulador, que es 29504, como un carácter ASCII.29504 % 256 = 68
, que esD
, así que ahora tenemos la D.fuente
Javascript (80 x 10) / 32 + 25? + 94 = 144
Código:
Demostración: http://jsfiddle.net/4hyyS/3/
Para agregar alguna explicación:
Primero mapeo
Number.prototype.toString
a cada letra minúscula:Esto me permite usar las letras minúsculas de manera eficiente.
A continuación, construyo la cadena 'DFTBA' mediante la conversión de números a caracteres, por ejemplo:
(Podría haber usado
fromCharCode
otoString(36)
para todos los personajes, pero eso habría sido demasiado fácil)Para completar caracteres adicionales y ofuscar aún más el código, utilizo algunos trucos para crear los números:
Etc.
Para los caracteres que no se usan en el código real, los solté en
/* ... */
cadenas o bloques de comentarios" ... "
.Comencé con una cuadrícula de 80x10, luego reduje eso a mis letras, luego ajusté mi código para que se ajuste a eso (también, se ve mejor en esta fuente, la última
|
es solo el cursor):fuente
Perl (75 x 7) / 32 + 25 + 59 ≈ 107.4
Te diría lo que hace, pero eso arruinaría el obfu, ¿no?)
fuente
count_char
pasar por encima y olvidé excluir espacios en blanco.C #, (71 * 7) / 32 + 25 + 45 = 85.53
¡Mi primera respuesta de Puzzles de programación ! C # realmente no es muy bueno para estos juegos ...
fuente
Python, (69 * 7) / 32 + 25 + 49 = 89
No es fácil hacerlo en Python debido a la sangría y el espacio en blanco. Así que hice una de muchas cosas para hacer que la sangría sea legítima:
La legibilidad aún se puede mejorar un poco ...
fuente
C, (55 * 8) / 32 + 25 + 55 = 93.35
Es bastante fácil agrandar las letras y usar algunos caracteres más.
fuente
Java
fuente