- Realme GT 2 - aláírjuk
- Milyen okostelefont vegyek?
- Android alkalmazások - szoftver kibeszélő topik
- Apple iPhone 17 - alap
- Fotók, videók mobillal
- Apple iPhone 16 Pro - rutinvizsga
- Huawei Watch GT 5 Pro - egészség + stílus
- Google Pixel 10 és 10 Pro összehasonlító gyorsteszt
- Yettel topik
- Milyen GPS-t vegyek?
-
Mobilarena
Új hozzászólás Aktív témák
-
válasz
feka007 #19800 üzenetére
Eloszor is letre kell hoznod a listat, ami ugy latom meg, es utana meg kell vizsgalnod, hogy az adott pozicio oszthato-e 2-100-ig es ha igen meg kell valtoztatnod az allapotat.
trukkozes (xor) nelkul:# ne definiald felul a list utasitast
lista=[1] * 100
for i in range(100):
for oszto in range(2,101):
if (i+1) % oszto == 0:
lista[i] = 1 - lista[i]
# xor:
# lista[i] ^= 1
for i in range(100):
# print(f"{i+1}. cella: {('csukva', 'nyitva')[lista[i]]}")
# vagy meg csunyabban
# print(i+1, "cella", "cnsyuiktvvaa"[lista[i]::2])
if lista[i]==1:
print(f"{i+1}. cella: nyitva")
else:
print(f"{i+1}. cella: csukva") -
hiperFizikus
senior tag
válasz
feka007 #19800 üzenetére
Én az ilyeneket úgy szoktam csinálni, hogy neki állok, mint ahogyan te is . Ha sikerül elboldogulnom vele, akkor annyiban hagyom . Ha meg nem, akkor átírom 5 db olyan function-ba, amelyikbe csak 1 db for ciklus jut ! Így már könnyebb összehangolni őket ! Majd ha jól mennek, akkor vissza írom őket egy nagy 5x egybeágyazott for ciklusba, ami már csak kevés illesztésből meg van !
Köztünk csak az a különbség, hogy én már régtől nem írok gyakorlatokat, hanem mindent élesben csinálok .
-
cattus
addikt
válasz
feka007 #19800 üzenetére
A feladat szerint 100 szolga nyitja-csukja az ajtókat, szóval ha így csinálnád akkor száz egymásba ágyazott ciklust kéne írnod.
Az elgondolás jó, hogy nyitva állással inicializálod a tömböt. A feladat leírásában felfedezhető egy mintázat. Az első szolga az összes ajtó állapotát megváltoztatja, a második csak minden másodikat, a harmadik minden harmadikét, stb. Ezeket vagy leírod egyesével, vagy írsz rájuk két ciklust, ahol a külső végigmegy a szolgákon, a belső meg végigfuttatja a szolgákat a tömbön. Plusz a boolean tömböt használsz, elég megflipelni az értékeket (
list[i] = !list[i]
), nem kell if ellenőrzést hívni. -
axioma
veterán
válasz
feka007 #19800 üzenetére
Nem jo a programszerkezet! A minden 2.-at bezaras az nem a kinyitos cikluson belul van!
Ezek kulon ciklusok. Azert is lehet azonos ciklusvaltozo. De mind az elsotol [0. indextol] indul!
Ja es a list valtozonevet most irtsd ki a szotaradbol - az kulcsszo, csak felul tudod definialni...hint, nem igy oldod meg:
lst=[1]*100
for i in range(0,len(lst),2):
lst[i]=0
for i in range(0,len(lst),3):
if lst[i]==1:
lst[i]=0
else:
lst[i]=1
for i in range(0,len(lst),4):
if lst[i]==1:
lst[i]=0
else:
lst[i]=1
...Erre a formatumra meg mar van egy egyszerusitett leirasod...
@cattus nem akartam belezavarni az
lst[i]=1-lst[i]
-vel...
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- HIBÁTLAN iPhone 15 Pro 256GB Blue Titanium -1 ÉV GARANCIA - Kártyafüggetlen, MS3504
- Azonnali készpénzes Intel i5 i7 i9 8xxx 9xxx processzor felvásárlás személyesen / csomagküldés
- Lejárt a gyártói garancia? Mi tovább támogatjuk az IT infrádat!
- Keresünk dokkolókat
- LG 65" C1 OLED - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox Ready!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest