Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
treffen:problemsolving:008_set [2021/12/17 13:08] max |
treffen:problemsolving:008_set [2022/01/22 14:38] (aktuell) max |
||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| - | ====== 008 Problem Solving: Set ====== | + | ====== 008: Set ====== |
| | Serie | [[treffen: | | Serie | [[treffen: | ||
| | Von | [[user: | | Von | [[user: | ||
| | Datum | 15.Dez 2021 | | | Datum | 15.Dez 2021 | | ||
| - | | Download | {{ : | + | | Download | {{ : |
| | Schwierigkeit | {{: | | Schwierigkeit | {{: | ||
| + | |||
| + | |||
| + | |||
| + | ===== Lösungen ===== | ||
| + | {{: | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== nopx ==== | ||
| + | Stupide Brute Force Loesung in Python 3.8 hier zusammengefasst. Ausfuehrlicher Code kann {{ : | ||
| + | |||
| + | <code Python> | ||
| + | import sys | ||
| + | import numpy as np | ||
| + | import itertools | ||
| + | |||
| + | |||
| + | 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) | ||
| + | </ | ||
| + | |||
| + | |||
| + | ~~DISCUSSION~~ | ||