あなたがする必要があるのは、入力として小数を取り、数が整数になるまで、小数部分の逆数を繰り返し取った結果を出力する関数/プログラムを作成することです。
より具体的には、プロセスは次のとおりです。
xを入力とします
xが整数の場合、それを出力します。
そうでない場合:。2に戻ります。
はの小数成分であり、等しくなります。最大整数未満であるXのある床、。
テストケース:
0 = 0
0.1 = 1/10 -> 10
0.2 = 1/5 -> 5
0.3 = 3/10 -> 10/3 -> 1/3 -> 3
0.4 = 2/5 -> 5/2 -> 1/2 -> 2
0.5 = 1/2 -> 2
0.6 = 3/5 -> 5/3 -> 2/3 -> 3/2 -> 1/2 -> 2
0.7 = 7/10 -> 10/7 -> 3/7 -> 7/3 -> 1/3 -> 3
0.8 = 4/5 -> 5/4 -> 1/4 -> 4
0.9 = 9/10 -> 10/9 -> 1/9 -> 9
1 = 1
3.14 = 157/50 -> 7/50 -> 50/7 -> 1/7 -> 7
6.28 = 157/25 -> 7/25 -> 25/7 -> 4/7 -> 7/4 -> 3/4 -> 4/3 -> 1/3 -> 3
0.1刻みで0から1のサマリー:0、10、5、3、2、2、2、3、4、9、1
これはcode-golfなので、バイト数が最も少なくなります。
明確化:
- 丸め誤差のない「ボーナスポイント」
- 負でない有理数で動作するはずです(丸め誤差を無視)
- 可能ですが、実行した手順を出力する必要はありません
- 入力は、文字列に含まれる可能性のある10進数、分数、または数値のペアとして受け取ることができます。
すべての問題で申し訳ありませんが、これはこのウェブサイトでの最初の質問です。