次の番号シーケンスを検討してください。
単位区間内のすべてのバイナリ分数を列挙します。
(この課題を簡単にするために、最初の要素はオプションです:スキップして、シーケンスが1/2で始まると考えることができます。)
仕事
プログラム(完全なプログラムまたは関数)を書く...
次の動作のいずれかを選択します。
- 入力n、シーケンスの出力n番目の要素(0インデックスまたは1インデックス);
- 入力n、シーケンスの最初のn個の要素を出力します。
- 何も入力せず、1つずつ取得できる無限数列を出力します。
ルール
- あなたのプログラムは少なくとも最初の1000項目をサポートする必要があります。
- 必要に応じて、小数または小数(組み込み、整数ペア、文字列)を出力することを選択できます。
- この質問では、2進数としての入力/出力は許可されていません。
- これはcode-golfで、最短のコードが勝ちます。
- 標準の抜け穴は許可されていません。
テストケース
input output
1 1/2 0.5
2 1/4 0.25
3 3/4 0.75
4 1/8 0.125
10 5/16 0.3125
100 73/128 0.5703125
511 511/512 0.998046875
512 1/1024 0.0009765625
これらの例は、先頭に0が含まれる0インデックスシーケンスに基づいています。ソリューションに合わせて入力を調整する必要があります。
続きを読む
- OEIS A006257
- ヨセフス問題:。(以前のM2216)
- 0、1、1、3、1、3、5、7、1、3、5、7、9、11、13、15、1、3、5、...
- OEIS A062383
- :のための、又は。
- 1、2、4、4、8、8、8、8、16、16、16、16、16、16、16、16、32、32、32、...
A006257(n)/ A062383(n)=(0、0.1、0.01、0.11、0.001、...)は、単位区間[0、1)のすべての2進小数を列挙します。-フレドリックヨハンソン、2006年8月14日
"1/2" "1/4" "1/8"...
take
からn個の要素ができる限り問題ありません。
int
sの場合にペアを返す関数、またはIEEE binary64形式を使用double
する言語/実装でa を返す関数を作成できないことを意味しdouble
ます。整数入力を取得する場合、ASCII文字列を解析する必要があったことを意味しないことを願っていますか?通常の整数型は、Cのような言語ではバイナリです。または、入力/出力が整数またはASCIIゼロ/ 1の配列または文字列であってはいけないということですか?