Ich hab leider keine Zeit, soetwas zu coden, aber die Idee mit
dem Array klingt doch schon einmal ganz vernünftig.
Jedoch sollte man die zu übersetzende Zahl nicht einfach als
Index für das Array verwenden, sondern - wie Du schon
angemerkt hast -die Zahl vorher zerlegen.
Das würde ich jedoch nicht über die String-Länge versuchen,
sondern über Modulo und Division.
Hörst Dich nach meinem alten Mathematiklehrer an
- wenn der Vergleich gestattet ist.
Modulare Arithmetik hin und her, die Sprache ist leider nicht so klar wie Mathematik. Wir haben andere Grundsätze:
EINS
ZWEI
DREI
VIER
FÜNF
SECHS
SIEBEN
ACHT
NEUN
ZEHN
ELF
ZWÖLF
HUNDERT
TAUSEND
MILLION/EN
MILLIARDE/N
einfache Kombinationen (13-19)
UND-Kombinationen (Zahlen 21-99)
„Dezi“-Zahlen (10,20,30,…,90)
(n)HUNDERT (n-te stelle: 3,6,9,12 …)
(n)TAUSEND (4.-6. Stelle)
(n)MILLION/EN (7.-9. Stelle Singular / ab 8. Stelle Plural)
(n)MILLIARDE/N (10.-12. Stelle Singular / ab 11. Stelle Plural)
Ich hoffe da fehlt jetzt nichts, habe ich gerade erst niedergeschrieben
wird kopiert und ähm… heute Nachmittag überprüft *g*.
Mathematisch da heranzugehen ist sooooooo nicht einfach 
Wir benötigen eigene Funktionen sowie Boolesche Abfragen und simple Dreier-Stückelungen (zumindest bis zu einem gewissen Grad, dann unterscheiden wir noch mit weiteren Stückelungen) um unsere Gesetze festzulegen.
Danach wird die Zahl zerlegt und als Wort dargestellt.
Mir schwirrt gerade schon die Idee im Kopf herum, das dürfte leichter und schneller sein.
Mein Mathematiklehrer sagte immer: „Ein Mathematiker schließt sich 4 Wochen mit einem mathematischen Problem in seinem Arbeitszimmer ein, nur um schließlich herauszukommen und den Beweis zu haben, das seine Formel NICHT funktioniert.“