[QUIZ#13] Zahlengewurschtel

OnlyFoo

Erfahrenes Mitglied
Vorwort: Diese Runde ist nochmal für alle da, die in der letzten Runde mit dem Ton generieren noch nicht klar gekommen sind. Dieses mal füge ich ans Ende auch noch eine kleine Erklärung und Beispiele in verschiedenen Sprachen an, wie man eine Wave-Datei auslesen + generieren kann, und wie man dann mit den Audiodateien arbeiten kann.


Problem: Die Na'vi haben gerade gelernt Zahlen im Dezimalsystem aufzuschreiben. Sie freuen sich total drüber. Neben den Zahlen von 0 bis 100 kennen sie auch größere Zahlen, wie z.B. die 1513, 748 und 31415926 und alle Zahlen, die dazwischen liegen.

Die Na'vi haben jedoch ein kleines Problem damit, diese Zahlen vernünftig auszusprechen. Momentan teilen sie Zahlen mit, indem sie sie Buchstabieren. Möchte ein Na'vi einem anderen Na'vi z.B. erzählen, dass ihr gemeinsames Ziel etwa 1513 Meter entfertn ist, sagt er "Eins Fünf Eins Drei Meter". Das ist natürlich nicht schön.

Aufgabe 1: Du jedoch kannst den Na'vi einen Sprach-Computer programieren, welcher ihnen hilft, Zahlen wie 1513 als "Eintausendfünfhundertdreizehn" auszusprechen. Dazu erwartet das Programm, dass du schreibst pro Zeile eine Zahl als Eingabe und gibt dann die entsprechende Zahl in geschriebener Darstellung wieder zurück. Lautet die Eingabe z.B:
Code:
15
102
851
so lautet die Ausgabe etwa
Code:
fünfzehn
hundertzwei
achthunderteinundfünfzig
.

Aufgabe 2: Das ganze könnte jetzt mit Befehlen erweitert werden, so dass z.B. die Uhrzeit ausgegeben werden könnte. Dafür gibt ein Na'vi ein: /clock und es wird ausgegeben: Fünfzehn Uhr Siebzehn. Weiterhin könnten andere Textteile erhalten bleiben. Schreibt ein Na'vi z.B: In 500m hinter dem nächsten Baum rechts kann der Sprach-Computer ausgeben: In Fünfhundert Metern hinter dem nächsten Baum rechts.

Aufgabe 3: Wir können ganz langsamen Na'vis beim Verstehen der neuen Zahlenwörter helfen. Schreiben wir z.B. fünfundzwanzig in den Sprachcomputer, so könnte er uns 25 ausspucken.

Interessante Erweiterung: Die Ausgabe der Wörter könnte z.B. mithilfe von echten Sounds in Wave-Dateien geschehen. Gibt man 52 ein, könnte eine Wave-Datei "52.wav" angelegt werden, die, vllt aus verschiedenen Samples zusammengebaut, den Text "fünfundzwanzig" enthält.

Dazu siehe auch http://olli.keller-delirium.de/quiz/audio für ein Beispiel zum Generieren von Audio-Dateien in Java und
für Informationen über WAVE-Dateien.
 
Zuletzt bearbeitet:

Alexander Schuc

crazy-weasel
Danke OnlyFoo für diese Quizrunde. :)

Gestern Abend hab ichs leider total verschwitzt, deswegen startet die Runde heute, und geht bis zum 17. Januar um ca. 20 Uhr!

Viel Spass allen Teilnehmern.
 

Erik

Erfahrenes Mitglied
Schöne Aufgabe (auch wenn ich die Lösung zumindest zu dem ersten Teil hier schon mal irgendwo gefunden zu haben meine ;) )

Ich werde es mal mit Java versuchen.


EDIT:
Da ja soweit ich weiß nun das diskutieren über Lösungswege erlaubt/erwünscht ist stelle ich mal eine Frage:

Wie kann ich es unter Java am geschicktesten lösen, dass ich um Aufgabe 2 zu lösen, einen String durchlaufe und alle Zahlen durch die Zahlenwörter ersetzten kann. Ich hatte jetzt erstmal an Regex gedacht um die Zahlen aufzuspüren und zu ersetzten. Allerdings muss ich ja für jeden Eintrag etwas anderes ersetzten und kann nicht stur alle Zahlen mit dem gleichen Wort ersetzten. Wäre schön wenn mir da einer weiter helfen könnte. Da mit For - Schleifen zu arbeiten erscheint mir ein wenig unschön ;)

Gruß
Erik
 
Zuletzt bearbeitet:
Ein lustiges Gefühl, auch mal auf der „anderen Seite“ zu stehen :) Danke für das Quiz! Ich hoffe ich finde genügend Zeit zur Ausarbeitung einer Lösung.

Grüße,
Matthias
 

OnlyFoo

Erfahrenes Mitglied
Weiß jemand wo man eine Liste mit den ersten, sagen wir, 100000 deutschen Zahlenwörter findet? - So zum abgleichen?
 

Alexander Schuc

crazy-weasel
Da ja soweit ich weiß nun das diskutieren über Lösungswege erlaubt/erwünscht ist stelle ich mal eine Frage:

Wie kann ich es unter Java am geschicktesten lösen, dass ich um Aufgabe 2 zu lösen, einen String durchlaufe und alle Zahlen durch die Zahlenwörter ersetzten kann. Ich hatte jetzt erstmal an Regex gedacht um die Zahlen aufzuspüren und zu ersetzten. Allerdings muss ich ja für jeden Eintrag etwas anderes ersetzten und kann nicht stur alle Zahlen mit dem gleichen Wort ersetzten. Wäre schön wenn mir da einer weiter helfen könnte. Da mit For - Schleifen zu arbeiten erscheint mir ein wenig unschön ;)

Wenn du die Positionen der Zahlen kennst, könntest den Text in mehrere Teile zerteilen, und zwar genau dort wo die Zahlen stehen. Wenn du diese dann umgewandelt hast, baust du dir den Text wieder zusammen, nur diesmal mit den Zahlnamen. (z.b.)

Wenn ihr Daten zum Testen bzw. Validieren braucht: Calculino.com - zahlen-in-worten
Einfach auf die Duden-Regeln schalten, hat allerdings ein Problem bei den Tausendern. Die sind getrennt, obwohls ja wohl zusammengehören sollten. :)
 

OnlyFoo

Erfahrenes Mitglied

ComFreek

Mod | @comfreek
Moderator
Als deutscher weiß man doch die Zahlen, oder?
Oder willst du einfach aus der Liste die Zeile lesen? Das ist ja dann einfach.:p