C -> Brainfuck 556 Bayt
Gereksiz boşluk hariç. Yazı tipi verilerini d[]
hex'den alıntılarda bir dizeye değiştirerek kolayca yüzlerce kaydedebilirim .
i,j,s,t,u,v,w,h;
char a[99],b[9999],k,d[]={0x6F,0x3B,0x5A,0xD5,0x7A,0x6A,0x5B,0x2F,0xD0,0x57,0xA1,0x1B,0xCF,0x4F,0x5F,0x6E,0x6D,0x4E,0x79,0x3A,0x1F,0x95,0x9F,0xA6,0x3D,0x76};
f(int z){
return d[a[j-1-t%(2*w*j)/w/2]-65]>>z&1?z=b[i*v/u],b[i++*v/u]=' ',z:' ';
}
main(){
for(scanf("%s",a);a[j];i++)a[j]-k?k++,b[i]='+':(b[i]='.',t+=(0xE7572B70967DB>>(a[j]*2-130)&3)+5,j++);
s=i/t+2;
u=t*(s-1);
v=i;
i=0;
w=2*s;h=2*s+1;
for(t=2*w*h*j;t--;)putchar(
t%(2*w*j)?
t/2/w/j%s?
t%s||!(t/4%s)?' ':f(t/s%4/2+t/2/w/j/s*2|7*(t/s%4==2))
:(
(t%s)&&(t/s+1&2)?f(4+t/2/w/j/s):' '
)
:10 //newline
);
}
Bu, bir hesap makinesi yazı tipi (düşük entropi, harf başına sadece bir bayt) ve https://codegolf.stackexchange.com/a/35801/15599'dan esinlenerek çok naif bir Brainfuck derleyicisi kullanır (eksi yerine artı kullanıyorum hariç). ilk for
döngü metni a
dizeye derler b
ve ayrıca 13 haneli onaltılık sihirli sayısını kullanarak (tüm karakterler 5-8 kontur) biçimlendirilmiş kodu çizmek için gereken kontur sayısını hesaplar.
Toplam program uzunluğu ve kontur sayısı göz önüne alındığında, kontur başına karakter sayısı hesaplanır (karakterler aynı veya artan sıradaysa çok küçük ve karakterler azalan sıradaysa çok büyük olabilir.)
Programın geri kalanının çoğu, boşluk veya konturlardan birinin yazdırılması gerekip gerekmediğine karar vermeye adanmıştır. İmleç kontur karesinin üzerindeyse, işlev f
bu konturun numarasıyla bağımsız değişken olarak çağrılır. Geçerli harf için bu kontur gerekli değilse bir boşluk veya varsa programdan bir karakter döndürür. ASCII sanatını tamamlamak için gereken karakter sayısı programdaki karakterlerden daha fazla olabileceğinden, bazen bir boşluk eklenir, dolayısıyla hesaplama yapılır b[i * v/u]
.
Yazı tipinde, mektuba bağlı olarak mevcut olan veya yok olan aşağıdaki gibi numaralandırılmış dört tek kontur ve dört çift kontur vardır.
6666 6666
3 7 2
3 7 2
3 7 2
3 7 2
5555 5555
1 7 0
1 7 0
1 7 0
1 7 0
4444 4444
Çıktı
Http://copy.sh/brainfuck/ adresinde test edin
ABC
+ ++ +++ ++++ + ++
+ + +
+ + + +
+ + +
+ + +
++++ + ++ +++ ++++
+ + + +
+ + + +
+ + + +
+ + + +
++++ + ++ ++. +.+.
DEF
+ ++ ++ + ++++ +++ ++ + ++++
+ + +
+ + +
+ + + +
+ + +
++ + +++ ++++ + ++
+ + +
+ + + +
+ + +
+ + +
++++ + ++ ++. +.+.
GHIJK
+ + +++ ++ +++ +++ ++
+ + + + +
+ + + + +
+ + + + + +
++ +++ + + +++
+ + + + + + + +
+ + + + + + +
+ + + + + + + +
+++ + + ++. +. +.+ .+.
lmnop
+ + +++ + + +++ + + +++ + + +++
+ + + + + + + +
+ + + + + + + +
+ + + + + + + + +
+ + +++
+ + + + + + + +
+ + + + + + + +
+ + + + + + + + +
+ . +.+ . + .+.
QRSTU
+ + +++ +++ +++ +++ ++
+ + + + + + + +
+ + + + + + +
+ + + + + + + +
+++ +++ + + +++ +++ +++
+ + + + +
+ + + + + +
+ + + + + +
+++ ++ +++ .+. +.+ .+.
VWXYZ
+ + +++
+ + + + + + + + +
+ + + + + + + + +
+ + + + + + + + +
+++ +++ + + +++ +++ ++
+ + + + + + + + +
+ + + + + + + +
+ + + + + + + +
+++ + + +++ +++ ++ .+. +.+ .+.
Kopyalanabilme
harflerin çoğunu rastgele sırada (artan değil) harf boyutu çok daha büyüktür ve harfler çok daha iyi görünür. Ne yazık ki dosya boyutları oldukça büyüyor. UCOPYRIGHTABLE tam kelimesini buraya yükleyemiyorum, COPYABLE izin verdiğim en uzun kelime hakkında.
+ +++++++++ +++++++++++ + +++++++++ +++++++++++ ++ ++++++++ +++++++++++ +++ +.+++++ +++++++.+.+ ++++ ++++.+ +++++++++++
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+++++++++ + +++++++++++ ++++++++++ +++++++++++ +++++++++++ ++++++++++ +++++++++++ + +++++++++ ++++++++++. +. ++++++++
+ + . + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+++++++++++ +++++++ +++ +++++++++++ ++++++++ ++ +++++++++++ +++++++++ + +++++++++++ ++++++++++ +++++++++++ +++++++++++ ++++++++++ ++++++++++.