Új hozzászólás Aktív témák

  • feka007

    veterán

    Sziasztok!

    Épp a listákat vesszük Python tanfolyamon, és elakadtam az alábbi feladattal. Tudnátok segíteni a javításban pls?

    A feladat leírása:

    "A török szultán születésnapja alkalmából elküldte az első szolgáját a börtönbe, hogy mind a 100 cella ajtaját nyissa ki. Második szolgájával utána minden második ajtót bezáratott. A harmadik szolga minden harmadik ajtót kinyitott, ha zárva volt, illetve bezárt, ha nyitva találta. A negyedik szolga minden negyedik ajtó állapotát változtatta meg, és így tovább, egészen a 100. szolgáig. Mely cellák ajtaja maradt nyitva a végén?"

    Ahogy eddig próbáltam megoldani:

    list=[]
    for i in range(100):
    list.append(1)
    for i in range(1,len(list),2):
    list[i]=0
    for i in range(2,len(list),3):
    if list[i]==1:
    list[i]=0
    else:
    list[i]=1
    for i in range(3,len(list),4):
    if list[i]==1:
    list[i]=0
    else:
    list[i]=1
    print(list)

    for i in range(len(list)):
    if list[i]==1:
    print(f"{i+1}. cella: nyitva")
    else:
    print(f"{i+1}. cella: csukva")

    Nem tudom, hogy egyáltalán az egymásba ágyazott for loopokkal kéne-e elindulnom, de az volt az elgondolás, hogy legyen minden alapból nyitva (1) egy 100-as listában, amit az egymásba ágyazott for ciklusokkal bejárok egymás után, hogy először minden 2., majd minden 3. és végül minden 4. értéket átírjak a megfelelő állásra (1 vagy 0), amiből aztán kiprintelem a végeredményt. Csak valahogy annyira nem tűnik jónak. Lehet az egészet máshogy kéne megközelíteni? Remélem valaki tapasztaltabb itt megmondja majd. :) Köszi előre is

Új hozzászólás Aktív témák