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
treffen:problemsolving:008_set [2022/01/19 14:00]
max
treffen:problemsolving:008_set [2022/01/22 14:38] (aktuell)
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_v0.2.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.1642600825.txt.gz
  • Zuletzt geändert: 2022/01/19 14:00
  • von max