Цей виклик надихнув блог, який я часто програмував. Ознайомтесь з оригінальною публікацією тут: Головоломка з програмуванням
Виклик
Визначте таку функцію 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