De binaire puzzel is een uitdagende puzzel die je op kunt lossen door logisch te redeneren. Hoewel de binaire puzzel slechts bestaat uit nullen en enen, is het oplossen zeker niet gemakkelijk.
Opgave van een eenvoudige 6x6 binaire puzzel:
Oplossing van deze puzzel:
Deze oplossing stellen we in python voor door een geneste lijst met 6 sublijsten die elk een rij van deze oplossing voorstellen. Elke sublijst bevat 6 elementen.
unieke_elementen
Schrijf een functie unieke_elementen
die als argument een lijst heeft. Deze lijst kan om het even welke elementen bevatten.
De functie gaat na of alle elementen in de lijst uniek zijn en retourneert in dat geval True, anders False.
>>> unieke_elementen([1, 2, 3]) True >>> unieke_elementen([1, 2, 2]) False >>> unieke_elementen([[0, 1, 1, 0], [1, 0, 0, 1], [0, 1, 1, 0]]) False >>> unieke_elementen([[0, 1, 1, 0], [1, 0, 0, 1], [0, 1, 0, 0]]) True
gebalanceerd
Schrijf een functie gebalanceerd
die als argument een lijst heeft met enkel nullen en enen.
De functie gaat na of er evenveel nullen als enen voorkomen in de opgegeven lijst en retourneert in dat geval True, anders False.
>>> gebalanceerd([1, 0, 1, 0]) True >>> gebalanceerd([1, 0, 1, 1]) False
max_2
Schrijf een functie max_2
die als argument een lijst heeft met enkel nullen en enen.
De functie gaat na of er in de opgegeven lijst maximaal 2 nullen of enen na elkaar voorkomen. In dat geval retourneert de functie True. Als er in de lijst een opeenvolging van drie of meer nullen of enen na elkaar voorkomt, retourneert de functie False.
>>> max_2([1, 0, 1, 0, 0, 1]) True >>> max_2([1, 0, 1, 1, 1]) False
transponeer
Schrijf een functie transponeer
die als argument een geneste lijst heeft die de representatie is van een vierkante matrix (d.w.z. elke sublijst in de hoofdlijst heeft hetzelfde aantal elementen als de hoofdlijst zelf).
De functie retourneert de getransponeerde matrix1 onder de vorm van een geneste lijst.
>>> transponeer([[1, 2], [3, 4]]) [[1, 3], [2, 4]] >>> transponeer([[1, 0, 1, 1], [1, 0, 1, 1], [0, 1, 1, 0], [1, 0, 0, 0]]) [[1, 1, 0, 1], [0, 0, 1, 0], [1, 1, 1, 0], [1, 1, 0, 0]]
is_correct
Schrijf een functie is_correct
die nagaat of een oplossing voldoet aan alle regels voor een binaire puzzel.
De functie heeft 1 argument: een geneste lijst die de representatie is van een vierkante n x n matrix (n is even) met enkel nullen en enen. Dit moet je niet controleren.
De functie gaat na of voldaan is aan deze regels:
De functie retourneert True
of False
.
>>> is_correct([[1, 1, 0, 1, 0, 0], [0, 1, 0, 0, 1, 1], [0, 0, 1, 0, 1, 1], [1, 0, 1, 1, 0, 0], [0, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1]]) True >>> is_correct([[0, 1, 1, 1, 0, 0], [0, 1, 0, 0, 1, 1], [0, 0, 1, 0, 1, 1], [1, 0, 1, 1, 0, 0], [0, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1]]) False