Valmistautuminen ohjelmointihaastatteluihin · Oppitunti

Syklien tunnistaminen simulaatioissa

Hyppää eteenpäin, kun tila toistuu

Oppitunti 3/413 vaihetta

Syklien tunnistaminen simulaatioissa on ilmainen Valmistautuminen ohjelmointihaastatteluihin-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Valmistautuminen ohjelmointihaastatteluihin-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Valmistautuminen ohjelmointihaastatteluihin-kurssilla on yhteensä 4 oppituntia.

Kun askeleet toistuvat

Joissakin simuloinneissa kysytään tilaa valtavan askelmäärän, esimerkiksi biljoonan, jälkeen. Yksi askel kerrallaan eteneminen ei valmistuisi koskaan ajoissa. ⏳

Tilojen määrä on äärellinen

Jos mahdollisten tilojen määrä on rajallinen, simulointi päätyy väistämättä samaan tilaan uudelleen. Sen jälkeen se toistaa itseään ikuisesti syklissä.

Miltä sykli näyttää

Polulla on alkuun johtava häntä ja sen jälkeen toistuva silmukka. Kun löydätte silmukan, voitte hypätä miljardien askelten yli.

Muistakaa, missä olette käyneet

Tallentakaa jokainen tila sanakirjaan ja yhdistäkää se askelmäärään, jolla näitte tilan ensimmäisen kerran. Kun näette tilan uudelleen, sykli paljastuu.

seen = {}

Tunnistakaa toisto

Tarkistakaa ennen jokaista askelta, onko nykyinen tila jo seen-rakenteessa. Jos on, olette juuri sulkeneet silmukan.

if state in seen:
    start = seen[state]

Mitatkaa syklin pituus

Pituus on nykyinen askelmäärä miinus se askelmäärä, jolla näitte tämän tilan ensimmäisen kerran. Tämän pituinen jakso palauttaa tilan täsmälleen ennalleen.

length = step - seen[state]

Ohittakaa askeleita jakojäännöksen avulla

Vähentäkää hännän pituus ja ottakaa jäljelle jäävien askelten jakojäännös syklin pituudella. Nyt tarvitsee simuloida vain pieni loppuosa.

rem = (N - start) % length

Suorittakaa jäljelle jäävät askeleet

Suorittakaa simulointi vain näiden jäljelle jäävien askelten ajan syklin alusta. Lopullinen tila vastaa täsmälleen askelta N.

for _ in range(rem):
    state = step_fn(state)

Pitäkää tila hajautettavana

Sanakirjan avainten on oltava hashattavia, joten muuttakaa listat monikoiksi ennen tallentamista. Muuttuva tila ei voi toimia avaimena.

key = tuple(row)

Floyd ilman muistia

Jos tilat ovat liian suuria tallennettaviksi, Floydin kilpikonna ja jänis löytävät syklin kahden osoittimen avulla ja lähes ilman lisämuistia.

Miksi tämä pelastaa tilanteen

Syklin tunnistus muuttaa mahdottoman biljoonan askeleen silmukan muutaman tuhannen askeleen tehtäväksi. Toiston tunnistaminen on koko temppu.

Pikatarkistus

Näit nykyisen tilan ensimmäisen kerran askeleella s, ja olet nyt askeleella t.

Kertaus

Kun tilat toistuvat, tallentakaa jokainen niistä sanakirjaan, etsikää syklin pituus, hypätkää eteenpäin jakojäännöksen avulla ja simuloikaa vain jäljelle jäävät askeleet. 🚀

Aloita maksutta

Opi Valmistautuminen ohjelmointihaastatteluihin tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
90
Oppitunnit
360

Usein kysytyt kysymykset

Onko oppitunti ”Syklien tunnistaminen simulaatioissa” ilmainen?

Kyllä – oppitunnin ”Syklien tunnistaminen simulaatioissa” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Valmistautuminen ohjelmointihaastatteluihin-kurssin, päivitä CoddyKit PROhon. Valmistautuminen ohjelmointihaastatteluihin-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Syklien tunnistaminen simulaatioissa”?

Hyppää eteenpäin, kun tila toistuu Harjoittelet Valmistautuminen ohjelmointihaastatteluihin-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Valmistautuminen ohjelmointihaastatteluihin-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Valmistautuminen ohjelmointihaastatteluihin-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Syklien tunnistaminen simulaatioissa”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Valmistautuminen ohjelmointihaastatteluihin-oppitunnilla?

Kyllä. Jokainen Valmistautuminen ohjelmointihaastatteluihin-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Tilan mallintaminen ja eteneminen
  2. Ruudukossa liikkuminen ja suuntavektorit
  3. Syklien tunnistaminen simulaatioissa
  4. Hankalien reunatapausten hallinta
← Takaisin: Valmistautuminen ohjelmointihaastatteluihin