Laut Wikipedia ist eine stark Darboux-Funktion
eine, für die das Bild jedes (nicht leeren) offenen Intervalls die gesamte reale Linie ist
Mit anderen Worten, eine Funktion ist stark Darboux, wenn 3 beliebige reelle Zahlen , und sind. Es ist immer möglich, ein zwischen (verschieden) und so dass .
Für die Zwecke dieser Herausforderung werden wir stattdessen stark Darboux-Funktionen über die Rationalitäten betrachten.
Ihre Herausforderung besteht darin, ein Programm oder eine Funktion zu schreiben, die:
- gibt für jede Eingabe einer rationalen Zahl eine rationale Zahl als Ausgabe an,
- Gibt für eine bestimmte Eingabe immer die gleiche Ausgabe aus, und
- hat die stark Darboux-Eigenschaft.
Die Ein- und Ausgabe kann eine der folgenden sein:
- ein Zahlentyp mit willkürlicher Genauigkeit, falls Ihre Sprache eine hat (oder eine Bibliothek für eine hat, z. B. GMP).
- Eine Zeichenfolgendarstellung der Zahl, von der Sie annehmen können, enthält immer einen Dezimalpunkt und mindestens eine Ziffer auf beiden Seiten. Es kann in jeder Basis , aber Eingang und Ausgang müssen sich in derselben Basis befinden. Sie können einen beliebigen Zeichensatz für die Ziffern und den Dezimalpunkt verwenden (auch hier müssen sie zwischen Eingabe und Ausgabe konsistent sein).
Der Eingang wird immer eine abschließende Erweiterung der Basis . Für die Ausgabe, die abhängig von Ihrer Funktionsauswahl eine theoretisch nicht terminierende Erweiterung der Basis aufweisen kann, können Sie eine der folgenden Optionen auswählen:
- Ausgabestellen für immer.
- Nehmen Sie eine zusätzliche Ganzzahl als Eingabe und geben Sie mindestens so viele Ziffern aus.
- Geben Sie mindestens so viele Ziffern aus, wie in der Eingabe enthalten sind (die möglicherweise nachgestellte Nullen enthalten).
Beachten Sie, dass durch die Art der Herausforderung, dass die Konvention Nummern können darstellbare durch Standardnummerntypen angenommen werden wird nicht gelten, mit Ausnahme des zweiten Eingang in Option 2 oben beschrieben.
Um Schlupflöcher mit Funktionen zu vermeiden, die nur für nicht terminierende Rationen definiert sind, muss Ihre Einreichung in der Praxis in der Lage sein, eine Ausgabe zu erzeugen, die beliebig nahe an einem gewünschten Wert liegt . In Anbetracht der rationalen Zahlen , , und muss es formal eine rationale Zahl , die in der von Ihnen gewählten Basis endet, sodass und .
Nachfolgend finden Sie eine Beschreibung der Funktion von Conway base 13, um Ihnen einige Anregungen zu geben :
- Konvertiere zu Basis 13 und entferne den Dezimalpunkt.
- Wenn das Ergebnis die Form , wobei und nur aus Ziffern von 0 bis 9 bestehen, dann ist .
- Wenn das Ergebnis die Form , wobei und nur aus Ziffern von 0 bis 9 bestehen, ist .
- Andernfalls, .
Diese Funktion ist stark Darboux. Nehmen wir zum Beispiel an, wir wollen ein zwischen und so dass . Der Basis-13-Wert würde diese Anforderung erfüllen.
Ihre Übermittlung kann eine Implementierung dieser Funktion sein, obwohl ich vermute, dass es andere stark Darboux-Funktionen gibt, deren Implementierung viel kürzer ist. :)