Diese Herausforderung wurde von einem Programmierblog inspiriert, den ich häufig betreibe. Den Originalbeitrag finden Sie hier: Ein Programmierpuzzle
Herausforderung
Definieren Sie eine Funktion f:Q->Qso, dass sie f(f(n)) = -nfür alle Ganzzahlen ungleich Null ngilt und wo Qdie Menge der rationalen Zahlen liegt.
Einzelheiten
In welcher Sprache bevorzugen Sie, definieren Sie eine Funktion oder ein Programm , fdas als Parameter akzeptiert eine Nummer nund gibt oder gibt eine Zahl f(n).
Die Eingabe kann über den für Ihre Sprache am besten geeigneten Mechanismus erfolgen: Funktionsargument, Lesen von STDIN, Befehlszeilenargument, Stapelposition, Spracheingabe, Gruppenzeichen usw.
Die Ausgabe sollte ein Rückgabewert einer Funktion / eines Programms sein oder auf STDOUT gedruckt werden.
Ich möchte Antworten auf Funktionen beschränken, die den Programmstatus oder den globalen Speicher / die Daten, die von außerhalb der Funktion sichtbar sind, nicht nutzen f. Wenn Sie zum Beispiel einen Zähler außerhalb fdieses Zählers belassen , zählt, wie oft faufgerufen wurde, und nur eine Negation auf der Grundlage dieses Zählers durchzuführen , ist für niemanden eine große Herausforderung oder ein großes Interesse. Die Entscheidungen fsollten sich nur auf Daten im flexikalischen Bereich stützen .
Diese Einschränkung ist jedoch wahrscheinlich für einige stapelorientierte Sprachen oder andere Arten von Sprachen ungeeignet, die diese Arten von Daten oder Bereichen nicht unterscheiden. Bitte verwenden Sie Ihr bestes Urteilsvermögen, um dem Geist dieser Herausforderung gerecht zu werden.
Wertung
Es gelten die allgemeinen Code-Golfregeln. Ihre Punktzahl ist die Anzahl der Bytes in Ihrem Quellcode.
Die minimale Antwort erfordert, dass die Domäne und die Codomäne von feine Teilmenge der Rationalen sind Q. Wenn Sie Ihre Domain und Codomain fauf die ganzen Zahlen beschränken Z, entspricht Ihre Punktzahl der Obergrenze von 90% der Anzahl der Bytes in Ihrem Quellcode.
Tiebreak
Im Falle eines Unentschieden wird Folgendes verwendet:
- Nur wenige druckbare Nicht-Leerzeichen- Symbole in Ihrem Quellcode
- Frühestes Datum und Uhrzeit der Beantwortung
Bearbeiten
Sie müssen keine Zahlen mit beliebiger Größe unterstützen. Bitte interpretieren Sie die Mengen Zund QDatentypen in der von Ihnen gewählten Sprache (in der Regel Integer bzw. Floating Point).
Wenn sich Ihre Lösung ausschließlich auf die zugrunde liegende Struktur oder das zugrunde liegende Bitmuster eines Datentyps stützt, beschreiben Sie bitte dessen Einschränkungen und die Verwendung.
f:Q->Qbedeutet?
fes sich um eine Funktion handelt, die Mitglieder von Q(rationale Zahlen) anderen Mitgliedern (möglicherweise denselben) von (rationale Zahlen) zuordnet Q. siehe en.wikipedia.org/wiki/Function_(mathematics)#Notation
