>>>>>>-[[->>>+<<<]------>>>-]<<<[<<<]+[+[>>>]<<<->+[<[+>-]>[-<<<<->+>>------>>]<<<<]>>-[<<<].>>>-]
Que imprime exactamente
298333629248008269731638612618517353495058861384016275770860733328251135402804732197446995616017112134460464130233444058136509123809012106419446593183683387659250431692751255099808162970657410517657862174602556590616568690423540284801267472920128909691902547970614008613488242333460665145840144517097342073878746293059960326132795671583153307437896728515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
250255
El crédito va a @hvd en esta respuesta Brainfuck , ¡así que asegúrate de votarlo!
Explicación:
Iba a escribir una explicación propia, pero me di cuenta de que la explicación de @hvd ya estaba en punto, por lo que lo citaré aquí:
>>>>>>
es necesario para dejar un poco de espacio de trabajo
-
produce 255 ( ya que 0 - 1 = 255 cuando tenemos celdas de ajuste ).
[[->>>+<<<]------>>>-]
convierte esto en 255 copias del valor 250, dando una cinta que se parece a:
0 0 0 0 0 0 250 0 0 250 0 0 ... 250 0 0 [0]
<<<[<<<]+
mueve el puntero de datos hacia atrás y termina los datos iniciales:
0 0 0 [1] 0 0 250 0 0 250 0 0 ...
Luego viene el ciclo: [+...-]
inicialmente establece el 1 en un 2, que se vuelve a establecer en 1 al final del ciclo. El ciclo termina cuando el cuerpo del ciclo ya está configurado de 2 a 1.
Ahora, los números 2 250 250 250 ... 250 representan un contador, en la base 250, con cada número uno mayor que el dígito que representa.
[>>>]<<<
se mueve hacia la derecha. Como cada dígito está representado por un número distinto de cero, esto es trivial.
->+[<[+>-]>[-<<<<->+>>------>>]<<<<]>>-
disminuye el contador en 1. Comenzando con el último dígito: el dígito se reduce. Si sigue siendo positivo, hemos terminado. Si se pone a cero, ajústelo a 250 y continúe con el dígito anterior.
[<<<].>>>
mueve el puntero hacia atrás antes del dígito más a la izquierda, y este es un buen momento para imprimir un byte NUL. Luego vuelva a colocar exactamente el dígito más a la izquierda, para ver si hemos terminado.
Para verificar la corrección, cambie la inicial -
a +
para imprimir 250 1 bytes NUL, ++
para 250 2 , etc.
+[.]
¿Yo gano? : P