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. :)
Antworten:
Retina 0.8.2 ,
4350 BytesProbieren Sie es online! E / A ist eine binäre Zeichenfolge. Kodieren Sie eine Binärzahl in der
y
Nähe einer anderen Binärzahla
wie folgt:a
kein enthalten ist.
, Suffix eins.a
eine ungerade Anzahl von Ziffern nach dem steht.
, wird das Suffix a0
.y
negativ, dann Suffix,11
sonst Suffix10
.y
wird das Suffix0
gefolgt von dieser Ziffer verwendet.y
enthalten ist.
, wird11
an dieser Stelle ein Suffix eingefügt, andernfalls wird es nach allen Ziffern in das Suffix eingefügty
.Erläuterung:
Koppeln Sie die Ziffern ab dem Binärpunkt. Wenn die Zahl eine gültige Kodierung ist, dekodieren Sie das letzte
1x
Ziffernpaar in ein.
und das vorletzte in ein optionales-
Zeichen. Vorhergehende Ziffern werden ignoriert.Dies sollte nur Paare, die mit beginnen
0
, so löschen Sie die0
s.quelle
-.
. Bedeuten diese Nullen oder sollen sie nicht produziert werden?*
s in+
s ändern , das würde mindestens eine Ziffer vor und nach dem garantieren.
?.
. Ich denke, ich kann vor dem.
allerdings noch eine Ziffer garantieren ..
ändert ihren Wert nicht, aber eine solche Änderung des Eingangs Ihrer Funktion ändert den Ausgang. Möglicherweise können Sie dies beheben, indem Sie davon ausgehen, dass der Eingang keine solchen Nullen hat. Wenn Sie Paare von rechts gruppieren, wie funktioniert dies "theoretisch für jede echte Eingabe"?11
in Schritt 2 angehängt werden.)Jelly , 71 Bytes
Probieren Sie es online!
Ein vollständiges Programm, das eine Zahl zur Basis 10 als Eingabe und Ausgabe verwendet und die Conway-Funktion zur Basis 13 implementiert, jedoch die Basis 7 und 10 anstelle von 10 und 13 verwendet. Sowohl für die Eingabe als auch für die Ausgabe wird ein Komma als Dezimaltrennzeichen verwendet. Die Ausgabe hat eine führende - für negative Zahlen.
quelle
Netzhaut ,
28252628 BytesProbieren Sie es online!
Erläuterung
Es kann führende und nachfolgende Nullen und Zahlen ohne einen ganzzahligen Teil ausgeben.
Es könnte 2 oder 3 Bytes mehr Golf gespielt werden, wenn ich verwenden könnte
4+
. Ich bin mir jedoch nicht sicher, wie ich das theoretische Ergebnis definieren soll, wenn die Eingabe einen endlosen Strom von4
s enthält.quelle