Python :: Aufgabe #241

5 Lösungen Lösungen öffentlich

ÜBUNG ARRAYS- Wie viele Türen stehen am Ende dieses Algorithmus offen?

Anfänger - Python von sinanoz05 - 31.01.2020 um 08:39 Uhr
Ein mittelalterlicher Herrscher nahm bei einem Feldzug 100 Feinde gefangen, die er in 100 Einzelzellen steckte. An seinem Geburtstag sollten einige freigelassen werden, und zwar nach einem sehr speziellen Verfahren. Zunächst werden alle Zellentüren aufgeschlossen. Dann wird in einem zweiten Durchgang jede zweite Türe wieder geschlossen. Im dritten Durchgang wird jede dritte Tür geschlossen, falls sie offen steht, oder geöffnet falls sie geschlossen ist. Und so geht es im nächsten Durchgang weiter, bis zum hundertsten Durchgang. Wieviele Türen stehen am Ende dieses Algorithmus offen?

Verwenden Sie ein Array vom Datentyp bool mit 100 Elementen. True soll eine offene Türe repräsentieren und false eine geschlossene. Erstellen Sie ein Programm um die Anzahl der offenen Türen zu bestimmen und geben Sie das Ergebnis auf der Konsole aus

Lösungen:

vote_ok
von jigga (4150 Punkte) - 01.02.2020 um 10:09 Uhr
Quellcode ausblenden Python-Code
ar = []

for i in range(100):
	ar.append('true')

for i in range(2, 101):
	for j in range(len(ar)):
		if j%i == 0:
			if ar[j] == 'true':
				ar[j] = 'false'
			else:
				ar[j] = 'true'
print(ar.count('true'))
vote_ok
von Gisbert5020 (1640 Punkte) - 03.02.2020 um 17:30 Uhr
Quellcode ausblenden Python-Code
tueren = []
for x in range(100):
    if x % 2 == 0:
        tueren.append(True)
    else:
        tueren.append(False)
for i in range(2,100):
    for x in range(i,100,i+1):
        if tueren[x] == (True):
            tueren[x] = False
        else:
            tueren[x] = True

print("Es bleiben ", tueren.count(True), " Türen offen")
vote_ok
von Klaus (510 Punkte) - 04.02.2020 um 12:38 Uhr
Quellcode ausblenden Python-Code
number_of_doors = 100
door_list = [True]*number_of_doors
for iteration in range(2,len(door_list)+1):
    for door_index in range(len(door_list)):
        if (door_index+1) % iteration == 0:
            door_list[door_index] = not door_list[door_index]
print(f'{sum(door_list)} Türen stehen nach {number_of_doors} Durchgängen offen.\nHier das Ergebnis:\n{door_list}')
vote_ok
von ZRX88 (2770 Punkte) - 07.02.2020 um 20:09 Uhr
Quellcode ausblenden Python-Code
doors = [False for _ in range(100)]
for iteration in range(1,101):
    for door in range(1,101):
        if door % iteration == 0:
            doors[door-1] = True if doors[door-1]==False else False
x=0
for i in range(100):
    x= x+1 if doors[i]==True else x
    
print(x)


Ist die Lösung 10 oder 9?
vote_ok
von satn1241 (720 Punkte) - 02.04.2020 um 11:43 Uhr
Quellcode ausblenden Python-Code
anzahl_tueren = 100
tueren = [False]*anzahl_tueren
for i in range(1,anzahl_tueren+1):
    gedrehte_schluessel = anzahl_tueren//i
    for u in range(0,gedrehte_schluessel):
        if tueren[i-1+u*i] ==True:
            tueren[i-1+u*i] = False
        elif tueren[i-1+u*i] ==False:
            tueren[i-1+u*i] = True
print("Am Ende sind", tueren.count(True), "Türen offen")