DMUG-Archiv 2009

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Neujahrsaufgabe: Basisverschiebung in Zahlendarstellungen

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/


Antworten:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html