treffen:problemsolving:008_set

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Nächste Überarbeitung
Vorherige Überarbeitung
treffen:problemsolving:008_set [2021/12/17 13:06]
max angelegt
treffen:problemsolving:008_set [2022/01/22 14:38] (aktuell)
max
Zeile 1: Zeile 1:
-====== 008 Problem SolvingSet ======+{{:treffen:problemsolving:setwithfriends.png?400|}}
  
-Published: Dec 15th 2021 
  
-{{ :treffen:problemsolving:008_problemsolving_set.pdf |Download [pdf]}}+====== 008: Set ====== 
 + 
 +| Serie | [[treffen:problemsolving|treffen:problemsolving]] |  
 +| Von | [[user:nopx|nopx]] | 
 +| Datum | 15.Dez 2021 | 
 +| Download | {{ :treffen:problemsolving:008_problemsolving_set.pdf |Aufgabenbeschreibung [pdf]}} 
 +| Schwierigkeit | {{:treffen:problemsolving:progress1.png?nolink&160 |}} |  
 + 
 + 
 + 
 +===== Lösungen ===== 
 +{{:treffen:problemsolving:spoileralert.png?200|}} 
 + 
 +---- 
 + 
 +==== nopx ==== 
 +Stupide Brute Force Loesung in Python 3.8 hier zusammengefasst. Ausfuehrlicher Code kann {{ :treffen:problemsolving:008_problemsolving_set_solution_max_v0.2.zip |hier}} runtergeladen werden. 
 + 
 +<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), dtype=int) 
 +    for i in range(0,len(instr),num_properties): 
 +        for j in range(num_properties): 
 +            cards[i//num_properties,j] = ord(instr[i+j]) 
 +     
 +    idxs_cards = list(range(len(cards))) 
 +    solutions = [] 
 +    for perm in itertools.permutations(idxs_cards,setsize): 
 +        for prop_id in range(num_properties): 
 +            l = cards[perm,prop_id] 
 +            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__ == "__main__": 
 +    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) 
 +</code> 
 + 
 + 
 +~~DISCUSSION~~
  • treffen/problemsolving/008_set.1639746366.txt.gz
  • Zuletzt geändert: 2021/12/17 13:06
  • von max