Seite 1 von 1

Re: drei beliebige Zahlen doppelt

Verfasst: Dienstag 16. Januar 2018, 15:29
von __deets__
Das ist komplizierter, als du es brauchst.

Schau dir die genannten Datenstrukturen an. Da lernst du mehr, auch wenn du mal - Schockschwerenot - 7 Zahlen zu vergleichen hast. Oder 8.

Re: drei beliebige Zahlen doppelt

Verfasst: Dienstag 16. Januar 2018, 15:47
von anonym97
Habe ein bisschen wegen Sortieralgorythmen recharchiert, und habe direkt einen einfachen Algorythmus gefunden, den ich nun in das Spiel implementieren werde.
Hier ist er:

Code: Alles auswählen

c = 6
d = 5
e = 4
f = 4
g = 5
h = 6
# Sortieralgorithmus
def Sortieren(L):
    n = len(L)
    i = 0
    while i < n - 1:
        minpos = i
        m = i + 1
        while m < n:
            if L[m] < L[minpos]:
                minpos = m
            m = m + 1
        h = L[i]
        L[i] = L[minpos]
        L[minpos] = h
        i = i + 1
    return L


L = [c, d, e, f, g, h]
L = Sortieren(L)
if L == [1, 2, 3, 4, 5, 6]:
    print("Ja")
else:
    if L == [1,1,2,2,3,3] or [1,1,2,2,4,4] or [1,1,2,2,5,5] or [1,1,2,2,6,6] or [1,1,3,3,4,4] or [1,1,3,3,5,5] or [1,1,3,3,6,6] or [1,1,4,4,5,5] or [1,1,4,4,6,6]  or [1,1,5,5,6,6] or [2,2,3,3,4,4] or [2,2,3,3,5,5] or [2,2,3,3,6,6] or[2,2,4,4,5,5] or [2,2,4,4,6,6] or [2,2,5,5,6,6] or [3,3,4,4,5,5] or [3,3,4,4,5,5] or [3,3,4,4,6,6] or [3,3,5,5,6,6] or [4,4,5,5,6,6]:
        print("YEAH")
Ist zwar immer noch ziemlich aufwendig, aber nur für die überprüfung. Kann aber das komplette Spiel deutlich kürzen.
Danke für eure Hilfe :D :D

Re: drei beliebige Zahlen doppelt

Verfasst: Dienstag 16. Januar 2018, 15:49
von __deets__
L.sort() haette es auch getan.

Re: drei beliebige Zahlen doppelt

Verfasst: Dienstag 16. Januar 2018, 16:13
von Sirius3
@Florian Jochum: jetzt benutzt Du ja doch schon Listen. Die if-Abfrage ist falsch, da `or` nicht einem umgangssprachlichen "oder" entspricht. Es ist also nicht "L ist entweder A oder B oder C" sondern der Computer interpretiert es als "L ist A, logisch oder verknüpft mit B ist wahr", wobei bei Dir B eine nicht-leere Liste immer wahr ist, so dass sich der Ausdruck zu "immer wahr" verkürzen läßt. Was Du suchst, ist der `in`-Operator:

Code: Alles auswählen

L = sorted([c, d, e, f, g, h])
if L == [1, 2, 3, 4, 5, 6]:
    print("Ja")
elif L in ([1,1,2,2,3,3], [1,1,2,2,4,4], [1,1,2,2,5,5], [1,1,2,2,6,6], [1,1,3,3,4,4], [1,1,3,3,5,5], [1,1,3,3,6,6], [1,1,4,4,5,5], [1,1,4,4,6,6], [1,1,5,5,6,6], [2,2,3,3,4,4], [2,2,3,3,5,5], [2,2,3,3,6,6], [2,2,4,4,5,5], [2,2,4,4,6,6], [2,2,5,5,6,6], [3,3,4,4,5,5], [3,3,4,4,5,5], [3,3,4,4,6,6], [3,3,5,5,6,6], [4,4,5,5,6,6]):
    print("YEAH")
oder eben ganz kurz:

Code: Alles auswählen

L = collections.Counter([c, d, e, f, g, h])
if set(L.values()) == {2}:
    print("YEAH")