C -> Brainfuck 556 byte
Escludendo gli spazi bianchi non necessari. Potrei facilmente salvare un altro centinaio cambiando i dati dei caratteri d[]da esadecimali a una stringa tra virgolette.
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
);
}
Questo utilizza un carattere calcolatrice (per bassa entropia, solo un byte per lettera) e un compilatore Brainfuck molto ingenuo ispirato da https://codegolf.stackexchange.com/a/35801/15599 (tranne che uso più invece di meno). il primo forciclo compila il testo nella astringa be calcola anche il numero di tratti necessari per disegnare il codice formattato, usando il numero magico esadecimale di 13 cifre (tutti i caratteri sono 5-8 tratti).
Data la lunghezza totale del programma e il conteggio dei tratti, viene calcolato il numero di caratteri per tratto (questo può essere molto piccolo se i caratteri sono uguali o in ordine crescente e molto grande se i caratteri sono in ordine decrescente).
Gran parte del resto del programma è dedicato a decidere se è necessario stampare spazi bianchi o uno dei tratti. Se il cursore si trova su un quadrato di tratto, la funzione fviene chiamata con il numero di quel tratto come argomento. Restituisce uno spazio se quel tratto non è richiesto per la lettera corrente, o un carattere dal programma se lo è. Poiché il numero di caratteri richiesti per completare l'arte ASCII può essere maggiore dei caratteri nel programma, di tanto in tanto viene inserito uno spazio, quindi il calcolo b[i * v/u].
Ci sono quattro tratti singoli e quattro tratti doppi nel carattere, numerati come segue, che sono presenti o assenti, a seconda della lettera.
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
Produzione
Test su http://copy.sh/brainfuck/
ABC
+ ++ +++ ++++ + ++
+ + +
+ + + +
+ + +
+ + +
++++ + ++ +++ ++++
+ + + +
+ + + +
+ + + +
+ + + +
++++ + ++ ++. +.+.
DEF
+ ++ ++ + ++++ +++ ++ + ++++
+ + +
+ + +
+ + + +
+ + +
++ + +++ ++++ + ++
+ + +
+ + + +
+ + +
+ + +
++++ + ++ ++. +.+.
GHIJK
+ + +++ ++ +++ +++ ++
+ + + + +
+ + + + +
+ + + + + +
++ +++ + + +++
+ + + + + + + +
+ + + + + + +
+ + + + + + + +
+++ + + ++. +. +.+ .+.
LMNOP
+ + +++ + + +++ + + +++ + + +++
+ + + + + + + +
+ + + + + + + +
+ + + + + + + + +
+ + +++
+ + + + + + + +
+ + + + + + + +
+ + + + + + + + +
+ . +.+ . + .+.
QRSTU
+ + +++ +++ +++ +++ ++
+ + + + + + + +
+ + + + + + +
+ + + + + + + +
+++ +++ + + +++ +++ +++
+ + + + +
+ + + + + +
+ + + + + +
+++ ++ +++ .+. +.+ .+.
VWXYZ
+ + +++
+ + + + + + + + +
+ + + + + + + + +
+ + + + + + + + +
+++ +++ + + +++ +++ ++
+ + + + + + + + +
+ + + + + + + +
+ + + + + + + +
+++ + + +++ +++ ++ .+. +.+ .+.
copiabile
con la maggior parte delle stringhe con lettere in ordine casuale (non crescente) la dimensione delle lettere è molto più grande e le lettere sembrano molto migliori. Purtroppo le dimensioni dei file diventano piuttosto grandi. Non riesco a caricare la parola completa UCOPYRIGHTABLE qui, COPYABLE è la parola più lunga che mi è consentita.
+ +++++++++ +++++++++++ + +++++++++ +++++++++++ ++ ++++++++ +++++++++++ +++ +.+++++ +++++++.+.+ ++++ ++++.+ +++++++++++
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+++++++++ + +++++++++++ ++++++++++ +++++++++++ +++++++++++ ++++++++++ +++++++++++ + +++++++++ ++++++++++. +. ++++++++
+ + . + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+++++++++++ +++++++ +++ +++++++++++ ++++++++ ++ +++++++++++ +++++++++ + +++++++++++ ++++++++++ +++++++++++ +++++++++++ ++++++++++ ++++++++++.