Liebe Freundinnen und Freunde von Zahlendarstellungen,
man fertige eine Funktion und ihre notwendigen Hilfsfunktionen, um in
einer Darstellung der natürlichen Zahl x zur Basis b > 1 alle b durch b +
1 zu ersetzen.
Man beachte: Die Koeffizienten enthalten b nicht, da sie aus {0, b - 1}
sind, aber die Potenzen der Basis können b enthalten :
x = 2 3^8 + 3^5 = 2 3^(2 * 3 + 2) + 3^(3 + 2) -> 2 4^(2 * 4 + 2) + 4^(4 +
2)
also
{3, {0, 0, 0, 0, 0, 1, 0, 0, 2}} -> {4, {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2}},
mit anderen Worten
In[17]:= 2 3^8 + 3^5
Out[17]= 13365
In[18]:= 2 4^(2 * 4 + 2) + 4^(4 + 2)
Out[18]= 2101248
In[27]:= deciS[baseS[3, 13365]]
Out[27]= 13365
In[28]:= deciS[hase[baseS[3, 13365]]]
Out[28]= 2101248
Die gesuchte Funktion heisst im Beispiel hase[]. baseS[b, x] wandelt x in
die Darstellung zur Basis b um und deciS[] erzeugt daraus zu
Kontrollzwecken die Dezimaldarstellung:
In[30]:= deciS[baseS[Prime[123], 10^9]]
Out[30]= 1000000000
Ein anderes Beispiel (zur Basis 2) ist 2^8 = 2^2^(2 + 1) -> 3^3^(3 + 1)
In[26]:= deciS[hase[baseS[2, 2^8]]] == 3^3^4
Out[26]= True
Die Lösung erfordert kaum Arbeit, aber passend zum Feiertag etwas Witz:
Frohes Neues Jahr!
Mit den besten Grüssen
Udo.
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/