Moin!
Bildlich:
Ich habe 1200 durchnummerierte Eimer, welche entweder voll oder leer sind.
Ich muss nun für bis zu 600 Eimer angeben welche voll sind.
Und das eben mit diesem Code.
Ist dabei die Information, für welche Eimer du den leer/voll-Zustand angibst, wichtig? Soll heißen: Wäre es ok, wenn du immer für alle 1200 Eimer deren Füllzustand angibst, oder ist es wichtig, dass du nur für die Eimer 2, 5, 19, 20, 21, 29,... den Füllzustand angibst.
Darüber hinaus ist noch interessant, wieviele Eimer durchschnittlich denn tatsächlich angegeben werden, denn logischerweise kann es sich bei nur wenigen aus 1200 Eimern lohnen, einfach nur die wenigen gefüllten oder nicht gefüllten aufzuzählen und den Rest als das Gegenteil zu betrachten. Die Info "Eimer 2 ist voll (und der Rest ist leer)" läßt sich eben wesentlich kürzer darstellen, als wenn man sämtliche Eimerinhalte aufzählen würde.
Aber es gibt nur Zwei Zustände: Voll/Leer, oder 0/1 oder true/false oder wie auch immer man es nennen will.(boolean eben)
Wenn es wichtig ist, ob der Eimer existiert oder nicht, und nur bei existierenden Eimern der Füllzustand wichtig ist, dann haben wir keinen binären Wert je Eimer mehr, sondern es werden mehr als 1 Bit erforderlich (wobei es nicht 2 Bit sind, weil der Füllzustand eines nicht existierenden Eimers ja nicht dargestellt wird, sondern nur 3 Zustände - keine Ahnung, ob sich das zu 1,5 Bit berechnet, das mögen die Informationstheoretiker ausrechnen).
Und wo wir gerade bei Informationstheorie sind: man kann natürlich auch noch zusätzliche Redundanz in den zu erstellenden Code einbauen, um zumindest Fehler erkennen oder gar korrigieren zu können.
Ich bin nur auf ein System gekommen, mit dem ich in 120 Stellen beliebig viele Zahlen bis 600 Speichern kann.
Eine weitere Frage ist, welche Darstellungsart der gefundenen Daten du dir vorstellst. Was spricht beispielsweise gegen eine vollständig binäre Darstellung mit Bytes von 0 bis 255 - das würde die Anzahl der Zeichen sehr verkürzen können. Aber auch eine Konvertierung einer derartigen Byte-Kombo mittels base64 würde zu einer zwar längeren, aber als Textstring darstellbaren Zeichenkombination führen, die vermutlich immer noch kürzer ist, als deine Basis-36-Zahl, weil einfach mehr mögliche Zeichen genutzt werden.
- Sven Rautenberg
My sssignature, my preciousssss!