最後に問題まずはこの問題を解いて欲しいこれは会社の同僚に出された問題です。100個のチョコレートがあります。その内の1個には毒が入っています。一口でも食べると20時間前後で必ず死にます。最低何人の毒見役が必要でしょうか。※毒見役は何個でもチョコレートを食べることができます。※毒は前兆なく突然死ぬことになります。最初問題を出された時にすぐには解けなくヒントをもらいました。そのもらったヒントがエンジニアなら解けるというものでやっとのことたどり着いたのは2進数で正解は、必要な毒見役は7人です。7人なった、経緯を解説していきます。チョコレートに1から100まで番号を割り振りこれを2進数に置き換える。11001007人の毒見役を2進数のそれぞれの桁に割り振り、自分の桁が1の場合にチョコレートを食べるようにする。20時間後に死んだ毒見役が担当していた桁を1として2進数から10進数に置き換えると毒チョコレートの番号が見分けることが出来る。55番が毒入りのチョコレートの倍は、1,2,3,5,6桁目の毒見役5名が死ぬことになる。今回は2進数でのフラグ管理を応用した問題でした。実行それぞれの桁数に意味をもたせ0,1で権限のON/OFFを制御しています。4(読込)+2(書込)+1(実行)=7(111)4(読込)+2(書込)=6(110)4(読込)=4(100)Pythonでの利用方法さていよいよ本題ですが、Pythonでも2進数でのフラグ管理は利用できます。ここではビット演算子の論理積(&)と論理和(|)を先程のLinuxのファイル権限を例にプログラムを書いてみました。test.py467この様に最終的にすべての権限がONになり7(111)という結果になっています。test.py310フラグの検知ちなみにフラグの検知はこの様にやります。最後に私は、このフラグ管理を使ったプログラムは、検索処理で一致度が高いもの順位ソートするときなどに使ったことがあります。左に行くほど優先度を高くして一致している項目のフラグをONにして出来上がった数字を元にソートする処理です。creators関連記事Python第5回基礎から学ぶPython入門ーExcelの操作ーPython第2回基礎から学ぶPython3入門-基本構文-Python第1回基礎から学ぶPython3入門-Pythonとは-Python【前編】CentOS7にPython3とnginxとMysqlいわゆるLEMP環境を構築してみます。後編ーPython第3回基礎から学ぶPython3入門-基本構文-PayPayモールがお得な件。コメントをキャンセルメールアドレスが公開されることはありません。やってみたキャッシュレスプログラム学習PythonPHPサッカー・フットサル公式TwitterアカウントフォローするタイトルとURLをコピーしました。