Commodore VIC-20 / C64 / 128 dan TheC64Mini, 101 byte BASIC tokenized
Berikut adalah daftar yang dikaburkan menggunakan singkatan kata kunci 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
Di sini untuk tujuan penjelasan adalah daftar simbolik yang tidak dikaburkan:
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
Fungsi yang fn b
dideklarasikan pada baris nol menerima parameter numerik x
yang AND
ed dengan nilai b
; SGN kemudian digunakan untuk mengkonversi x and b
ke1
atau 0
.
Baris satu menerima input string ke variabel a$
, dan loop dimulai (dilambangkan dengan i
) ke panjang input itu. b
mewakili setiap bit dari bit ke-6 sampai ke-0.c$
mengambil setiap karakter string pada posisi i
.
baris 5 memulai loop untuk menguji setiap posisi bit; right$
digunakan pada baris 6 untuk menghapus masalah pemformatan otomatis ketika Commodore BASIC menampilkan angka, mengubah output fn b
menjadi string; asc(c$)
mengkonversi karakter saat ini ke kode ascii sebagai nilai desimal.
Baris 7 mewakili nilai bit berikutnya. Loop j
berakhir sebelum mencetak spasi, lalu loop terakhir i
berakhir.