楕円と棒として印刷されたバイナリ値を目撃することはそれほど簡単ではありません...そのためには、カスタムバイナリ表現で数値を出力する関数(またはプログラム)を記述する必要があります。
したがって、たとえば3(00000011
)のような数値を受け取り、ビットをユーザー定義の形式で、たとえばスペースで区切られたペアで出力したいとします。
00 00 00 11
または、たとえば、逆の順序で、いくつかのデコレータを使用します。例:
11_00_00_00
さらに、 '0'と '1'をカスタム文字として表示して、それらをよりよく区別できるようにする必要があります。例:
XX oo oo oo
したがって、次の仕様ですべてを行うコードを作成することが課題です。
仕様
関数は次のような入力を受け取ります: f(A、mask、zeros、ones)
パラメーター:
A-入力数値-0から255の範囲の任意の(符号なし)整数。
mask-出力の構成を定義する文字列パラメーター。
zeros-同じ長さの文字列で、各出力スロットの「ゼロ」グリフを定義します。
ones-同じ長さの文字列で、出力スロットごとに「1」グリフを定義します。
出力構成のルール:
出力がどのように生成されるかを理解するには、例とともにこの画像をよく見てください。
したがって、マスクの1桁のみが解析され、Aの対応するビットに置き換えられます。他の文字はそのままです。さらに、取得したビットの値が1の場合、最終出力に「X」として表示され、0の場合、「o」として表示されます。上記の例では、取得した4つのビットはすべて「1」なので、すべてのスロットに「X」が表示されます。
入力数が128の場合、論理的には、出力はになりますX foo bar ooo
。パラメータ「0」と「1」の文字:印刷可能なASCII文字。マスクと常に文字揃えされていると想定します。
注:
- ビットのインデックスは0です。0番目のビットはMSBです。
- 数字8、9はマスク文字列では許可されていないと仮定します。
- 入力文字列には、印刷可能なASCII文字が含まれます。
- 「ゼロ」と「1」はマスクに合わせて文字で整列されます。
- あなたの言語の特殊文字/修飾子の場合:入力文字列に表示されないと想定できます。
明確にするために、他の例を参照してください。
入力->出力例
すべての8ビットをスペース区切り文字で共通の順序で、楕円と棒の一般的な表記で出力します。
mask = "0123 4567"
zeros = "0000 0000"
ones = "1111 1111"
A=1 -> 0000 0001
ダッシュとグリフ表記で逆の順序で出力します。
mask = "| 7654 3210 |"
zeros= " ---- ---- "
ones = " ssss ssss "
A=1 -> | s--- ---- |
A=3 -> | ss-- ---- |
A=128-> | ---- ---s |
1つの出力での多様な表記、たとえばパックされたデータ:
mask = "0 | 123 4567"
zeros= " --- ----"
ones = "X kkk ssss"
A= 15 -> | --- ssss
A= 16 -> | --k ----
A= 32 -> | -k- ----
A= 128 -> X | --- ----
A= 255 -> X | kkk ssss
繰り返しパターン:
mask = "| 7 66 555 4444 |"
zeros= " . .. ... .... "
ones = " 0 00 000 0000 "
A= 0 -> | . .. ... .... |
A= 1 -> | 0 .. ... .... |
A= 2 -> | . 00 ... .... |
A= 3 -> | 0 00 ... .... |
A= 4 -> | . .. 000 .... |
更新
ルールは少し簡略化されました-プログラムは1つの数値のみを出力する必要があります(最初に提案された配列/数値のリストではありません)。
A
すべてのテストケースで同じであるため、私も何をするのかわかりません