Rolf B: Informatik zum Dienstag

Beitrag lesen

Hallo 1unitedpower,

ich gehe mal davon aus, dass die erste Zeile value(zero) = 0 lauten sollte

Hm. Darüber musste ich erstmal nachdenken. Mein b0(zero) := zero soll aussagen, dass ich eine Binärcodierung nicht mit einer 0 beginnen kann. Versuche ich es, passiert einfach nichts. Es verbietet allerdings auch die Konstruktion eines Codes für den Wert 0, das habe ich übersehen. Das ist bei deiner Typdefinition ebenfalls der Fall.

Die Binärkodierung ist damit aber auch nicht eindeutig

Das Witzige ist, dass die Forderung value(b0(n)) := 2*value(n) überhaupt nichts über die Art des Codes aussagt. Es verlangt nur, dass die Operation b0 einen Code liefert, dessen Wert dem Doppelten des Ausgangscodes entspricht. Das kann man dadurch implementieren, indem man an eine Binärzahl eine 0 anhängt. Oder anders, irgendwie, tief in einer Blackbox, z.b. unär codiert durch Verdoppeln der Ziffern. Aber nehmen wir an, b0 und b1 konstruieren eine Liste aus Einsen und Nullen. Dann kann ich eben nicht beliebig viele Nullen anhängen, ohne den Wert zu verändern.

Also lassen wir das, das ufert aus.

Rolf

--
sumpsi - posui - obstruxi