Цей виклик надихнув блог, який я часто програмував. Ознайомтесь з оригінальною публікацією тут: Головоломка з програмуванням
Виклик
Визначте таку функцію f:Q->Q, що f(f(n)) = -nдля всіх ненульових цілих чисел n, а де Qнабір раціональних чисел.
Деталі
Якою б мовою ви не надали перевагу, будь ласка, визначте одну функцію чи програму, fяка приймає за параметр одне число nта повертає або виводить одне число f(n).
Введення може надаватися через той механізм, який є найбільш природним для вашої мови: аргумент функції, зчитуваний з STDIN, аргумент командного рядка, позиція стека, голосовий ввід, знаки банди тощо.
Вихід повинен бути зворотним значенням з функції / програми або надрукований на STDOUT.
Я хотів би обмежити відповіді на функції, які не скористаються станом програми або глобальною пам'яттю / даними, які видно поза межами функції f. Наприклад, зберігання лічильника поза цим рахунком fрахує, скільки разів fдзвонили, і просто робити заперечення на основі цього підрахунку не дуже складно і не цікаво для когось. Прийняті рішення fповинні покладатися лише на дані, що знаходяться в межах fлексичної сфери.
Однак це обмеження, ймовірно, не підходить для деяких мов, орієнтованих на стеки, або інших типів мов, які не розрізняють ці типи даних або сфери застосування. Будь ласка, використовуйте своє найкраще рішення, щоб відповідати духу цього виклику.
Оцінка балів
Застосовуються загальні правила гольф-коду - ваш бал - кількість байтів у вихідному коді.
Мінімальна відповідь вимагає, щоб домен і кодомен fбули підгрупою раціональних Q. Якщо ви обмежите свій домен та кодомейн fцілими числами Z, то ваш показник - це максимальна межа 90% від кількості байтів у вихідному коді.
Перерва на чай
У разі вирівнювання, в порядку буде використано наступне:
- Найменша кількість символів, що не надрукуються для друку, у вашому вихідному коді
- Найдавніша дата та час подання відповіді
Редагувати
Вам не потрібно підтримувати довільно розміщені номери. Будь ласка, інтерпретуйте набори Zта Qтипи даних у вибраній мові (як правило, цілі чи плаваючі точки відповідно).
Якщо ваше рішення повністю покладається на базову структуру або бітовий зразок типу даних, будь ласка, опишіть його обмеження та спосіб його використання.
f:Q->Qозначає?
f, що функція відображення членів Q(раціональних чисел) до інших членів (можливо, однакових) Q. дивіться en.wikipedia.org/wiki/Function_(mathematics)#Notation
