Согласно Википедии , сильно функция Дарбу
тот, для которого изображение каждого (непустого) открытого интервала является целой реальной линией
Другими словами, функция строго дарбу, если даны 3 произвольных действительных числа , и , всегда можно найти между (различными) и таким, что .
Для целей этой задачи мы рассмотрим строго функции Дарбу над рациональными числами.
Ваша задача - написать программу или функцию, которая:
- дает рациональное число в качестве вывода для каждого ввода рационального числа,
- всегда дает один и тот же вывод для данного входа, и
- обладает сильно дарбу-свойством.
Вход и выход может быть одним из следующих:
- числовой тип с произвольной точностью, если у вашего языка он есть (или есть библиотека для одного, например, GMP).
- строковое представление числа, которое, как вы можете предположить, всегда будет содержать десятичную точку и хотя бы одну цифру с каждой стороны. Он может быть в любой базе , но вход и выход должны быть в одной базе. Вы можете использовать любой набор символов для цифр и десятичной точки (но опять же, они должны быть согласованы между вводом и выводом).
Вход всегда будет иметь расширение завершающей базы . Что касается вывода, которое может иметь теоретически не заканчивающееся расширение базы зависимости от вашего выбора функции, вы можете выбрать любое из следующего:
- выходные цифры навсегда.
- возьмите дополнительное целое число в качестве ввода и вывода, по крайней мере, столько цифр.
- выведите по крайней мере столько цифр, сколько на входе (которые могут содержать конечные нули).
Обратите внимание, что по природе этой проблемы соглашение о том, что числа могут считаться представимыми стандартными типами чисел , не применяется, за исключением второго ввода, описанного в варианте 2 выше.
Чтобы избежать лазеек с функциями, которые определены только на не заканчивающихся рациональных числах, ваша заявка должна иметь возможность производить выходные данные, сколь угодно близкие к желаемому значению на практике . Формально, учитывая рациональные числа , , и , должно быть рациональное число которое заканчивается в выбранной вами базе так, что и .
Чтобы дать вам некоторые идеи, вот описание функции Conway Base 13 :
- Переведите в основание 13 и удалите десятичную точку.
- Если результат имеет вид , где и состоят только из цифр от 0 до 9, то .
Ваша заявка может быть реализацией этой функции, хотя я подозреваю, что есть и другие функции Дарбу, которые намного короче для реализации. :)
Ответы:
Сетчатка 0.8.2 ,
4350 байтПопробуйте онлайн! Ввод / вывод в виде двоичной строки. Кодируйте двоичное число
y
рядом с другим двоичным числомa
следующим образом:a
не содержит.
, суффикс один.a
содержит нечетное число цифр после.
суффикса a0
.y
отрицательный, то суффикс,11
иначе суффикс10
.y
суффиксе0
следует эта цифра.y
содержит.
, суффикс11
в этой точке, иначе суффикс после всех цифр вy
.Объяснение:
Сопряжение цифр начинается с двоичной точки. Если число является допустимой кодировкой, то декодируйте последнюю
1x
пару цифр в a,.
а вторую последнюю - в необязательный-
знак. Цифры до этого игнорируются.Это должно просто оставить пары, которые начинаются с
0
, поэтому удалите0
s.источник
-.
. Означают ли это нули или они не должны быть произведены?*
s на+
s, что будет гарантировать, по крайней мере, одну цифру до и после.
?.
. Я думаю, что я все еще могу гарантировать цифру до того,.
как..
не меняет своего значения, но такое изменение входа вашей функции изменяет выход. Возможно, вам разрешено это исправить, если предположить, что у input нет таких нулей. Кроме того, если вы группируете пары справа, как это «теоретически работает для любого реального ввода»?11
добавлены в шаге 2.)Желе , 71 байт
Попробуйте онлайн!
Полная программа, которая принимает число базы-10 в качестве входных и выходных данных и реализует функцию базы 13 Конвея, но использует базы 7 и 10, а не 10 и 13. Оба входа и выхода используют запятую в качестве десятичного разделителя. Вывод будет иметь ведущий - для отрицательных чисел.
источник
Сетчатка ,
28252628 байтПопробуйте онлайн!
объяснение
Может выводить начальные и конечные нули и числа без целочисленной части.
Это может быть в гольфе на 2 или 3 байта больше, если я смогу использовать
4+
. Но я не уверен, как определить теоретический результат, если вход имеет бесконечный поток4
s.источник