ウィキペディアによると、強力なダルブー関数は
すべての(空ではない)オープン間隔のイメージが実ライン全体であるもの
言い換えれば、関数は、3つの任意の実数、、および与えられた場合に強くDarboux であり、f (x )= yであるような(別個の)aとbの間のを常に見つけることができます。
この課題の目的のために、代わりに有理数よりも強力にダルブー関数を検討します。
あなたの課題は、次のようなプログラムまたは関数を作成することです。
- 有理数入力ごとに有理数を出力として与えます。
- 与えられた入力に対して常に同じ出力を与える
- 強くDarbouxプロパティを持っています。
入力と出力は次のいずれかです。
- 言語に1つ(またはGMPなどの1つのライブラリー)がある場合、任意精度の数値型。
- 数字の文字列表現。常に小数点と両側に少なくとも1桁の数字が含まれると想定できます。これは、任意のベースであってもよく、が、入力と出力が同じ塩基でなければなりません。数字と小数点には任意の文字セットを使用できます(ただし、入力と出力の間で一貫している必要があります)。
入力には常に終端展開があります。機能の選択に応じて、理論的には終了しないbase 展開を持つ出力については、次のいずれかを選択できます。
- 数字を永久に出力します。
- 少なくともその数の数字を入力および出力として追加の整数を取ります。
- 入力と少なくとも同じ桁数を出力します(末尾にゼロが含まれる場合があります)。
この課題の性質によって、ことが慣例そのノート番号は、標準的な数の種類によって表現可能であると仮定することができるがないではない上記のオプション2で説明した第2の入力を除いて、適用します。
非終端の有理数でのみ定義される関数の抜け穴を避けるために、実際には、サブミットは目的の値に近い任意の出力を生成できる必要があります。正式には、有理数与えられ、B、Y、およびε、合理的な数が存在しなければならxは、選択したベースでの終了は、そのことを< X < Bと| f (x )− y | < ε。
いくつかのアイデアを提供するために、Conwayベース13機能の説明を以下に示します。
- 変換を基数13に、小数点を削除します。
- 結果は次の形式である場合、および 0から9までの数字のみで構成し、。
- 結果は次の形式である場合、および次に、0から9までの数字のみで構成。
- それ以外の場合、。
この関数は強くDarbouxです。例えば、f (x )= 7.89になるように123.456 13と123.457 13の間のを見つけたいとします。ベース13の値123.456 A 7 C 89 13は、この要件を満たします。
あなたの提出はこの関数の実装かもしれませんが、実装するのがもっと短い他の強力なDarboux関数があると思います。:)