龍虎氏の記事(2024/02/15)に対するコメント。
っつーか別解。
別解その1:
別解その2:
両者ともenumerateがキーポイント。
"10111000"は右から1の位、2の位、4の位、8の位、・・・となってるわけだが(十進法じゃなく二進法な為)、逆順"00011101"にすると先頭から1の位、2の位、4の位、8の位、・・・が成立する。
つまり、この時点でenumerateをかけると、
[(0, '1'), (1, '0'), (2, '1'), (3, '1'), (4, '1'), (5, '0'), (6, '0'), (7, '0')]
となり、「リストのインデックス」が位の「サイン」になり得る。
- 0: 2^0 = 1 で1の位
- 1: 2^1 = 2 で2の位
- 2: 2^2 = 4 で4の位
- 3: 2^3 = 8 で8の位
てなカンジだ。
と言う事は各位に於いて
を計算してその総和を取ればいい。
方法論的にはリスト内包表記で処理していって、その総和を取る、と言う龍虎氏もやったやり方。