>>>>,[[<]<<+>>>[>],]<[<]<+<[>>+<[-<-<+>>]<<++[->>+<<]>]>[-]>>[<[->.[-]<[->+<]<+[->+<]>>]++++++++++.[-]<[->+<]>>]
Pruébalo en línea!
Seguro en sabores de BF que no enmascara las celdas 256, no admite bytes nulos.
Elimine las flechas iniciales hacia la derecha si el sabor admite memoria negativa para 4 bytes guardados.
Explicación
El programa se divide en 3 etapas:
Stage 1: >>>>,[[<]<<+>>>[>],]<[<]
Stage 2: <+<[>>+<[-<-<+>>]<<++[->>+<<]>]>[-]>>
Stage 3: [<[->.[-]<[->+<]<+[->+<]>>]++++++++++.[-]<[->+<]>>]
Nivel 1
En esta etapa, colocamos todos los caracteres en la cinta, mientras contamos la cantidad de caracteres.
Esta es la cinta para la entrada abcdefghidespués de esta cinta:
000 009 000 000 095 096 097 098 099 100 101 102 103
^
El 009es el conde.
Para cada personaje, movemos el primer cero a la izquierda [<]y luego agregamos uno al conteo <<+>>>, y luego nos movemos al cero más a la derecha [>]para prepararnos para el siguiente personaje.
Etapa 2
Esta etapa hace la raíz cuadrada de la longitud almacenada en la segunda celda.
Sigue restando 1, 3, 5, 7, ...hasta que el número llega a cero, mientras se mantiene el control del número de iteraciones.
Funciona porque los números cuadrados se pueden expresar como 1 + 3 + 5 + ....
Etapa 3
Denote la raíz cuadrada de la longitud que se encuentra arriba como n.
Esta etapa genera ncaracteres a la vez y luego genera una nueva línea, hasta que se borra la cinta.