Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung Nächste Überarbeitung Beide Seiten, nächste Überarbeitung | ||
treffen:problemsolving:008_set [2022/01/19 14:00] max |
treffen:problemsolving:008_set [2022/01/21 22:59] max |
||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
- | ====== 008: Problem Solving | + | ====== 008: Set ====== |
| Serie | [[treffen: | | Serie | [[treffen: | ||
Zeile 18: | Zeile 18: | ||
==== nopx ==== | ==== nopx ==== | ||
+ | Stupide Brute Force Loesung in Python 3.8: | ||
+ | |||
<code Python> | <code Python> | ||
+ | import sys | ||
+ | import numpy as np | ||
+ | import itertools | ||
+ | options = ' | ||
+ | |||
+ | num_properties = 4 | ||
+ | setsize = 3 | ||
+ | |||
+ | def solve_set(instr : str) -> list: | ||
+ | assert(len(instr) % num_properties == 0) | ||
+ | num_cards = len(instr) // num_properties | ||
+ | cards = np.zeros( ( num_cards, num_properties), | ||
+ | for i in range(0, | ||
+ | for j in range(num_properties): | ||
+ | cards[i// | ||
+ | | ||
+ | idxs_cards = list(range(len(cards))) | ||
+ | solutions = [] | ||
+ | for perm in itertools.permutations(idxs_cards, | ||
+ | for prop_id in range(num_properties): | ||
+ | l = cards[perm, | ||
+ | unique = np.unique(l) | ||
+ | if len(unique) != 1 and len(unique) < setsize: | ||
+ | break | ||
+ | else: | ||
+ | if prop_id == num_properties-1: | ||
+ | solutions.append(perm) | ||
+ | |||
+ | return solutions, cards | ||
+ | |||
+ | if __name__ == " | ||
+ | instr = str(sys.argv[1]) | ||
+ | | ||
+ | if len(instr) < num_properties: | ||
+ | exit(1) | ||
+ | | ||
+ | solutions, cards = solve_set(instr) | ||
+ | | ||
+ | if len(solutions) > 0: | ||
+ | exit(0) | ||
+ | else: | ||
+ | exit(1) | ||
</ | </ | ||
+ | |||
+ | Ausfuehrlich Code kann {{ : | ||
~~DISCUSSION~~ | ~~DISCUSSION~~ |