Alles gleichmäßig verteilen ist einfach
du rechnest alle Längen zusammen und verteilt es prozenzual auf die Gesamtlänge auf
Code:
möglich := 34 + 33 + 33
gesamt := Title.Length + Artist.Length + Album.Length
faktor := möglich / gesamt
Title.Length * faktor
Artist.Length * faktor
Album.Length * faktor
Das was kürzer ist, würde dann prozentual auch abgeschnitten. (alles gleichmäßig zusammenschieben, bis es passt)
Als nächste Verainte nimmt für die Aufteilung nur das, was übersteht,
also erstmal das passende (maximal 33 bzw. 34) abziehen und dann nur mit dem Rest rechnen
Code:
möglich := 34 + 33 + 33
normal := max(Title.Length,34) + max(Artist.Length,33) + max(Album.Length,33)
zuviel := max(Title.Length-34,0) + max(Artist.Length-33,0) + max(Album.Length-33,0)
nochmöglich := möglich - normal
faktor := nochmöglich / zuviel
max(Title.Length,34) + max(Title.Length-34,0) * faktor
max(Artist.Length,33) + max(Artist.Length-33,0) * faktor
max(Album.Length,33) + max(Album.Length-33,0) * faktor