treffen:problemsolving:008_set

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte Überarbeitung Beide Seiten, nächste Überarbeitung
treffen:problemsolving:008_set [2022/01/19 14:00]
max
treffen:problemsolving:008_set [2022/01/22 14:37]
max
Zeile 18: Zeile 18:
  
 ==== nopx ==== ==== nopx ====
 +Stupide Brute Force Loesung in Python 3.8 hier zusammengefasst. Ausfuehrlicher Code kann {{ :treffen:problemsolving:008_problemsolving_set_solution_max.zip |hier}} runtergeladen werden.
 +
 <code Python> <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> </code>
 +
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  • treffen/problemsolving/008_set.txt
  • Zuletzt geändert: 2022/01/22 14:38
  • von max