Advertisement
DeaD_EyE

bad_algorithm_to_fill_a_gap.py

Feb 3rd, 2017
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.61 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. """
  3. task: Fill a a gap complete with blind plates.
  4. picture: http://www.koester-systemtechnik.de/images/Pr2.png
  5. available plates: 5, 7, 12, 14, 24
  6. """
  7.  
  8. from itertools import product
  9.  
  10. def calc_plates(free, plates):
  11.     """Returns the possible solutions of plates to fill the gap"""
  12.     plen = len(plates)
  13.     ranges = product(range(plen), repeat=plen)
  14.     for row in ranges:
  15.         ssum = sum(p * n for p, n in zip(plates, row))
  16.         if ssum == free:
  17.             yield row
  18.  
  19. plates = [5, 7, 12, 14, 24]
  20. result = calc_plates(72, plates)
  21.  
  22. for n, quantity in enumerate(result, start=1):
  23.     print('#=== Result {:>2} ====='.format(n))
  24.     for p, q in zip(plates, quantity):
  25.         if not q:
  26.             continue
  27.         print('#{}x Blindplatte {}'.format(q, p))
  28.     print()
  29.  
  30. #=== Result  1 =====
  31. #3x Blindplatte 24
  32.  
  33. #=== Result  2 =====
  34. #2x Blindplatte 12
  35. #2x Blindplatte 24
  36.  
  37. #=== Result  3 =====
  38. #4x Blindplatte 12
  39. #1x Blindplatte 24
  40.  
  41. #=== Result  4 =====
  42. #1x Blindplatte 5
  43. #1x Blindplatte 7
  44. #1x Blindplatte 12
  45. #2x Blindplatte 24
  46.  
  47. #=== Result  5 =====
  48. #1x Blindplatte 5
  49. #1x Blindplatte 7
  50. #3x Blindplatte 12
  51. #1x Blindplatte 24
  52.  
  53. #=== Result  6 =====
  54. #2x Blindplatte 5
  55. #1x Blindplatte 14
  56. #2x Blindplatte 24
  57.  
  58. #=== Result  7 =====
  59. #2x Blindplatte 5
  60. #2x Blindplatte 12
  61. #1x Blindplatte 14
  62. #1x Blindplatte 24
  63.  
  64. #=== Result  8 =====
  65. #2x Blindplatte 5
  66. #4x Blindplatte 12
  67. #1x Blindplatte 14
  68.  
  69. #=== Result  9 =====
  70. #2x Blindplatte 5
  71. #2x Blindplatte 7
  72. #2x Blindplatte 24
  73.  
  74. #=== Result 10 =====
  75. #2x Blindplatte 5
  76. #2x Blindplatte 7
  77. #2x Blindplatte 12
  78. #1x Blindplatte 24
  79.  
  80. #=== Result 11 =====
  81. #2x Blindplatte 5
  82. #2x Blindplatte 7
  83. #4x Blindplatte 12
  84.  
  85. #=== Result 12 =====
  86. #3x Blindplatte 5
  87. #1x Blindplatte 7
  88. #1x Blindplatte 12
  89. #1x Blindplatte 14
  90. #1x Blindplatte 24
  91.  
  92. #=== Result 13 =====
  93. #3x Blindplatte 5
  94. #1x Blindplatte 7
  95. #3x Blindplatte 12
  96. #1x Blindplatte 14
  97.  
  98. #=== Result 14 =====
  99. #3x Blindplatte 5
  100. #3x Blindplatte 7
  101. #1x Blindplatte 12
  102. #1x Blindplatte 24
  103.  
  104. #=== Result 15 =====
  105. #3x Blindplatte 5
  106. #3x Blindplatte 7
  107. #3x Blindplatte 12
  108.  
  109. #=== Result 16 =====
  110. #4x Blindplatte 5
  111. #2x Blindplatte 14
  112. #1x Blindplatte 24
  113.  
  114. #=== Result 17 =====
  115. #4x Blindplatte 5
  116. #2x Blindplatte 12
  117. #2x Blindplatte 14
  118.  
  119. #=== Result 18 =====
  120. #4x Blindplatte 5
  121. #2x Blindplatte 7
  122. #1x Blindplatte 14
  123. #1x Blindplatte 24
  124.  
  125. #=== Result 19 =====
  126. #4x Blindplatte 5
  127. #2x Blindplatte 7
  128. #2x Blindplatte 12
  129. #1x Blindplatte 14
  130.  
  131. #=== Result 20 =====
  132. #4x Blindplatte 5
  133. #4x Blindplatte 7
  134. #1x Blindplatte 24
  135.  
  136. #=== Result 21 =====
  137. #4x Blindplatte 5
  138. #4x Blindplatte 7
  139. #2x Blindplatte 12
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement