Согласно Википедии , сильно функция Дарбу
тот, для которого изображение каждого (непустого) открытого интервала является целой реальной линией
Другими словами, функция строго дарбу, если даны 3 произвольных действительных числа , и , всегда можно найти между (различными) и таким, что .
Для целей этой задачи мы рассмотрим строго функции Дарбу над рациональными числами.
Ваша задача - написать программу или функцию, которая:
- дает рациональное число в качестве вывода для каждого ввода рационального числа,
- всегда дает один и тот же вывод для данного входа, и
- обладает сильно дарбу-свойством.
Вход и выход может быть одним из следующих:
- числовой тип с произвольной точностью, если у вашего языка он есть (или есть библиотека для одного, например, GMP).
- строковое представление числа, которое, как вы можете предположить, всегда будет содержать десятичную точку и хотя бы одну цифру с каждой стороны. Он может быть в любой базе , но вход и выход должны быть в одной базе. Вы можете использовать любой набор символов для цифр и десятичной точки (но опять же, они должны быть согласованы между вводом и выводом).
Вход всегда будет иметь расширение завершающей базы . Что касается вывода, которое может иметь теоретически не заканчивающееся расширение базы зависимости от вашего выбора функции, вы можете выбрать любое из следующего:
- выходные цифры навсегда.
- возьмите дополнительное целое число в качестве ввода и вывода, по крайней мере, столько цифр.
- выведите по крайней мере столько цифр, сколько на входе (которые могут содержать конечные нули).
Обратите внимание, что по природе этой проблемы соглашение о том, что числа могут считаться представимыми стандартными типами чисел , не применяется, за исключением второго ввода, описанного в варианте 2 выше.
Чтобы избежать лазеек с функциями, которые определены только на не заканчивающихся рациональных числах, ваша заявка должна иметь возможность производить выходные данные, сколь угодно близкие к желаемому значению на практике . Формально, учитывая рациональные числа , , и , должно быть рациональное число которое заканчивается в выбранной вами базе так, что и .
Чтобы дать вам некоторые идеи, вот описание функции Conway Base 13 :
- Переведите в основание 13 и удалите десятичную точку.
- Если результат имеет вид , где и состоят только из цифр от 0 до 9, то .
Ваша заявка может быть реализацией этой функции, хотя я подозреваю, что есть и другие функции Дарбу, которые намного короче для реализации. :)