Commodore VIC-20 / C64 / 128 e TheC64Mini, 101 bytes BASIC tokenizados
Aqui está a lista ofuscada usando as abreviações de palavras-chave do 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
Aqui, para fins de explicação, está a lista simbólica não ofuscada:
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
A função fn b
declarada na linha zero aceita um parâmetro numérico do x
qual é AND
ed com o valor de b
; O SGN é então usado para converter x and b
para 1
ou 0
.
A linha um aceita uma entrada de string para a variável a$
e o loop inicia (indicado com i
) para o comprimento dessa entrada. b
representa cada bit do 6º ao 0º bit. c$
leva cada caractere da string na posição i
.
a linha 5 inicia o loop para testar cada posição de bit; right$
é usado na linha 6 para remover um problema de formatação automática quando o Commodore BASIC exibe um número, convertendo a saída de fn b
em uma string; asc(c$)
converte o caractere atual em seu código ascii como um valor decimal.
A linha 7 representa o próximo valor de bit. O loop j
é finalizado antes de imprimir um espaço, e o último loop i
é finalizado.