Эта проблема была вдохновлена программистским блогом, который я часто посещаю. Пожалуйста, смотрите оригинальный пост здесь: программирование головоломки
Вызов
Определите функцию так 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_(matmatics)#Notation
