To wyzwanie zostało zainspirowane blogiem programistycznym, który często odwiedzam. Zobacz oryginalny post tutaj: A Programming Puzzle
Wyzwanie
Zdefiniuj funkcję f:Q->Qtaką, że f(f(n)) = -ndla wszystkich niezerowych liczb całkowitych n, i gdzie Qjest zbiorem liczb wymiernych.
Detale
W jakimkolwiek języku, który preferujesz, proszę zdefiniować jedną funkcję lub program, fktóry przyjmuje jako parametr jeden numer ni zwraca lub wyprowadza jeden numer f(n).
Dane wejściowe mogą być dostarczane za pomocą dowolnego mechanizmu najbardziej naturalnego dla Twojego języka: argument funkcji, odczyt z STDIN, argument wiersza poleceń, pozycja stosu, wejście głosowe, znaki gangów itp.
Wyjście powinno być wartością zwracaną z funkcji / programu lub drukowane do STDOUT.
Chciałbym ograniczyć odpowiedzi do funkcji, które nie wykorzystują stanu programu lub globalnej pamięci / danych widocznych z zewnątrz funkcji f. Na przykład trzymanie licznika poza ftym liczy liczbę wywołań, fa samo wykonanie negacji na podstawie tej liczby nie jest bardzo trudne ani interesujące dla nikogo. Decyzje fpowinny opierać się wyłącznie na danych w fzakresie leksykalnym.
Jednak to ograniczenie jest prawdopodobnie nieodpowiednie dla niektórych języków zorientowanych na stos lub innych typów języków, które nie rozróżniają tych typów danych ani zakresów. Prosimy o dokonanie najlepszego osądu, aby zachować ducha tego wyzwania.
Punktacja
Obowiązują wspólne zasady gry w golfa - twój wynik to liczba bajtów w kodzie źródłowym.
Minimalna odpowiedź wymaga, aby domena i kodomain fbyły podzbiorem racjonalności Q. Jeśli ograniczysz swoją domenę i kodomainę fdo liczb całkowitych Z, twój wynik to pułap 90% liczby bajtów w kodzie źródłowym.
Tiebreak
W przypadku remisu zostaną użyte następujące elementy:
- Najmniejsza liczba drukowanych symboli spacji w kodzie źródłowym
- Najwcześniejsza data i godzina przesłania odpowiedzi
Edytować
Nie musisz obsługiwać liczb o dowolnych rozmiarach. Interpretuj zestawy Zi Qtypy danych w wybranym języku (zwykle odpowiednio liczby całkowite i zmiennoprzecinkowe).
Jeśli twoje rozwiązanie opiera się całkowicie na podstawowej strukturze lub strukturze bitowej typu danych, opisz jego ograniczenia i sposób użycia.
f:Q->Qto znaczy?
fjest funkcją mapującą członków Q(liczb wymiernych) na inne elementy (być może takie same) Q. patrz en.wikipedia.org/wiki/Function_(mathematics)#Notation
