Zahlenspielerei mit 123

Was ich in Twitter gelesen habe:

Aufgabe:

Programm zum Testen erstellen. Gesetzmäßigkeit analysieren.

Was mir dazu gleich einfällt:

gerade_ungerade

Code:

zahl:64861287124425928 /* EINGABE */$
zahl:string(zahl)$
display(zahl)$
while zahl # "123" do (
liste:charlist(zahl),
ziffern:map(parse_string,liste),
ungerade:sublist(ziffern,oddp),
gerade:sublist(ziffern,evenp),
g:length(gerade),
u:length(ungerade),
gesamt:g+u,
zahl:sconcat(string(g),string(u),string(gesamt)),
display(zahl)
)$

Programmtest:

vroomlabtest

Was noch fehlt, ist die allgemeine Überlegung, warum es immer mit 123 enden muss.

Das ist aber leicht überlegt. Es muss bei einer dreistelligen Zahl enden (gerade,ungerade,gesamt). Und die muss 123 sein, 213 würde im nächsten Schritt auch 123 ergeben!