Commodore VIC-20 / C64 / 128 y TheC64Mini, 101 bytes BASIC tokenizados
Aquí está la lista ofuscada usando las abreviaturas de palabras clave Commodore BASIC:
0dEfnb(x)=sG(xaNb):inputa$:fOi=1tolen(a$):b=64:c$=mI(a$,i,1):fOj=0to6
1?rI(str$(fnb(aS(c$))),1);:b=b/2:nEj:?" ";:nE
Aquí, para fines de explicación, está el listado simbólico no ofuscado:
0 def fn b(x)=sgn(x and b)
1 input a$
2 for i=1 to len(a$)
3 let b=64
4 let c$=mid$(a$,i,1)
5 for j=0 to 6
6 print right$(str$(fn b(asc(c$))),1);
7 let b=b/2
8 next j
9 print " ";
10 next i
La función fn b
declarada en la línea cero acepta un parámetro numérico x
que se AND
edita con el valor de b
; SGN se utiliza para convertir x and b
a 1
o 0
.
La línea uno acepta una entrada de cadena a la variable a$
, y el ciclo comienza (indicado con i
) a la longitud de esa entrada. b
representa cada bit del sexto al 0º bit. c$
toma cada carácter de la cadena en su posición i
.
la línea 5 inicia el bucle para probar cada posición de bit; right$
se utiliza en la línea 6 para eliminar un problema de formateo automático cuando Commodore BASIC muestra un número y convierte la salida de fn b
a una cadena; asc(c$)
convierte el carácter actual a su código ASCII como un valor decimal.
La línea 7 representa el siguiente valor de bit. El ciclo j
finaliza antes de imprimir un espacio, luego i
finaliza el último ciclo .