C -> Brainfuck 556 bajtów
Z wyłączeniem niepotrzebnych białych znaków. Mógłbym z łatwością zapisać kolejną setkę, zmieniając dane czcionki d[]z szesnastkowego na ciąg znaków w cudzysłowie.
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
);
}
Wykorzystuje to czcionkę kalkulatora (dla niskiej entropii, tylko jeden bajt na literę) i bardzo naiwny kompilator Brainfuck inspirowany https://codegolf.stackexchange.com/a/35801/15599 (z wyjątkiem tego, że używam plus zamiast minus.) pierwsza forpętla kompiluje tekst ado łańcucha b, a także oblicza liczbę pociągnięć wymaganych do narysowania sformatowanego kodu, używając 13-cyfrowej magicznej liczby szesnastkowej (wszystkie znaki to 5-8 uderzeń).
Biorąc pod uwagę całkowitą długość programu i liczbę uderzeń, obliczana jest liczba znaków na uderzenie (może być bardzo mała, jeśli znaki są takie same lub w porządku rosnącym, i bardzo duża, jeśli znaki są w porządku malejącym).
Większość reszty programu jest poświęcona podejmowaniu decyzji, czy należy wydrukować białe znaki lub jedno z pociągnięć. Jeśli kursor znajduje się nad kwadratem obrysu, funkcja fjest wywoływana z argumentem liczby tego obrysu. Zwraca spację, jeśli ten obrys nie jest wymagany dla bieżącej litery, lub znak z programu, jeśli jest. Ponieważ liczba znaków wymagana do uzupełnienia grafiki ASCII może być większa niż liczba znaków w programie, od czasu do czasu wstawiana jest spacja, stąd obliczenia b[i * v/u].
Czcionka zawiera cztery pojedyncze pociągnięcia i cztery podwójne pociągnięcia, ponumerowane w następujący sposób, które są obecne lub nieobecne, w zależności od litery.
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
Wynik
Test na http://copy.sh/brainfuck/
ABC
+ ++ +++ ++++ + ++
+ + +
+ + + +
+ + +
+ + +
++++ + ++ +++ ++++
+ + + +
+ + + +
+ + + +
+ + + +
++++ + ++ ++. +.+.
DEF
+ ++ ++ + ++++ +++ ++ + ++++
+ + +
+ + +
+ + + +
+ + +
++ + +++ ++++ + ++
+ + +
+ + + +
+ + +
+ + +
++++ + ++ ++. +.+.
GHIJK
+ + +++ ++ +++ +++ ++
+ + + + +
+ + + + +
+ + + + + +
++ +++ + + +++
+ + + + + + + +
+ + + + + + +
+ + + + + + + +
+++ + + ++. +. +.+ .+.
LMNOP
+ + +++ + + +++ + + +++ + + +++
+ + + + + + + +
+ + + + + + + +
+ + + + + + + + +
+ + +++
+ + + + + + + +
+ + + + + + + +
+ + + + + + + + +
+ . +.+ . + .+.
QRSTU
+ + +++ +++ +++ +++ ++
+ + + + + + + +
+ + + + + + +
+ + + + + + + +
+++ +++ + + +++ +++ +++
+ + + + +
+ + + + + +
+ + + + + +
+++ ++ +++ .+. +.+ .+.
VWXYZ
+ + +++
+ + + + + + + + +
+ + + + + + + + +
+ + + + + + + + +
+++ +++ + + +++ +++ ++
+ + + + + + + + +
+ + + + + + + +
+ + + + + + + +
+++ + + +++ +++ ++ .+. +.+ .+.
KOPIOWANE
przy większości łańcuchów z literami w losowej kolejności (nie rosnąco) rozmiar liter jest znacznie większy, a litery wyglądają znacznie lepiej. Niestety rozmiary plików stają się dość duże. Nie mogę przesłać pełnego słowa UCOPYRIGHTABLE tutaj, COPYABLE dotyczy najdłuższego dozwolonego słowa.
+ +++++++++ +++++++++++ + +++++++++ +++++++++++ ++ ++++++++ +++++++++++ +++ +.+++++ +++++++.+.+ ++++ ++++.+ +++++++++++
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+++++++++ + +++++++++++ ++++++++++ +++++++++++ +++++++++++ ++++++++++ +++++++++++ + +++++++++ ++++++++++. +. ++++++++
+ + . + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+++++++++++ +++++++ +++ +++++++++++ ++++++++ ++ +++++++++++ +++++++++ + +++++++++++ ++++++++++ +++++++++++ +++++++++++ ++++++++++ ++++++++++.