ICFP Contest 2006
Team: Abstraction Anonymous

weasel.rb

Download

  1. # weasel.rb
  2. # 2006 David Baird
  3. # This is used be "balance.rb"
  4.  
  5. $weasel = [[1, 1, 31, 7], [1, 1, 31, 13], [1, 1, 31, 25], [2, 2, 30,
  6. 14], [2, 2, 30, 15], [2, 2, 30, 26], [2, 2, 30, 27], [2, 3, 1, 29],
  7. [2, 3, 30, 14], [2, 3, 30, 15], [2, 3, 30, 26], [2, 3, 30, 27], [2, 7,
  8. 1, 25], [2, 11, 1, 21], [2, 15, 1, 17], [2, 19, 1, 13], [2, 23, 1, 9],
  9. [2, 27, 1, 5], [2, 31, 1, 1], [3, 1, 29, 2], [3, 1, 29, 13], [3, 1, 29,
  10. 25], [3, 17, 18, 29], [3, 17, 19, 29], [3, 18, 1, 29], [3, 19, 2, 29],
  11. [3, 19, 3, 29], [4, 4, 28, 28], [4, 4, 28, 29], [4, 4, 28, 30], [4, 4,
  12. 28, 31], [4, 5, 1, 27], [4, 5, 28, 28], [4, 5, 28, 29], [4, 5, 28, 30],
  13. [4, 5, 28, 31], [4, 6, 2, 26], [4, 6, 3, 26], [4, 6, 28, 28], [4, 6,
  14. 28, 29], [4, 6, 28, 30], [4, 6, 28, 31], [4, 7, 28, 28], [4, 7, 28, 29],
  15. [4, 7, 28, 30], [4, 7, 28, 31], [4, 13, 1, 19], [4, 14, 2, 18], [4, 14,
  16. 3, 18], [4, 21, 1, 11], [4, 22, 2, 10], [4, 22, 3, 10], [4, 29, 1, 3],
  17. [4, 30, 2, 2], [4, 30, 3, 2], [5, 1, 27, 4], [5, 1, 27, 6], [5, 1, 27,
  18. 11], [5, 1, 27, 15], [5, 1, 27, 25], [5, 6, 2, 26 ], [5, 6, 3, 26],
  19. [5, 14, 2, 18], [5, 14, 3, 18], [5, 17, 20, 27], [5, 17, 21, 27], [5,
  20. 17, 22, 27], [5, 17, 23, 27], [5, 20, 1, 27], [5, 21, 4, 27], [5, 21,
  21. 5, 27], [5, 21, 6, 27], [5, 21, 7, 27], [5, 22, 1, 27], [5, 22, 2, 10],
  22. [5, 22, 3, 10], [5, 23, 2, 27], [5, 23, 3, 27], [5, 30, 2, 2], [5, 30,
  23. 3, 2], [6, 2, 26, 4], [6, 2, 26, 5], [6, 2, 26, 26], [6, 2, 26, 27],
  24. [6, 3, 26, 4], [6, 3, 26, 5], [6, 3, 26, 26], [6, 3, 26, 27], [6, 5, 1,
  25. 27], [6, 13, 1, 19], [6, 18, 20, 26], [6, 18, 21, 26], [6, 18, 22, 26],
  26. [6, 18, 23, 26], [6, 19, 20, 26], [6, 19, 21, 26], [6, 19, 22, 26], [6,
  27. 19, 23, 26], [6, 20, 2, 26], [6, 20, 3, 26], [6, 21, 1, 11], [6, 21, 2,
  28. 26], [6, 21, 3, 26], [6, 22, 4, 26], [6, 22, 5, 26], [6, 22, 6, 26], [6,
  29. 22, 7, 26], [6, 23, 4, 26], [6, 23, 5, 26], [6, 23, 6, 26], [6, 23, 7,
  30. 26], [6, 29, 1, 3], [7, 1, 1, 31], [7, 1, 25, 2], [7, 1, 25, 7], [7, 1,
  31. 25, 25], [7, 7, 1, 25], [7, 9, 1, 23], [7, 15, 1, 17], [7, 17, 1, 15],
  32. [7, 17, 18, 25], [7, 17, 19, 25], [7, 18, 1, 25], [7, 19, 2, 25], [7,
  33. 19, 3, 25], [7, 23, 1, 9], [7, 25, 1, 7], [7, 31, 1, 1], [8, 9, 1, 23],
  34. [8, 10, 2, 22], [8, 10, 3, 22], [8, 12, 4, 20], [8, 12, 5, 20], [8, 12,
  35. 6, 20], [8, 12, 7, 20], [8, 25, 1, 7], [8, 26, 2, 6], [8, 26, 3, 6], [8,
  36. 28, 4, 4], [8, 28, 5, 4], [8, 28, 6, 4], [8, 28, 7, 4], [9, 1, 23, 7],
  37. [9, 1, 23, 8], [9, 1, 23, 10], [9, 1, 23, 12], [9, 1, 23, 14], [9, 1,
  38. 23, 21], [9, 1, 23, 29], [9, 10, 2, 22], [9, 10, 3, 22], [9, 12, 4, 20],
  39. [9, 12, 5, 20], [9, 12, 6, 20], [9, 12, 7, 20], [9, 17, 24, 23], [9, 17,
  40. 25, 23], [9, 17, 26, 23], [9, 17, 27, 23], [9, 17, 28, 23], [9, 17, 29,
  41. 23], [9, 17, 30, 23], [9, 17, 31, 23], [9, 24, 1, 23], [9, 25, 8, 23],
  42. [9, 25, 9, 23], [9, 25, 10, 23], [9, 25, 11, 23], [9, 25, 12, 23], [9,
  43. 25, 13, 23], [9, 25, 14, 23], [9, 25, 15, 23], [9, 26, 1, 23], [9, 26,
  44. 2, 6], [9, 26, 3, 6], [9, 27, 2, 23], [9, 27, 3, 23], [9, 28, 1, 23],
  45. [9, 28, 4, 4], [9, 28, 5, 4], [9, 28, 6, 4], [9, 28, 7, 4], [9, 29, 4,
  46. 23], [9, 29, 5, 23], [9, 29, 6, 23], [9, 29, 7, 23], [9, 30, 1, 23],
  47. [9, 31, 2, 23], [9, 31, 3, 23], [10, 2, 22, 8], [10, 2, 22, 9], [10, 2,
  48. 22, 12], [10, 2, 22, 13], [10, 2, 22, 22], [10, 2, 22, 23], [10, 2, 22,
  49. 30], [10, 2, 22, 31], [10, 3, 22, 8], [10, 3, 22, 9], [10, 3, 22, 12],
  50. [10, 3, 22, 13], [10, 3, 22, 22], [10, 3, 22, 23], [10, 3, 22, 30],
  51. [10, 3, 22, 31], [10, 9, 1, 23], [10, 12, 4, 20], [10, 12, 5, 20],
  52. [10, 12, 6, 20], [10, 12, 7, 20], [10, 18, 24, 22], [10, 18, 25, 22],
  53. [10, 18, 26, 22], [10, 18, 27, 22], [10, 18, 28, 22], [10, 18, 29, 22],
  54. [10, 18, 30, 22], [10, 18, 31, 22], [10, 19, 24, 22], [10, 19, 25, 22],
  55. [10, 19, 26, 22], [10, 19, 27, 22], [10, 19, 28, 22], [10, 19, 29, 22],
  56. [10, 19, 30, 22], [10, 19, 31, 22], [10, 24, 2, 22], [10, 24, 3, 22],
  57. [10, 25, 1, 7], [10, 25, 2, 22], [10, 25, 3, 22], [10, 26, 8, 22],
  58. [10, 26, 9, 22], [10, 26, 10, 22], [10, 26, 11, 22], [10, 26, 12, 22],
  59. [10, 26, 13, 22], [10, 26, 14, 22], [10, 26, 15, 22], [10, 27, 8, 22],
  60. [10, 27, 9, 22], [10, 27, 10, 22], [10, 27, 11, 22], [10, 27, 12, 22],
  61. [10, 27, 13, 22], [10, 27, 14, 22], [10, 27, 15, 22], [10, 28, 2, 22],
  62. [10, 28, 3, 22], [10, 28, 4, 4], [10, 28, 5, 4], [10, 28, 6, 4], [10,
  63. 28, 7, 4], [10, 29, 2, 22], [10, 29, 3, 22], [10, 30, 4, 22], [10, 30,
  64. 5, 22], [10, 30, 6, 22], [10, 30, 7, 22], [10, 31, 4, 22], [10, 31, 5,
  65. 22], [10, 31, 6, 22], [10, 31, 7, 22], [11, 1, 21, 2], [11, 1, 21, 11],
  66. [11, 1, 21, 15], [11, 1, 21, 21], [11, 1, 21, 29], [11, 5, 1, 27],
  67. [11, 11, 1, 21], [11, 12, 4, 20], [11, 12, 5, 20], [11, 12, 6, 20],
  68. [11, 12, 7, 20], [11, 17, 18, 21], [11, 17, 19, 21], [11, 18, 1, 21],
  69. [11, 19, 2, 21], [11, 19, 3, 21], [11, 21, 1, 11], [11, 27, 1, 5], [11,
  70. 28, 4, 4], [11, 28, 5, 4], [11, 28, 6, 4], [11, 28, 7, 4], [12, 4, 20,
  71. 8], [12, 4, 20, 9], [12, 4, 20, 10], [12, 4, 20, 11], [12, 5, 20, 8],
  72. [12, 5, 20, 9], [12, 5, 20, 10], [12, 5, 20, 11], [12, 6, 20, 8], [12,
  73. 6, 20, 9], [12, 6, 20, 10], [12, 6, 20, 11], [12, 7, 20, 8], [12, 7, 20,
  74. 9], [12, 7, 20, 10], [12, 7, 20, 11], [12, 9, 1, 23], [12, 10, 2, 22],
  75. [12, 10, 3, 22], [12, 20, 24, 20], [12, 20, 25, 20], [12, 20, 26, 20],
  76. [12, 20, 27, 20], [12, 20, 28, 20], [12, 20, 29, 20], [12, 20, 30, 20],
  77. [12, 20, 31, 20], [12, 21, 24, 20], [12, 21, 25, 20], [12, 21, 26, 20],
  78. [12, 21, 27, 20], [12, 21, 28, 20], [12, 21, 29, 20], [12, 21, 30, 20],
  79. [12, 21, 31, 20], [12, 22, 24, 20], [12, 22, 25, 20], [12, 22, 26, 20],
  80. [12, 22, 27, 20], [12, 22, 28, 20], [12, 22, 29, 20], [12, 22, 30, 20],
  81. [12, 22, 31, 20], [12, 23, 24, 20], [12, 23, 25, 20], [12, 23, 26, 20],
  82. [12, 23, 27, 20], [12, 23, 28, 20], [12, 23, 29, 20], [12, 23, 30, 20],
  83. [12, 23, 31, 20], [12, 24, 4, 20], [12, 24, 5, 20], [12, 24, 6, 20],
  84. [12, 24, 7, 20], [12, 25, 1, 7], [12, 25, 4, 20], [12, 25, 5, 20], [12,
  85. 25, 6, 20], [12, 25, 7, 20], [12, 26, 2, 6], [12, 26, 3, 6], [12, 26,
  86. 4, 20], [12, 26, 5, 20], [12, 26, 6, 20], [12, 26, 7, 20], [12, 27, 4,
  87. 20], [12, 27, 5, 20], [12, 27, 6, 20], [12, 27, 7, 20], [12, 28, 8, 20],
  88. [12, 28, 9, 20], [12, 28, 10, 20], [12, 28, 11, 20], [12, 28, 12, 20],
  89. [12, 28, 13, 20], [12, 28, 14, 20], [12, 28, 15, 20], [12, 29, 8, 20],
  90. [12, 29, 9, 20], [12, 29, 10, 20], [12, 29, 11, 20], [12, 29, 12, 20],
  91. [12, 29, 13, 20], [12, 29, 14, 20], [12, 29, 15, 20], [12, 30, 8, 20],
  92. [12, 30, 9, 20], [12, 30, 10, 20], [12, 30, 11, 20], [12, 30, 12, 20],
  93. [12, 30, 13, 20], [12, 30, 14, 20], [12, 30, 15, 20], [12, 31, 8, 20],
  94. [12, 31, 9, 20], [12, 31, 10, 20], [12, 31, 11, 20], [12, 31, 12, 20],
  95. [12, 31, 13, 20], [12, 31, 14, 20], [12, 31, 15, 20], [13, 1, 1, 31],
  96. [13, 1, 19, 4], [13, 1, 19, 6], [13, 1, 19, 13], [13, 1, 19, 19], [13,
  97. 1, 19, 23], [13, 1, 19, 27], [13, 1, 19, 31], [13, 3, 1, 29], [13, 10, 2,
  98. 22], [13, 10, 3, 22], [13, 13, 1, 19], [13, 15, 1, 17], [13, 17, 1, 15],
  99. [13, 17, 20, 19], [13, 17, 21, 19], [13, 17, 22, 19], [13, 17, 23, 19],
  100. [13, 19, 1, 13], [13, 20, 1, 19], [13, 21, 4, 19], [13, 21, 5, 19], [13,
  101. 21, 6, 19], [13, 21, 7, 19], [13, 22, 1, 19], [13, 23, 2, 19], [13, 23,
  102. 3, 19], [13, 26, 2, 6], [13, 26, 3, 6], [13, 29, 1, 3], [13, 31, 1, 1],
  103. [14, 2, 2, 30], [14, 2, 3, 30], [14, 2, 18, 4], [14, 2, 18, 5], [14, 2,
  104. 18, 14], [14, 2, 18, 15], [14, 3, 18, 4], [14, 3, 18, 5], [14, 3, 18,
  105. 14], [14, 3, 18, 15], [14, 9, 1, 23], [14, 14, 2, 18], [14, 14, 3, 18],
  106. [14, 18, 2, 14], [14, 18, 3, 14], [14, 18, 20, 18], [14, 18, 21, 18],
  107. [14, 18, 22, 18], [14, 18, 23, 18], [14, 19, 20, 18], [14, 19, 21, 18],
  108. [14, 19, 22, 18], [14, 19, 23, 18], [14, 20, 2, 18], [14, 20, 3, 18],
  109. [14, 21, 2, 18], [14, 21, 3, 18], [14, 22, 4, 18], [14, 22, 5, 18],
  110. [14, 22, 6, 18], [14, 22, 7, 18], [14, 23, 4, 18], [14, 23, 5, 18],
  111. [14, 23, 6, 18], [14, 23, 7, 18], [14, 25, 1, 7], [14, 30, 2, 2], [14,
  112. 30, 3, 2], [15, 1, 17, 2], [15, 1, 17, 7], [15, 1, 17, 13], [15, 2, 2,
  113. 30], [15, 2, 3, 30], [15, 5, 1, 27], [15, 11, 1, 21], [15, 14, 2, 18],
  114. [15, 14, 3, 18], [15, 17, 18, 17], [15, 17, 19, 17], [15, 18, 1, 17],
  115. [15, 18, 2, 14], [15, 18, 3, 14], [15, 19, 2, 17], [15, 19, 3, 17],
  116. [15, 21, 1, 11], [15, 27, 1, 5], [15, 30, 2, 2], [15, 30, 3, 2], [16,
  117. 17, 1, 15], [16, 18, 2, 14], [16, 18, 3, 14], [16, 20, 4, 12], [16, 20,
  118. 5, 12], [16, 20, 6, 12], [16, 20, 7, 12], [16, 24, 8, 8], [16, 24, 9,
  119. 8], [16, 24, 10, 8], [16, 24, 11, 8], [16, 24, 12, 8], [16, 24, 13, 8],
  120. [16, 24, 14, 8], [16, 24, 15, 8], [17, 1, 15, 7], [17, 1, 15, 13], [17,
  121. 1, 15, 16], [17, 1, 15, 18], [17, 1, 15, 20], [17, 1, 15, 22], [17, 1,
  122. 15, 24], [17, 1, 15, 26], [17, 1, 15, 28], [17, 1, 15, 30], [17, 18,
  123. 2, 14], [17, 18, 3, 14], [17, 20, 4, 12], [17, 20, 5, 12], [17, 20, 6,
  124. 12], [17, 20, 7, 12], [17, 24, 8, 8], [17, 24, 9, 8], [17, 24, 10, 8],
  125. [17, 24, 11, 8], [17, 24, 12, 8], [17, 24, 13, 8], [17, 24, 14, 8], [17,
  126. 24, 15, 8], [18, 2, 14, 14], [18, 2, 14, 15], [18, 2, 14, 16], [18, 2,
  127. 14, 17], [18, 2, 14, 20], [18, 2, 14, 21], [18, 2, 14, 24], [18, 2, 14,
  128. 25], [18, 2, 14, 28], [18, 2, 14, 29], [18, 3, 14, 14], [18, 3, 14, 15],
  129. [18, 3, 14, 16], [18, 3, 14, 17], [18, 3, 14, 20], [18, 3, 14, 21], [18,
  130. 3, 14, 24], [18, 3, 14, 25], [18, 3, 14, 28], [18, 3, 14, 29], [18, 17,
  131. 1, 15], [18, 20, 4, 12], [18, 20, 5, 12], [18, 20, 6, 12], [18, 20, 7,
  132. 12], [18, 24, 8, 8], [18, 24, 9, 8], [18, 24, 10, 8], [18, 24, 11, 8],
  133. [18, 24, 12, 8], [18, 24, 13, 8], [18, 24, 14, 8], [18, 24, 15, 8],
  134. [19, 1, 13, 2], [19, 1, 13, 13], [19, 1, 13, 19], [19, 1, 13, 23],
  135. [19, 1, 13, 27], [19, 1, 13, 31], [19, 9, 10, 13], [19, 9, 11, 13],
  136. [19, 10, 1, 13], [19, 11, 2, 13], [19, 11, 3, 13], [19, 13, 1, 19],
  137. [19, 17, 26, 13], [19, 17, 27, 13], [19, 19, 1, 13], [19, 20, 4, 12],
  138. [19, 20, 5, 12], [19, 20, 6, 12], [19, 20, 7, 12], [19, 24, 8, 8],
  139. [19, 24, 9, 8], [19, 24, 10, 8], [19, 24, 11, 8], [19, 24, 12, 8],
  140. [19, 24, 13, 8], [19, 24, 14, 8], [19, 24, 15, 8], [19, 25, 10, 13],
  141. [19, 25, 11, 13], [19, 26, 1, 13], [19, 27, 2, 13], [19, 27, 3, 13],
  142. [20, 4, 12, 16], [20, 4, 12, 17], [20, 4, 12, 18], [20, 4, 12, 19],
  143. [20, 4, 12, 24], [20, 4, 12, 25], [20, 4, 12, 26], [20, 4, 12, 27],
  144. [20, 5, 12, 16], [20, 5, 12, 17], [20, 5, 12, 18], [20, 5, 12, 19],
  145. [20, 5, 12, 24], [20, 5, 12, 25], [20, 5, 12, 26], [20, 5, 12, 27],
  146. [20, 6, 12, 16], [20, 6, 12, 17], [20, 6, 12, 18], [20, 6, 12, 19],
  147. [20, 6, 12, 24], [20, 6, 12, 25], [20, 6, 12, 26], [20, 6, 12, 27], [20,
  148. 7, 12, 16], [20, 7, 12, 17], [20, 7, 12, 18], [20, 7, 12, 19], [20, 7,
  149. 12, 24], [20, 7, 12, 25], [20, 7, 12, 26], [20, 7, 12, 27], [20, 17, 1,
  150. 15], [20, 18, 2, 14], [20, 18, 3, 14], [20, 24, 8, 8], [20, 24, 9, 8],
  151. [20, 24, 10, 8], [20, 24, 11, 8], [20, 24, 12, 8], [20, 24, 13, 8], [20,
  152. 24, 14, 8], [20, 24, 15, 8], [21, 1, 11, 4], [21, 1, 11, 6], [21, 1, 11,
  153. 11], [21, 1, 11, 15], [21, 1, 11, 21], [21, 1, 11, 29], [21, 9, 1, 23],
  154. [21, 9, 12, 11], [21, 9, 13, 11], [21, 9, 14, 11], [21, 9, 15, 11],
  155. [21, 11, 1, 21], [21, 12, 1, 11], [21, 13, 4, 11], [21, 13, 5, 11],
  156. [21, 13, 6, 11], [21, 13, 7, 11], [21, 14, 1, 11], [21, 15, 2, 11],
  157. [21, 15, 3, 11], [21, 17, 28, 11], [21, 17, 29, 11], [21, 17, 30, 11],
  158. [21, 17, 31, 11], [21, 18, 2, 14], [21, 18, 3, 14], [21, 21, 1, 11], [21,
  159. 23, 1, 9], [21, 24, 8, 8], [21, 24, 9, 8], [21, 24, 10, 8], [21, 24, 11,
  160. 8], [21, 24, 12, 8], [21, 24, 13, 8], [21, 24, 14, 8], [21, 24, 15, 8],
  161. [21, 25, 12, 11], [21, 25, 13, 11], [21, 25, 14, 11], [21, 25, 15, 11],
  162. [21, 28, 1, 11], [21, 29, 4, 11], [21, 29, 5, 11], [21, 29, 6, 11],
  163. [21, 29, 7, 11], [21, 30, 1, 11], [21, 31, 2, 11], [21, 31, 3, 11],
  164. [22, 2, 10, 4], [22, 2, 10, 5], [22, 2, 10, 22], [22, 2, 10, 23], [22,
  165. 2, 10, 30], [22, 2, 10, 31], [22, 3, 10, 4], [22, 3, 10, 5], [22, 3, 10,
  166. 22], [22, 3, 10, 23], [22, 3, 10, 30], [22, 3, 10, 31], [22, 10, 2, 22],
  167. [22, 10, 3, 22], [22, 10, 12, 10], [22, 10, 13, 10], [22, 10, 14, 10],
  168. [22, 10, 15, 10], [22, 11, 12, 10], [22, 11, 13, 10], [22, 11, 14, 10],
  169. [22, 11, 15, 10], [22, 12, 2, 10], [22, 12, 3, 10], [22, 13, 2, 10],
  170. [22, 13, 3, 10], [22, 14, 4, 10], [22, 14, 5, 10], [22, 14, 6, 10],
  171. [22, 14, 7,