パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

サイゼリヤで、合計1000円以内で摂取できるカロリーの最大値は1940kcal」記事へのコメント

  • 手計算 (スコア:3, 興味深い)

    by Anonymous Coward on 2019年05月22日 6時56分 (#3618819)

    dbファイル [github.com]があるから、そっから

    1. カロリー未記載のものを除外
    2. 同じ値段のものは一番カロリーが高いもの以外除外
    3. それ以下の値段でより多くカロリーが摂れるもの(価格ソートでカロリーが下がってる奴)を除外
    4. 一つ下の値段の商品に最安1~2番目メニュー(トッピング半熟卵69円90kCal/セットプチフォッカ79円107kCal)を加えたものにカロリー(と値段)が負けてる商品を除外

    すると12品残った。途中でミスってそうだけど。
    まぁ後は手計算できなくもないと判断したが、自分的には力尽きた。
    Excelでもいいから手計算しない方が楽なぎりぎりレベルだと感じるな。

    ちなみにExcelの人とはメニューが若干違うので注意(ラージライスとかがなかった)。

    この手の作業、BDとかに焼く時に毎回やってるな。
    以前全探索で詰め込む簡単なプログラムを作ったけど10だか20だか程度なら普通に解けるのよね。
    でも実際は多少余っても構わないし、というかBDはパケットライトのUDFの都合とかで合計値より結構余計に容量を消費するし、関連した奴らをまとめたいしで手作業でやってる。というかほぼ適当にやってるだけだな。

    プログラマらしからぬ。

    • Re:手計算 (スコア:2, 参考になる)

      by Anonymous Coward on 2019年05月22日 7時48分 (#3618835)

      2の手順で最適解を見落とすバグを仕込んでますね
      500yen 500 kcal
      500yen 400 kcal
      400yen 200 kcal
      100yen 100 kcal
      では
      900 kcalが最適だけど
      2の作業をすると800kcalになる

      金額1000円までで取りうる値が整数値限定なら、動的計画法一択でしょ

      親コメント
      • by Anonymous Coward

        重複有効なら2では下がらない。
        3(と多分4)は普通にバグだと思うけど……

      • by Anonymous Coward

        ホントだ。
        途中までは重複ありのつもりで考えていて、「あ重複禁止なんだ、まぁいいや」って続行したんでおかしな事になってる。

        • by Anonymous Coward on 2019年05月22日 12時13分 (#3618990)

          その「まあいいや」がバグの元だってのは業務で嫌と言うほどあじわってるでしょ?

          親コメント
        • by Anonymous Coward

          まあ価格、カロリー、利用可能回数の組で考えればいいわけだが。
          3の手順は、価格×利用可能回数分で1000円を超える場合のみ、それより割の悪いものを消せばいい。

      • by Anonymous Coward

        可能性で言うなら3の手順でも最適解を排除する可能性があるよーな。

        500yen 400kcal
        400yen 500kcal
        300yen 200kcal
        200yen 100kcal
        100yen 50kcal

        最適は500yen、400yen、100yenの950kcalだけど、
        3の手順で500yenのメニューを除外しちゃうと850kcalになる。

        • by Anonymous Coward

          4も。コスパ最悪の1円 0.0001 kcal みたいな商品が除外されてしまう。それで最後に余った端数を使い切れば、その分合計値は上がる。

          • by Anonymous Coward

            1以外は何もできませんという結論に。

            # 1,000円を超える品の除去ぐらいしかできない?

            • by Anonymous Coward

              4の件を書いたけど、読み間違いかも。
              でもまあ、NP困難なので、よほど明白な枝刈り以外は全探索するしかない。探索途中で、その先を探索しても、今まで見つかっている内で一番良い解に出来得なかったらそこで止めるとかその手の。

              • by Anonymous Coward

                重複禁止における4の反例。
                931yen,1089kcal
                861yen,1000kcal
                79yen,107kcal
                69yen,90kcal
                この場合、
                861+69=930yen,1000+90=1090kcal
                となり一位は二位にカロリーと値段両面で負ける。
                で二位以下での最高値は
                861+79=940yen,1000+107=1107kcal
                一方一位を残すと
                931+69=1000yen,1089+90=1179kcal

                まぁ単純に
                500yen,1000kcal
                430yen,1001kcal
                でも反例になるが。

    • by Anonymous Coward

      ラージライスはメニューにあるよ

    • by Anonymous Coward

      「レビューは大事」という事が分かる良いスレッド。

      • by Anonymous Coward

        「手作業のあたたかみ」の危険性もよく分かる

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

処理中...