[Home]Memo/Q210

Amatubu_Wiki | Memo | RecentChanges | Preferences

Showing revision 1

最高のカレーを作れ!

問題

[最高のカレーを作れ!]

考えたこと

まずは、問題のブレンドリストから、どんな種類のスパイスが何回出てくるかを調べる

[コード]

結果は、
  Achiomaseic 26
      Anesuma 33
     Anewatry 40
        Anioc 31
     Bapomely 36
     Baricema 32
         Beba 24
    Bebacorry 39
   Bebalemoma 27
       Bebary 42
        Camin 39
     Carabaic 39
   Carapertah 36
      Caratah 35
   Cardoquist 28
     Chimonma 34
    Chitamary 37
     Choopaly 37
   Chooperaly 38
   Ciocitotah 36
     Ciogoist 31
         Cito 38
       Citoat 32
    Citograor 26
        Corma 23
        Draat 37
        Drama 42
     Draxuoly 39
        Floic 40
       Ginima 38
      Ginitah 28
        Glaat 31
        Glaru 26
        Gotah 34
     Jachooor 40
     Junisooc 35
      Junitah 31
      Labcara 25
        Laboc 39
        Labor 40
        Labry 32
     Licotaor 25
  Limeachioly 41
  Limelicotah 35
      Limemin 27
   Limeminnor 25
      Limetal 38
    Loveaneic 25
    Loveaniic 35
       Lovema 28
       Maceor 28
      Mahseoc 26
       Masema 33
     Maserior 36
         Mata 23
   Matapermin 37
      Matatal 28
    Minnlabic 44
       Minnoc 39
   Monmyraist 31
    Monwatmin 40
         Muly 44
   Munillaist 39
     Mupermin 38
      Mupopoc 34
         Mury 39
     Myrarice 31
    Nercitoma 24
    Nerstamin 30
         Nige 32
   Nillaneric 29
   Nillawatat 39
   Nutscinmin 31
  Nutslemoist 32
     Nutssery 39
         Paic 37
    Pamacetah 27
         Paor 41
  Peracassist 37
      Peratal 32
    Peregrama 32
       Pertah 39
       Pomeat 38
     Popxuoor 31
    Primonmin 39
    Pripriist 34
      Qulabry 30
       Riceso 24
    Riceturic 37
  Rinacardory 28
   Rinacassoc 41
      Rinagla 37
    Rinawatry 34
         Rose 38
   Roselabtal 30
   Rosemaceoc 25
       Rosery 25
      Rosetal 38
    Ruginitah 35
        Rumin 26
         Rury 41
      Sesaist 37
      Soanior 33
      Somutah 37
      Soxuooc 35
 Spicechootal 26
  Spicesesaoc 41
    Stacarary 42
    Stachoooc 29
        Staoc 35
         Suma 43
  Sumabebatah 34
   Sumaloveat 38
  Sumaricetah 30
      Tamamin 42
       Tamaoc 22
     Tamariic 36
    Tamastaat 36
         Tary 40
        Tatah 35
  Turcardoist 35
        Turry 30
    Tursesaly 40
        Xuoma 33
    Zamacetal 36
         Zaor 38
     Zaroseor 43
    Zaspiceoc 41

128種類ある。

これらがどちらかに含まれる組み合わせは、2^128/2-1 とおり(皿は逆に見ても同じ、すべて片方の皿に入れるのは無効から)
170141183460469231731687303715884105727 とおりか
しらみつぶしではちょっときつそう

例題を見てみる

 SpiceA SpiceB
 SpiceA SpiceC
 SpiceB SpiceC
 SpiceC SpiceD
 SpiceD SpiceE
 SpiceE SpiceF
 SpiceF SpiceD
 SpiceE SpiceG
 SpiceF SpiceG

   ABC|DEFG
 A  11|0000
 B   1|0000
 C    |1000
      +----
 D      110
 E       11
 F        1
 G

こうやって並べると、うまく並べて、四角で区切った中にある組み合わせができるだけ少なくなるようにしてあげればよいということがわかる

この「うまく」というのはどうやったら見つけられるのか

... すぐに思いつかなかったので、あとまわし

ブレンドに現われる回数に注目

問題を見ると、ブレンドに現れる中で一番数が少いのは Tamaoc の 22 個
片方に Tamaoc だけを入れて、もう一方に残りすべてを入れれば、2182 のブレンドのうち無駄になるのは 22 個だけなので、合計のポイントは 2160 になる
無駄になるブレンドがこれ以下になる組み合わせがあるのか、ないのか

逆に一番多く現れるのは Minnlabic の 44 個
無駄が 22 個未満になるのであれば、このうち少なくとも 23 個は使われる(= 23 個のブレンドにあるスパイスは同じ皿に入る)ということ

相性のよいスパイスのマトリックスを作成

[コード]

結果
  0010010000000100000001100000010100001000100110001100010100100000011000000001000000000100100000110000000010010000100000000000000
 0 110101000100010110100001001000011000001001001000000100000000110000010000100001100100001001101001000010000000000000000001001100
 01 01101000010010110000001001001010000001001000010001101000001110000110010100011100100001001111001000010000000010000000000011100
 110 1001000010010110000001001001010000001001001000001101000000100000100010000000100100001000110001000000000000010000000001010100
 0011 101000110010010000000001001010000001001001010000101000000110000110010100011100100001001110001000010000000010000000001010000
 01101 01000100010110000001000001000000001001001010001101000000110000100010100011000000001001011001000000000000000000000001001100
 100000 0100000100000001010000010100000000000010101010010100100000010000000001000000000110100000010000000010010000101000000000000
 0111110 000110010110100001001001010000001000101000001101000000110000110000100011000000001001110001010010000000010000000000011100
 00000010 00000100000001110000010000001000000110101110010000100000011001000000000000000100100000110010000010010000101000000000000
 000000000 1000001000010000110100001010110010000000000000011011001100000001010100011011000010000000101101001101101010111110101000
 0000000001 011000001000000110100000100010010000000000000011011001100000001010100011001000010000000101001001101101010111010100011
 01001101000 10010110100001001001010000001000001010001101001000110000010010100011100100001001101001000010000000000000000001011100
 001110010011 0010110100001001001000000001001001010001100000000110000110010100010100000000000111001000000000000010000000001011100
 0000000000100 001001000000110000001110110010000000000000011010001100000100010100001001000010000000101100000100101000111110100001
 10000010100000 00000001110000010100000000100110101110010000100000010001000001000000000110000000110010000000010000101000000000000
 011111010001100 0010100001001001010000000001001010000100000000100010010000100010100100000001010001000010000000010000000001011100
 0000000001000100 001010000110000001000010010000000000000010011001100000001010100011010000000000000101001100101101010111110100011
 01110101000110000 10100001000001000000001001001010001101000000110000010010100011100000001001111001000010000000010000000001001100
 011111010001100101 0100001001001010000001001001010001101000000110000010000100001000100001001110001000010000000010000000000101100
 0000000000100100100 010000010000001010110010000000000000011011001100000101000100001011000010000000001000001100101010111100100011
 01000001000110010110 00001001001010000001001001000001101000000110000000010100000000100001001110001000000000000010000000000011100
 000000000100000010010 0000100000001010110010000000000000011011000100000100010100011011000010000000101100100101101010011110100011
 1000001010000010000000 110000010100001000100110101110010100100000011001000001000000000110100000110010000010010000100000000000000
 10000000100000100000001 10000000000001000000110001110010100100000011001000000000000000110100000010010000010010000101000000000000
 000000101000001000000011 0000010000001000100000001100000100100000011001000001000000000110100000010010000010010000000000000000000
 0111010100011001011010000 001001010000000001001000000101000000110000110010100001000100001001111001000010000000010000000000011100
 00000000011001001000010000 10100001110110010000000000000011011001100000101010100011010000010000000101101101101101010010010100010
 000000000110010010010000001 0100001100110010000000000000010001001100000100010000001010000010000000101101101101101010111010100011
 0111100100011001001010000100 001010000001000001010001101000000010000110010100011100100001001111001000010000000010000000001011100
 00000000011000000000000000110 00001100110010000000000000011011001000000001010100001011000010000000001101101101101010111110000011
 100000101000001000000010100000 0100000000100110001110010100100000011001000001000000000100100000110000000010010000101000000000000
 0011110100011001011010000100100 010000000000000010000001000000110000100010100011100000001000010000000000001000000000000001011100
 10000010000000100000001000000010 00001000100110001110010100100000010001000001000000000110100000100000000010010000101000000000000
 011110010001000100101000010010010 0000000001001010000001000000110000010000100011100100001001111001000000000000010000000001010100
 0100000001000100100101000011010000 000110010000000000000011001001100000101010100010011000010000000000001101101101010111110000011
 00000000001001000000000000110100000 10010000000000000000011011001100000101000100011011000010000000001100101100101010111000100011
 000000000100010000010100001000000001 0110010000000000000001011000000000100000100011011000010000000001001101100101000100010100011
 1000000010000000000000111000000010000 000100110100110010100100000011001000001000000000100000000110000000000010000101000000000000
 00000000010001000001010000110100001010 10010000000000000011011001100000101010100011010000000000000101101001100101010011110100010
 000000000110010010010100001101000011101 0010000000000000011011000100000101010100011000000010000000101000100101101010011000101011
 0111110100011000011010000000100000000000 000001010001100000000110000010000100001100100000001011000000010000000010000000001011100
 10000000000000100000001010000010100001000 00110000110010000100000011001000001000000000010100000100010000010010000101000000000000
 000000000110010010010100001101000010101100 0000000000000011011001100000100010100010010000010000000101101101100101010011010100011
 0111110000001001011010000100000001000000000 000010001001000000110000110010100011000100001001111001000010000000000000000001011100
 10000001100000100000001100000010100001000100 10101110010000000000011001000000000000000110100000110010000000010000100000000000000
 100000101000001000000011000000101000010001001 0101100000100000000001000000001000000000110100000000010000010010000101000000000000
 0101110100011001011010000100100001000000100000 001001101000000110000110000100011100100001001011000000010000000010100000000011100
 00000010100000100000001000000000000001000000110 01110000100100000011001000101000000000000100000110010000010010000101000000000000
 001011000001100101100000000010010100000010010000 0001101000000110000110010101011100100001001100001000010000000000000000001001100
 1000001010000010000000111000001010000000000011110 110010100100000010001000001000000000100000000110010000010010000001000000000000
 10000000100000100000001110000010100001000100110101 00000100100000011001000000010000000100100000110010000010010000001000000000000
 000000101000001000000011000000101000010001001001010 0000100100000011001000001000000000110100000010010000010010000100000000000000
 0011010100011000011010000000100000000000100100101000 101000100110000100000100011100000001000101001000010000000010000000000011100
 01111101000110010110100001001000000000001000001010001 01000000000000110000000011100100001001111001000010000000010000000000011100
 100000101000001000000011000000101000010001001000010000 0100000000001000000001000000000010100000110010000010000000101000000000000
 0011110100010000011010000100100101000000000100101000110 000000110000110010100011100100001001010001000010000000010000000001001100
 10000010000000000000001110000010100001000000010101110010 00100000001001000000010000000110100000110010000010010000101000000000000
 000000000110010010010100001101000011001100100000000000000 1011001100000100010100011010000000010000100101101101101010111110100011
 0000000001110100000101000010010000111011001000000000000001 011001100000101010100010001000010000000001001101101100010101100000011
 10000010100000100000001110000010100001000100000101111000100 00000011001000001000000000110100000110010000010010000101000000000000
 000000000110010010010100001001000001101100100000000000000110 1001100000001000000011010000010000000101101101101101010101110000011
 0010000001100000100101000011010000111011001000000000000001101 001100000101000100011011000010000000101101101101101010001010100011
 01111101000110010110100001000001010000001001001010001001000000 10000110000100011100100001001110001000000000000010000000001011100
 011011010001100001101000010010010100000010010010100010010000001 0000110010100010100100001001111001000000000000010000000000011100
 0000000001100100100100000011010000110010001000000000000001101100 100000101000100000001000010000000000101101001101010000110100010
 00000000011001001001010000110000001100110010000000000000011011001 00000100010100011000000010000000001101101100101000111010100011
 100000101000001100000011100000101000010001001001011100000001000000 1001000001000000000110100000110010000010010000101000000000000
 1000000010000000000000111000001000000100010011010011001010010000001 001000001000000000100000000100000000010010000100000000000000
 00111101000010000000000001001001000000000001001010001101000000110000 10010100011000100000001110001000010000000000000000000011000
 011010010001100101100000010010000100000010010010100001010000001100001 0010100010100100001001011001000000000000000000000000010000
 0000000010000010000000111000001010000100010010010111000010010000001100 000001000000000110100000110010000010010000101000000000000
 00000000000001000001010000110000001110110010000000000000011001001100000 00010100010011000010000000101101101101100010110110100011
 001111000001100001001000010010010000000000010000100000010000000100001100 0000001100100000001111001000010000000010000000001011100
 0000000001100000100100000010010000110011000000000000000000101100100000000 000100010011000010000000100101100000101010001110100011
 01101101000110010110100001001001010000001001001110001001000000110000110000 00010000000001001111001000010000000010000000001011100
 000000000110010010000100001101000010001100100000000000000110000001000001000 0100010011000010000000101100001101101010111110000011
 1000001000000010000000101000001010000100010001011101001000010000001100100000 000000000110100000100010000000010000101000000000000
 00000000011001001001010000100100001110110010000000000000011001001100000101010 00011011000010000000001101101101000010111010000011
 001011010001100101000000000010010100000000010010101011011000001100001100001000 1100100000000111001000010000000010000000001011100
 0110110100010000011000000100100101000000100100101000110100000010000010001000001 100000001000011001000010000000010000000001010000
 01111000000110010100000000001001010000001000001010001101000000110000010010000011 00000001001100001000010000000000000000001011100
 000000000110000010000100001000000011101100100000000000000110110001000001010101000 1011000000000000101101001100100010111110100011
 0000000001100100100101000011010000011011000000000000000001001100010000000000010001 011000010000000101100101101101010101110000011
 01111000000100010010100001001000010000001001001010000101000000110000110010000010000 00001000111001000000000000010000000000010100
 000000000100000010010100001101000011101000100000000000000100110000000001010101000110 1000000000000100101101101100010111110100011
 0000000001100100000101000000010000111000000000000000000000100100100000010101010001101 000010000000101101001100000010101110100011
 10000010100000100000001110000010100001000000110001110000100100000011001000001000000000 10100000110010000010010000101000000000000
 000000100000001000000011100000001000000001001100000100101001000000100010000010000000001 0100000110010000010000000101000000000000
 0111110100010000011010000100100101000000000100101000110100000011000001000010000110010000 001111001000010000000010000000001001100
 10000010100000000000001110000010100000000100110100110010100100000010001000001000000000110 00000110010000010010000100000000000000
 000000000110010000010100001101000011100100100000000000000010110011000001010101000010010000 0000000101101100101101000111110100011
 0110110100010001011010000100100001000000100100101000010100000011000011001010000010000000100 111001000010000000010000000001110100
 01111001000110000110100001001000010000000001000010001100000000110000100010100010100100001001 01001000010000000010000000001001100
 001111010000100101101000010010010100000010010010000001010100001100001100101000110001000010010 0001000010000000010010000001001100
 0110010000011000010000000100100001000000100100100000110000000001000001001010001100010000100110 000000000100000010000000001011100
 10000000100000100000001000000010100001000100100101100010100100000011001000001000000000110100000 00000000000010000101000000000000
 100000101000001000000011100000100000010000001001011100101001000000100010000000000000001101000000 0000000010010000100000000000000
 0111110100011001011010000100100001000000000100001000110100000011000011001010001110010000100111000 000010000000010000000000011000
 00000000011001001000010000110000000000110010000000000000010011000000000101010000011011000010000000 01100101100101010111100100001
 000000011000001000000011100000000000000001001101011100101001000000100010000010000000001101000000000 0000010010000101000000000000
 0000000001100100100101000011010000011011001000000000000000101100010000010001010001100100001000000010 101101001100010111110100011
 00000000010001000000010000110100000100100010000000000000010011001100000101010100011011000010000000101 01001100100010111100100011
 011010010001000101100000010010000000000010010010100011010000000000001000101000111000000010011100010000 0000000010000000001011100
 0000000001100000100000000011010000101010001000000000000001101100110000010100010001001100001000000000110 100101001010011110100011
 00000000000000001000010000110100001110010010000000000000011011001100000101000100001010000010001000101001 00001101000101110100001
 100000101000000000000011100000101000000001000101011100101001000000110010000000000000001101000000100100000 0000000100000000000000
 0000000001100000000100000011010100111010001000000000000001101100110000010001010001101100000000000010110000 101101010111110100011
 00000000011001001001010000110100001110110010000000000000011011000100000100010100011011000010000000100101001 01001010111100100011
 100000101000001000000011100000101000010001001101011100001001000000110010000010000000001001000001100100000000 0000100000000000000
 0000000001100000100001000011010000100001000000000000000001101100100000010001010000101000001000000000100110110 101010111100100011
 00000000011001001001010000110100001110110010000000000000011011001100000101010000011010000010000000101100101001 01010011110100011
 001110010000100101101000010010000100000010000010000011010000001100000000101000110001000010011110010000100000000 0000000001001100
 0000000001100100100101000011010000111011001000000000000001001100110000000101000000100000001000000010000110110110 010101110100010
 10000010100000100000001100000010100001000100111100010010100100000011001000001000000000110100000110010000010010000 00000000000000
 000000000110000010010100001101000011001100100000000000000110110010000001010101000110110000000100001011010011011010 0001110100011
 0000001010000010000000010000001010000100010001010110001010010000001000100000100000000011000000010001000000000000000 000000000000
 00000000011001001001000000010100001110000000000000000000011010000100000100010100011011000010000000101100101101001000 10110100011
 000000000110010010010100001101000011001100100000000000000100000001000001000101000100100000100000001011010011011000001 1100100011
 0000000001100100100101000001010000110011001000000000000001101100010000000101010001101100001000000010110110110110101001 000000011
 00000000010001001001010000000100001000100000000000000000011010001000000101010000011011000010000000101101101101101010110 00100010
 000000000110010010000100001101000010101000100000000000000100110011000001010101000110110000100000000010011010001010101000 0000001
 0101110000011001010000000000100101000000100100001000000100000010000000001010001110000000100111100000001000000001000000000 010100
 00000000011001001011010000110000000110110010000000000000010001001100000101000000010011000011000000101101101101101010110100 00010
 001110010001100100001000010010010100000010010010000011000000001100001100101000111001000000010010010000100000000000000000010 0100
 0110010101011001011010000100100100000001100100101000110100000011000010001010001010000000100011100100001000000001000000000000 000
 01110101000110010110100001001001010000001001001010001101000000110000000010100010100100001001111000000010000000010000000001010 00
 000000000010000010010100001101000011101100100000000000000110110011000001010101000110110000100000000011010011011010101111001000 1
 0000000000100100100101000001010000111001001000000000000001101100010000010101010001101100001000000010110110110110001011101000001 

結構縦に似たようなパターンが並んでいるのが見える

Minnlabic が出てくる組み合わせを見ると、
 000000000110010010010100001101000011001100100000000000000 1011001100000100010100011010000000010000100101101101101010111110100011
となっており、例えば次の Minnoc の組み合わせ
 0000000001110100000101000010010000111011001000000000000001 011001100000101010100010001000010000000001001101101100010101100000011
          --  -     - -    -  -    --  --  -                 --  --     - - - -   -                     -- -- --   - - --      --

Amatubu_Wiki | Memo | RecentChanges | Preferences
This page is read-only | View other revisions | View current revision
Edited March 15, 2013 20:53 by Amatubu (diff)
Search:

Copyright (c) 1996-2019 naoki iimura e-mail