nimmt_sort.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. table = [[15, 40], [5, 20], [1, 2, 22, 33], [4]]
  2. print(table)
  3. def query_user(options):
  4. num = None
  5. while True:
  6. print('select one!')
  7. print(options)
  8. num = int(input())
  9. if num in options:
  10. break
  11. return num
  12. def select_row():
  13. # print table
  14. return query_user(list(range(4)))
  15. # def select_card():
  16. # return query_user(hand)
  17. def place_card(card):
  18. mindiff = 104
  19. candidate = None
  20. for row in table:
  21. diff = card - row[-1]
  22. if diff > 0 and diff < mindiff:
  23. mindiff = diff
  24. candidate = row
  25. if not candidate or len(candidate) == 5:
  26. return False
  27. elif len(candidate) == 5:
  28. return True
  29. else:
  30. candidate.append(card)
  31. return True
  32. def place_all_cards(cards):
  33. cards.sort()
  34. for card in cards:
  35. if place_card(card):
  36. pass; # print('ok')
  37. else:
  38. print(card, ': select a row!')
  39. selection = select_row()
  40. reset_row(selection, card)
  41. def card_value(card):
  42. for l, n in zip([55, 11, 10, 5], [7, 5, 3, 2]):
  43. if card % l == 0:
  44. return n
  45. return 1
  46. def calc_penality(row):
  47. return sum(map(card_value, row))
  48. # place_all_cards([3, 10, 35, 34])
  49. # print(table)
  50. # table.sort(key=lambda x: x[0])
  51. # print(table)
  52. print(calc_penality(table[2]))
  53. reset_row(0, 99)
  54. print(table)
  55. # print(list(zip(range(1, 105), map(card_value, range(1, 105)))))