- Milyen routert?
- Otthoni hálózat és internet megosztás
- 20 ezer új munkást visz Eindhovenbe az ASML
- Videó stream letöltése
- Olcsóbb lett a Tesla Full Self-Driving szoftvere
- Vírusirtó topic
- Linux kezdőknek
- Hálózati / IP kamera
- Ingyenes vagy akciós szoftverek
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
Új hozzászólás Aktív témák
-
axioma
veterán
[Ja ujraolvasva ugy tunik megoldottad a mai part2-t, akkor nem spoilerezek.]
A tegnapinal mind a 4 diagonalis iranyt jol feded le, vagy normalsz arra hogy pl. x-ben a kisebb legyen az elso? Tedd be a kodot aztan megtalaljuk hogy mi a problema (remelhetoleg).[ Szerkesztve ]
-
axioma
veterán
Az inputot biztos hogy teljesen, elejetol vegeig kimasoltad? Azzal en szivtam mar. (Egyszer nekifutottam hogy a programom fix resze legyen az url-bol beolvasni, de az autentikaciot par netrol masolt probalkozas utan feladtam, pedig tuti megoldhato csak nem volt olyan surun hiba hogy tobb idot raaldozzak.)
Me'g egy, nem szamolod tobbszor ha lesz egy 3-4-stb. lefedettsegu? A mintaban csak 2-es van, ott eleg az hogy mar volt es most is jott, nem kell az hogy 1x volt vagy mar tobbszor (ha ugy szamolsz ossze egybol ahogy jon).[ Szerkesztve ]
-
axioma
veterán
Ennel sokkal benabb hibakat kovetek el nem keves prog.versennyel a hatam mogott, nyugi...
Kieg. most en is pluszban tettem be a diagonalt es csak ott alkalmaztam, de egyebkent ha elore megneztem volna (en azt hittem teglalapok lesznek a nem tengelyiranyuak), akkor ennyi esetnel mar a sok if-nel jobb dx,dy kepzese es utana vegigsetalas, az a 8 iranyra jo. Elonye nem a kevesebb gepeles, hanem ilyen problemak elkerulese hogy fele jo, fele nem.
[ Szerkesztve ]
-
axioma
veterán
Bocs, C style-ban ritkan irok. Ez a 8 iranyt egyben lefedi, ha csak diagonalra kene, akkor nem kellenek a 0 vizsgalatok.
// from (fx,fy) to (tx,ty)
int dx=(fx==tx)?0:((tx<fx)?-1:1); // ugyanaz mint sign(tx-fx) ha van...
int dy=(fx==tx)?0:((tx<fx)?-1:1); // sign(ty-fy)
int len=(dx!=0)?(tx-fx)/dx:((dy!=0)?(ty-fy)/dy:0);
for (int i=0;i<=len;i++) {
x=fx+i*dx;
y=fy+i*dy;
// tomb manipulacio
}
(lehetne x,y beallit es akkor csak +=dx/dy a ciklusban a koordinata kiszamitas, az mar mind1, szerintem igy inkabb lathato az osszefugges)Nem feltetlen mondanam jobb megoldasnak, teny hogy kompaktabb, inkabb az az elonye hogy altalanositasra epul. Hatranya hogy ha muszaj debug-olni, akkor nehez kivalasztani, hogy mikor akarsz megallni (persze lehet), meg fejben kovetni hogy melyik esetben vagy.
[ Szerkesztve ]
-
axioma
veterán
Az elsonel van, mindig a medianhoz kell lepni, hiszen 1 egyseget ha mozogsz jobbra-balra, akkor csak attol fugg az osszeg valtozasa, hogy mennyi van toled jobbra es mennyi balra (egyikeknel no, masikaknal csokken a tavolsag). De ha nem is rendezed sorba, akkor is eleg azokat az ertekeket nezni, amelyik valamelyik elem is egyben, jobban szetszort sorozatnal ez hasznos gyorsitas.
A negyzetesre most en is megcsinaltam ciklussal, leven erosen korlatos volt az ertekhalmaz, nem gondoltam ki hogy lenne-e "matematikusabb" megoldas, erzesre azt tippelnem hogy nincs, de nem neztem utana.[ Szerkesztve ]
-
axioma
veterán
Hat a betuk gyakorisagat is lehet nezni (a 0-9 mintaban). 4->e, 6->b, 9->f, azon szamjegyek amiben ebf is van a 0,6,8, ezeknek tovabbi kozoseik a 7->g, 8->a, a maradek 7->d, 8->c.
(Van rovidebb is de most pont nem akartam kihasznalni hogy tudjuk hogy melyik hany szegmens... amugy 9 db = f, a ketto hosszu 1-es masikja a c, a 3 hosszu harmadikja az a, az e,b, mint fent gyakorisagbol akar, a g/d az lehet az alapjan hogy amelyik szerepel 6 hosszuban az a d, masik a g)
Valoszinuleg lehetne altalanosabban is, de 7! se olyan nagy sza'm, ha gondolkodas nelkulit keresunk. -
axioma
veterán
(tegnapihoz nem volt ertekben 1-nel nagyobb kikotes, a 0 is eleme a medencenek, szerintem...)
Hat en siman rekurziot irtam (ez esetben valodit, mert velheto volt hogy nem lesz ezres melyseg, persze lehet ciklussa atirni is amikor olyan a feladat). Egy tetszoleges koordinata "medenceje" 0, ha az 9-es, ha viszont mas, akkor rekurziv hivassal (ha nem szelso az adott iranybol akkor meghivom arra a szomszedra) kapott mereteket hozzadom -- de kozben amikor beleszamolom egybol 9-esitem is oket, mert egy hivasbol is eljut tobbszor ugyanarra a pontra. Igy ha minden koordinatat lekerdezek, akkor is csak a diszjunkt medencek lesznek nemnulla me'rettel.
Mivel mar reg kirakhato a kod (sajat csatornaikon is), ime egy pelda a megoldasra:def get_size(arr,i,j):
if arr[i][j]==9:
return 0
res=1
arr[i][j]=9
if i>0:
res+=get_size(arr,i-1,j)
if i+1<len(arr):
res+=get_size(arr,i+1,j)
if j>0:
res+=get_size(arr,i,j-1)
if j+1<len(arr[0]):
res+=get_size(arr,i,j+1)
return res
arr=[list(map(int,list(s))) for s in input().split('\n')]
areas=[]
for i in range(len(arr)):
for j in range(len(arr[0])):
act=get_size(arr,i,j)
if act>0:
areas.append(act)
areas.sort()
print(areas[-3]*areas[-2]*areas[-1])A mai feladat tipikus veremmel (stack) megoldando feladat, de ha a masodik fele ment, akkor azt valoszinuleg ugy is csinaltad, akkor viszont nem kene az elejenek se neheznek lennie.
[ Szerkesztve ]
-
axioma
veterán
Nem sok a kulonbseg logikailag szerintem a maiban, annyi hogy te az egesz inputot adjustalod, en meg abbol olvasom csak, es azt ta'rolom csak el (stack), amit mar feldolgoztam de nem volt me'g parja. A te megkozelitesed logikailag tok ugyanaz, csak a string-ek (vagy list-ek is) kozeprol torlese, vagy osszefuzesi muveletek a valosagban az adott struktura hosszaval azonos muveletigenyuek (jo, meglevo linkedlist-es implementaciotol eltekintve), ezert szakmabeliek ahol lehet rutinbol keruljuk... Alternativ megoldas lefoglalni egy tombot es azt irogatni/torolni indexszel (elso ures hely), es akkor nem is valtozo hosszu strukturara tamaszkodsz. A list/array csak vegerol torteno irogatasa (veremkent hasznalata) is optimalisabb lesz mert azert nem egyesevel kell uj helyre tenni, a stringek azok viszont jellemzoen ujrafelhasznalas nelkul masolodnak, akar a vegere fuzessel is.
Termeszetesen ezekre a feladatokra amik az AOC-n vannak ez nem erdekes kulonbseg, csak gondoltam mint szempont felvetem.Masikhoz nyugodtan kerdezz, szivesen vegigveszem - de a rekurzio fogalma kelleni fog hozza. A kulcs az, hogy a cellat mar azelott 9-re allitom, mielott a szomszedokat elkezdenem feldolgozni, igy onmaga ugyan szomszedja a szomszedjanak, de a "visszahivasbol" mar a 9-es miatt szo nelkul 0 db uj elemmel visszater. Effektive 4*rows*col lekerdezes lesz, csak osszevissza sorrendben.
[ Szerkesztve ]
-
axioma
veterán
A grafoshoz a backtrack kulcsszo tartozik. Valahol az is egy rekurzio, de ezt talan erdemesebb allapot-listaval lekovetni [azt is stack-kent hasznalod].
Szolj ha kersz hintet, vagy ha az neked jobb, megoldast es abbol visszafejted h mi a logika. [Lehet mas grafos backtrack megoldas.] A graf reprezentacio az viszont kelleni fog pluszban. -
axioma
veterán
En a mait buta modszerrel oldottam meg. Eredmenymatrix mindenki szumma all value, bal felso sarok 0. Amig van javitas, addig vegigmegyek minden cellan es akinek az eredmenye+adott szomszed kockazata kisebb, mint ami a szomszed eredmenye, ott a szomszedot felfrissitem a kisebbel, modositasjelzo on. Nyilvan output a jobb also sarok. Lehetne rengeteget optimalizalni (itt most konkretan ha nagyon akarod, dijkstra-zhatsz), de szerintem tok felesleges. Ez is lefut a nagyra is online ide-ben is par max. partiz masodperc alatt. Es kodsorban joval kevesebb (konkretan az elso 20 sor, pythonban).
A temakorokhoz:
A linked list szerintem ma mar eloben tok folosleges, ha valami nagyon beszuras-torles-heavy es gyors is kell legyen, akkor van a nyelvekben beepitett megoldas ra.
A stack es queue kell, plusz kene a priority queue. Nem feltetlen kell sajat megvalositassal foglalkozni (pl. heap), csak a beepitetteket hasznalni.
Fa talan, de pl. kiegyensulyozott keresofa tok folosleges...
Tree traversal egyes esetekben lehet, de sztem ilyen verseny jellegu feladatnal meg interjun, a valo eletben ez szerintem ritkan jon elo. Legjellemzobb hogy a levelektol felfele tudod szamolni az adott tulajdonsagot, erdemes root node-bol feldolgozasi listat csinalni (ennek nem feltetlen kell valamelyik nevesitett bejarasnak lennie, persze jellemzoen azokat konnyebb programozni). Ha valami 20-50-nel tobb melysegi hivas lenne, en mar kerulnem a tiszta fuggvenyrekurziot.
Heap: en egy esetben szoktam hasznalni, ha modositassal kell a priority queue, de sztem ez se fontos igazan, az elvet tudni nice to have.
Graf es bejarasok: ez szokott kelleni, valami tokegyszeru objektumos tarolast erdemes a matrix helyere betenni (pl. id+e'lek listaja a tuloldali node id-vel), bejaras nyilvan kellhet, backtrack itt ugyis elojon. De egyebkent nyelvektol fugg, szokott lenni kesz graf, csak beparameterezed es tudsz tole pl. akar max. parositast is lekerdezni (ami tok altalanos esetben kezzel nem egy leanyalom).
Dijkstra: akar. De lasd fent, nem tartom mindig szuksegesnek. Ha ordo-ssagot kell teljesiteni akkor persze nem art. Szerintem me'g az is lehet, hogy ez a mai megoldhato (most nem tudom kiprobalni) cska jobbra es le lepesekkel, akkor meg siman eleg egyszer vegigmenni a tombon (a balrabb es fentebb levo ertekek mar veglegesek), ilyen jellegu szerintem tobb volt.Azert tedd hozza hogy nem en vagyok az etalon, en tul sok eleve is feladvanynak keszult problemat oldok meg.
[ Szerkesztve ]
-
dabadab
titán
Szerintem a Dijkstra mehet az első helyre (szerintem van elég egyszerű ahhoz, hogy ne legyen értelme saját megoldáson töprengeni), a többi meg igazán nem is kell.
Én egyébként nekiálltam tisztán brute force-szal (miszerint végigpróbálni az összes lehetséges útvonalat), de az már a példa 10x10-es mátrixával sem végzett azelőtt, hogy meguntam volna várni rá , aztán közbejött minden más, de most az ebéd utáni sziesztában nekiállok megcsinálni rendesen.
[ Szerkesztve ]
DRM is theft
-
axioma
veterán
Jobbulast! Gyorsan es nyom nelkul keveredj ki belole.
Nem feltetlen nehez az a feladat, ami annak latszik, a programos is az en hulyesegem hogy csakazertis modon oldottam meg... de pl. a memoization-t felirhatod a dynamic programming-gal egyutt a listadra, ami mar nem adatszerkezet vagy algo, hanem inkabb strategia mint pl. a moho.
Majd ha mar van ra energiad es nezel feladatokat barhonnan, szolj ha nem vilagos es tudunk hint-elgetni eleg light-osan.
Új hozzászólás Aktív témák
- Azonnali informatikai kérdések órája
- Google Wear OS (Android Wear) okosórák topicja
- PlayerUnknown’s Battlegrounds
- Ukrajnai háború
- Vicces képek
- OFF TOPIC 44 - Te mondd, hogy offtopic, a te hangod mélyebb!
- Kerékpárosok, bringások ide!
- iPhone topik
- Genshin Impact (PC, PS4, Android, iOS)
- BestBuy topik
- További aktív témák...
- XBOX ONE/PS4/PS5/XBOX SERIES/NINTENDO SWITCH konzolt vásárolnék!
- XBOX SERIES/PS4/PS5/XBOX ONE/NINTENDO SWITCH konzolt vásárolnék!
- PS5/PS4/XBOX ONE/XBOX SERIES/NINTENDO SWITCH konzolt vásárolnék!
- Új Dobozos Lenovo Ideapad Flex 5 x360 Érintős Ultrabook Óriás Tab 16" -40% Ryzen 5 5500U 16/512 QHD
- PS4/PS5/XBOX ONE/XBOX SERIES/NINTENDO SWITCH konzolt vásárolnék!