Rolf B: Informatik zum Dienstag

Beitrag lesen

Hallo 1unitedpower,

ok, hab eine Lösung basierend auf deinen Typen.

Benutzte Sprachfeatures: Abfragen (if und ?:), Funktionsaufruf mit Parametern, Rekursion, Bilden von Tupeln, Test auf Gleichheit, Merken von Werten in const-Speicherplätzen. Das war's.

Alternative Implementierungen zu verwenden ist so eine Sache. Angesichts deiner u0/b0/b1 Funktionen, die die Werte definieren, ist die rekursive Konstruktion fast schon vorgegeben. Heute habe ich dafür keinen Nerv mehr.

Ich stolpere - rein logisch - vor allem über eine dusselige Eigenschaft von b0 (value als Shortcut für binaryToNumber):

Es ist: value(n) == value(b0(n)), d.h. b0(n) codiert die gleiche natürliche Zahl wie n.

Aber n und b0(n) sind nicht gleich, denn: value(b1(n)) != value(b1(b0(n)))

Hatten wir das Thema mit führenden Nullen, die Durcheinander anrichten, letztens nicht schonmal bei den milliardenstelligen Ziffernfolgen?

Am liebsten wäre mir ja, wenn diese Definitionen gelten würden, mit value(n) als der von n codierte Zahlenwert:

b0(zero)     := zero
value(b0(n)) := 2*value(n)
value(b1(n)) := 2*value(n)+1

Aber ob damit unaryTobinary so einfach realisierbar ist, hmmm. Spieglein, Spiegelein...

Rolf

--
sumpsi - posui - obstruxi