Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung Letzte Überarbeitung Beide Seiten, nächste Überarbeitung | ||
treffen:problemsolving:008_set [2021/12/17 13:08] max |
treffen:problemsolving:008_set [2022/01/22 14:37] 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~~ |