コンピュータはバイナリで生きています。すべてのプログラマーはバイナリーを知っています。
しかし、2**x
ベースは非実用的であるとしばしば無視されますが、それらはバイナリとの美しい関係を持っています。
そのような美しい関係の一例を示すために、19が私の証言になります。
19 10011 103 23 13 j
19は10進数で、わかりやすくするために含まれています。
10011は2進数で19です。
103、base 4では、バイナリから次のように作成されます。
- log2(4)== 2、2つ覚えておきましょう。
- 2の倍数の長さになるようにパッド10011-> 010011
2 x 2の数字を左から右に取り、2桁の2進数として扱います。
- 01-> 1
- 00-> 0
- 11-> 3
完了、base-4の10011は103です。
底が8の場合、log2(8)= 3と同じですが、3行3列です。
- パッド010011
- 010-> 2
011-> 3
23、完了。
基数16の場合、log2(16)= 4と同じですが、4行4列です。
- パッド00010011
- 0001-> 1
0011-> 3
13、完了。
仕事
入力として最大数を指定すると、テーブルを出力します
base-ten-i base-two-i base-four-i base-eight-i base-sixteen-i base-thirtytwo-i
for iは0からnまでの範囲です。2進数は、機能するために必要な最低限の縮図であるため、コードはできるだけ短くする必要があります。
制限とボーナス
Base-ten->バイナリおよびバイナリ-> Base-tenビルトインは、Base-a-> Base-bと同様に抜け穴と見なされます。
2**i
上記の関係を使用してすべての(for i> 2)基底を生成すると*0.6
ボーナスが得られますが、一般的な基底変換(自分で作成)は許可されます。
テーブルの例
> 32
0 0 0 0 0 0
1 1 1 1 1 1
2 10 2 2 2 2
3 11 3 3 3 3
4 100 10 4 4 4
5 101 11 5 5 5
6 110 12 6 6 6
7 111 13 7 7 7
8 1000 20 10 8 8
9 1001 21 11 9 9
10 1010 22 12 a a
11 1011 23 13 b b
12 1100 30 14 c c
13 1101 31 15 d d
14 1110 32 16 e e
15 1111 33 17 f f
16 10000 100 20 10 g
17 10001 101 21 11 h
18 10010 102 22 12 i
19 10011 103 23 13 j
20 10100 110 24 14 k
21 10101 111 25 15 l
22 10110 112 26 16 m
23 10111 113 27 17 n
24 11000 120 30 18 o
25 11001 121 31 19 p
26 11010 122 32 1a q
27 11011 123 33 1b r
28 11100 130 34 1c s
29 11101 131 35 1d t
30 11110 132 36 1e u
31 11111 133 37 1f v
32 100000 200 40 20 10