Cree la implementación de FizzBuzz ofuscada más corta posible.
Para ser considerado ofuscado, debe satisfacer al menos uno de los siguientes:
- No contiene ninguna de las palabras "Fizz", "Buzz" o "FizzBuzz"
- No contiene los números 3, 5 o 15.
- Utilice cualquiera de los anteriores de manera engañosa.
Recuerde: el objetivo es ser corto y difícil de seguir.
El ejemplo de código que inspiró esta pregunta es el siguiente:
public class Default
{
enum FizzBuzz
{
Buzz = 1,
Fizz,
FizzBuzz
}
public static void Main(string[] args)
{
byte[] foo =
Convert.FromBase64String("IAmGMEiCIQySYAiDJBjCIAmGMEiCIQySYA==");
MemoryStream ms = new MemoryStream(foo);
byte[] myByte = new byte[1];
do
{
FizzBuzz fb;
ms.Read(myByte, 0, 1);
for (int i = 0; i < 4; i++)
{
fb = (FizzBuzz)(myByte[0] >> (2 * i)
& (int)FizzBuzz.FizzBuzz);
Console.Out.WriteLine( (((int)fb > 0) ? "" + fb : ""
+ ((ms.Position - 1) * 4 + i + 1)));
}
} while (ms.Position < ms.Length);
}
}
code-golf
obfuscation
restricted-source
mootinator
fuente
fuente
Respuestas:
GolfScript,
7569656059 caracteresEntonces, pensarías que GolfScript por sí solo ya está ofuscado, ¿verdad? Bueno, solo para seguir las especificaciones, decidí que el programa no contuviera "fizz", "buzz", ni los números 3, 5, ni 15. :-)
Sí, hay algunos números con múltiplos de 5, como 25, 35, 90, 100 y 6875. ¿Son pistas falsas? Tú decides. ;-)
fuente
Javascript 97 chars - sin números en absoluto
Números ¡Quién necesita número cuando tienes Javascript!
Nota: Hay un bucle infinito que te alertará sobre la secuencia.
Bonificación (666 caracteres)
(solozfor
se ha usado en todo el script).
fuente
z
.+!![]
es lo mismo1
y({}+"")[5]
es lo mismo quec
) y abusar de la notación de matriz para acceder al método (ej .:window['eval'](
es lo mismoeval(
).Python - 78 caracteres
fuente
PostScript, 96 bytes
Tan ofuscado parece basura al azar.
Uso:
$ gs -q -dNODISPLAY -dNOPROMPT file.ps
fuente
C ++: 886 caracteres
He tratado de ocultar el 'fizz' y el 'zumbido'. ¿Puedes verlos?
fuente
DC (
256255 bytes)Aquí está, intenté (con bastante éxito, si puedo decirlo yo mismo) ocultar todo excepto las letras y
+-[];:=
(que son vitales e imposibles de ofuscar). Hace segfault después de llegar aproximadamente a 8482 en mi máquina, pero eso tiene que ver con problemas de pila relacionados con la forma en que se implementa la recursividad. La solución en sí es correcta. 255 bytes si elimina el espacio en blanco (incluido para facilitar la lectura) Disfrute:fuente
Esto fue un poco complicado de insertar usando la sangría, así que una idea general:
Ruby, 4312 caracteres
https://gist.github.com/dzucconi/1f88a6dffa2f145f370f
fuente
Brainfuck -
626656Va de 1 a 255
fuente
Brainfuck, 708 personajes
La descripción de cómo funciona está disponible en mi pregunta de Revisión de Código
fuente
Haskell -
147142138 caracteresEl código tiene 19 caracteres más de lo que debe ser, ¡pero pensé que la estética valía la pena! Creo que los tres "objetivos" están satisfechos.
fuente
zZ' is applied to six arguments, but its type
(a0 -> b0 -> c0) -> [a0] -> [b0] -> [c0] 'solo tiene tres["1","2","3","4","5","6"...]
.bu
,fi
,zz
yzZ
. Estos podrían acortarse a nombres de una letra.𝔼𝕊𝕄𝕚𝕟, 33 caracteres / 92 bytes (no competitivo)
Try it here (Firefox only).
Este lenguaje es demasiado OP para desafíos de fuente restringida.
fuente
Javascript, 469 bytes
Esta fue probablemente la más divertida que he tenido.
Pruébalo aquí
fuente
Ruby - 165 caracteres
Este fue mi primer intento de código de golf. Tuve un montón de diversión. =)
fuente
Perl 6 (52 bytes)
Déjame poner una explicación aquí. Es el peor abuso de reglas que he cometido en esa tarea. Sé lo que estás diciendo: hay obvio
Fizz
yBuzz
aquí. Pero echemos un vistazo a las reglas.Esto evita
3
,5
y15
. Por lo tanto, es una solución válida y realmente corta.fuente
Scala, 295 caracteres
fuente
C (
237209 caracteres)Aunque no estoy seguro de que esto se ajuste al estándar C :)
Sin embargo, funciona. En Linux usando GCC, eso es.
fuente
Python 3 - 338
Este es mi primer golf. No es el más corto, ¡pero es bastante feo! Ninguno de los números prohibidos o literales de cadena. Firp, Burp!
fuente
Python - 157
No es el más corto, pero espero que el lector aprecie el estilo funcional puro y la extensibilidad a cuentas arbitrariamente largas.
fuente
K, 155
Podría jugar golf bastante pero preferiría que estuviera más ofuscado.
fuente
Python 2 - 54 caracteres
Python 3 - 56 caracteres
Si no desea que aparezca 'FizzBuzz':
Python 2 - 58 caracteres
Python 3 - 60 caracteres
O cómo vencer a GolfScript con Python;)
fuente
i=0
significa que elwhile
ciclo nunca se ingresa.i<20
.JavaScript 111 caracteres: sin números clave
a=b=c=0;while(a++<99)document.write((b>1?(b=0,"Fizz"):(b++,""))+(c==4?(c=0,"Buzz"):(c++,""))+(b*c?a:"")+"<br>")
fuente
C # - 218 caracteres
Podría acortarse si introdujera otros números así: (210 caracteres en total)
Decidí eliminar la palabra obvia fizz y zumbido e ir por un poco más de ofuscación. El segundo es más corto que el primero, pero es un poco más directo sobre lo que ocurre en la adición.
fuente
Esto no es exactamente golf, son alrededor de 120 líneas.
Pensé que haría algo que aprovechara todo el potencial divertido para un comportamiento indefinido con la administración de memoria C ++.
fuente
Ruby - 89 caracteres
No puedo tomar el crédito por esta brillantez, pero no podría dejar esta pregunta sin mi implementación ofuscada favorita :)
La implementación anterior fue escrita por David Brady y es de la gema rubí de fizzbuzz . Aquí está la explicación del código fuente:
Ruby - 87 caracteres
Aquí hay una versión diferente que usa una semilla más corta pero la tabla de búsqueda está en un orden diferente. Aquí está la explicación del código fuente:
fuente
Python, 1 línea, 376 caracteres
pep8-E501 ignorado. Solo funciona en python3.
fuente
Ruby alternativo (126 caracteres)
Corto y oscuro, justo como nos gusta. El 3 y el 5 están en realidad allí, pero no como literales enteros, así que creo que todavía cuenta.
Tenga en cuenta que esta es la versión más corta de Ruby sin literal 'Fizz', 'Buzz', 'FizzBuzz' aquí.
fuente
Squeak (4.4) Smalltalk 206 bytes
O el mismo algoritmo con mensajes menos explícitos, el mismo número de caracteres
Pido disculpas a Alan Kay por lo que le hice a Smalltalk.
Algunos de estos hacks son portátiles en dialectos Smalltalk, algunos requerirían una capa de compatibilidad Squeak ...
Tenga en cuenta que si ejecuta en un área de trabajo, puede omitir declaraciones | fi zz buz | y gana 14 personajes.
Si podemos permitirnos 357 caracteres (315 con vars de una sola letra), entonces es mejor evitar #to: do: loop: trivial
fuente
Haskell 226 bytes, incluido el espacio en blanco para el diseño;)
El código 'real' es de 160 bytes y se puede comprimir, pero pierde fizz-zumbido entonces.
Ejecútelo (para una buena salida):
Salida:
fuente
Perl
Uno que hice en 2009. Sin embargo, es bastante fácil de entender.
Editar: Maldición, usa "Fizz" y "Buzz!" :( Pensé que había cambiado eso. No importa entonces.
fuente
C 216 bytes
fuente