Jump to content

Laki_Mancic

Korisnik
  • Posts

    761
  • Joined

  • Last visited

About Laki_Mancic

  • Birthday 04/17/2003

Recent Profile Visitors

3,546 profile views

Laki_Mancic's Achievements

  1. Ušao na forum da vidim šta ima novo i iskreno me začudilo što ima novog posta ovde. Šteta što niko ne odgovara, ali dobro šta se može. Ovako da pređem na stvar. Zadatak se u suštini može formulisati ovako: Naći koliko ima različitih elemenata niza ( znači duplikate ne brojimo ovde ). Kako sam to zaključio, pa jednostavno je zapravo, kako možemo kopirati bilo koji deo niza na bilo koju poziciju mi praktično kreiramo samo duplikate, a najkraći mogući niz je onaj bez duplikata. Sada da prokomentarišem rešenje. Rešenje i nije baš efikasno, ali za osnovnu školu pretpostavljam da je okej, i ja bih ga tada tako uradio. Šta se ovde radi u kodu, imamo niz koji unosimo a, i pomoćni niz br, taj niz nam služi za brojanje nekog elemente od njegove trenutne pozicije do kraja. Ako je taj broj veći od 1, onda posle njega imamo duplikate, ako je jednak 1, onda posle njega ne postoji ni jedan element koji je jednak njemu. Evo naprimer da posmatramo niz iz primera 1 2 3 1 2, niz br za ovaj niz bi izgledao ovako, u zagradi ću pisati brojeve na koje se odnose 2 ( 1 ), 2 ( 2 ), 1 ( 3 ), 1 ( 1 ), 1 ( 2 ), prvo je dvojka jer od prvog elementa na desno imamo dve jedinice, druga dvojka je zato što imamo dve dvojke nadesno, za trojku je jasno, ja drugu jedinicu, na desno imamo samo tu jedinicu, isto i za drugu dvojku. Nadam se da te nisam još više zbunio, ako ti nešto nije jasno pitaj ovde ponovo, pa ako slučajno ponovo otvorim forum pogledaću.
  2. Pozdrav forumaši i forumašice, Dobrodošli u moj treći po redu tutorijal vezan za programiranje u Python-u. U ovom tutorijalu ćete naučiti nešto o operatorima u programskom jeziku Python. ═══════════════════════════════════════════════════════════════════════════════════════════════════════ Pre početka obrade samih operatora u Python-u, prvo bih objasnio ukratko šta je to operator. Operator je ključna reč ili simbol u programskom jeziku uz pomoć koje se primenjuje neka operacija nad operandima ( operandi su elementi ti operacije ). Na primeru je lakše shvatiti, a najjednostavniji primer je sabiranje dva broja. Ukoliko imamo 5 + 4, u ovom izrazu 5 i 4 su operandi, a znak + je operator, rezultat operacije je 9, odnosno zbir ta dva broja. Aritmetički operatori Aritmetički operatori su operatori kojima se vrše osnovne matematičke operacije, poput sabiranja, oduzimanja, množenja i deljenja, ali i celobrojnog deljenja, ostatka pri deljenju i eksponencije, na primeru ću objasniti šta poslednje dve operacije rade. Na sledećem primeru možete videti primenu ovih osnovnih operatora. Operatori + i * se mogu koristiti i sa Stringovima, dok - i / ne mogu. + sa stringoima znači spajanje dva stringa na primer "ovo je " + "proba", rezultat bi bio "ovo je proba". Dok operator *, samo ponavlja String određeni broj puta, na primer "str" * 3 je "strstrstr". Ovo dodajem kako ne bi pogrešili i zaboravili da isvršite konverziju iz stringa u broj ili obrnuto i tako dobijete pogrešan rezultat. Operatori uporedjivanja Operatori uporedjivanja, kako im sam naziv kaže služe za operacije uporedjivanja. Te operacije uporedjivanja su da li je jednako, da li je različito, da li je veće ili manje, da li je veće ili jednako, da li je manje ili jednako. Na sledećem primeru možete videti kako se ovi operatori pišu u Python-u. Logički operatori Logički operatori služe za izvršavanje operacija nad logičkim vrednostima ( True i False ) i logičkim promenljivama. Osnovni operatori su and, or i not, na primeru možete videti kako oni rezultuju u Python-u. Operatori dodele Operatori dodele imaju ulogu da dodele ili promene vrednost nekoj promeljivoj, tako da kada se koristi operator dodele levi operand je uvek neka promenljiva. Osnovni operator ovde je =, koji sam obradio u tutorijalu o promenljivama, on služi za jednostavnu dodelu vrednosti promenljivoj, ostali operatori dodele u suštini služe samo kako bi kod bio kraći. Kao početnici nemate potrebe da koristite ostale operatore dodele osim =, jer uglavnom ih tek malo iskusniji programeri koriste. Na sledećem primeru možete da vidite primere operatora dodele. To bi bilo to što se tiče osnovnih operatora. naravno da postoje još njih, poput operatora nad bitovima, operatora članstva i operatora identiteta, ali oni se mogu ostaviti za kasnije jer u početku je bitno lepo shvatiti ove osnovne operatore, kada njih shvatite ostali će biti lakši za shvatiti. Sada za kraj imam jedno pitanje za sve Vas koji ste pročitali ovaj tutorijal i naučili kako da koristite operatore. Kako bih uz pomoć operatora mogao da proverim da li je neki broj deljiv nekim drugim brojem. Na primer ukoliko imam kod ispod, kako bih mogao da proverim da li je broj a deljiv brojem b. Rezultat bih trebao ispisati umesto stringa "True / False". ═══════════════════════════════════════════════════════════════════════════════════════════════════════ Ako ste došli do ovog dela tutorijala, ja vam se zahvaljujem na čitanju i nadam se da vam je ovaj tutorijal pomogao. Ukoliko imate neko pitanje ili problem slobodno napišite u komentaru na ovu temu, a ukoliko želite da ispratite serijal tutorijala u Python-u zapratite potforum Tutorijali o programiranju i možete dobijati obaveštenja kada se objavi novi tutorijal. Pozdrav !
  3. Zanimljivo, da li nam možeš reći da li samo u školi učiš programiranje ili radiš nešto i sam ? Takođe da li možeš pojasniti šta učiš u IT smeru u gimnaziji, da li bi ostalima preporučio da upišu taj smer ? Da li bi mogao sa nama da podeliš možda neki način učenja front-end-a koji bi mogao da pomogne drugima, možda neku knjigu, sajt ili nešto slično. Takođe koji jezik planiraš da učiš za backend, da li već imaš neki resurs za učenje na umu ili još uvek tražiš ? Odličan komentar, svakako i u timu se može dosta naučiti, ali naravno i individualno učenje je važno, Da li bi sa nama podelio neke resurse iz kojih si učio programiranje, možda nekome mogu biti od koristi ?
  4. Pozdrav forumaši i forumašice, Dobrodošli u moj novi tutorijal vezan za programski jezik Python, ovo je ujedno i drugi tutorijal u serijalu tutorijala o Python-u. U ovom tutorijalu možete naučiti šta su to promenljive, koji osnovni tipovi podataka postoje u Python-u i neki osnovni rad sa brojevima. Ovo je nešto osnovno što je potrebno naučiti da bi rad u Python-u bio maksimalno olakšan kasnije i ono što je bitno je da ovo lepo razumete kako kasnije ne bi imali problem sa razumevanjem komplikovanijih stvari. Promenljive Promenljiva ili varijabla ( mogu se koristiti oba izraza u našim jezicima ) je prosto rečeno prostor u memoriji u kojem se čuva neka vrednost. Promenljiva ima svoje ime preko kojeg postavljate tu promenljivu na neku vrednost ili pak preko tog imena uzimate trenutnu vrednost promenljive. U promenljive možete smestiti razne vrednosti poput Vašeg imena, neke boje, ocene, broj donatorskih poena i slično, granice nisu limitirane. Kod imenovanja promenljivih ne smete koristiti ništa osim malih i velikih slova, brojeva i znaka _. pri čemu broj naziv promenljive ne sme počinjati brojem. Sada ću pokazati kako da napravite svoju prvu promenljivu: Ovo je primer kreiranja promenljive, i dodeljivanje vrednosti njoj. Imamo napisano ime promenljive kojoj se dodeljuje vrednost, pa znak jednako, pa vrednost koju želimo da dodelite promenljivoj. U primeru ime promenljive je zapravo ime, a vrednost je string "Lazar". Umesto stringa može stajati broj, logička vrednost, objekat neke klase i još mnogo toga što ću u kasnijim tutorijalima obraditi. U Python-u se ne mora navoditi tip koji dodeljuje promenljivoj kao u nekim jezicima, već možemo samo dodeliti vrednost kako smo i uradili na slici iznad. Na slici ispod možete videti program za prikaz promenljive, kada pokrenete ovaj program trebalo bi da Vam se prikaže Lazar ili vrednost promenljive koju ste stavili. Sada jedan primer sa više promenljivih. print funkcijom možemo prikazati više promenljivih u jednom redu, tako što odvajamo promenljive zarezima, i one će se prikazati sa razmacima između njih, Rezultat ovog programa je 504 Lazar 5.5. U Python-u takođe možemo više promenljivih napraviti u jednom redu, na način koji izgleda ovako: Ovako smo uštedeli linije koda, a uradili istu stvar kao i prethodnim programom. Možemo i više promenljivi dodeliti istu vrednost na sledeći način, čime isto štedimo linije koda i plus smanjujemo dužinu linije koliko god možemo: Program ispisuje tri linije Nema imena. Tipovi podataka Iako nije potrebno navesti tipove podataka prilikom kreiranja promenljive, trebalo bi se upoznati sa njima kako bi kasnije lakše manipulisali sa promenljivama. Kako bi videli kog tipa je promenljiva možemo iskoristiti sledeći kod, odnosno funkciju type: Rezultat programa je <class 'str'> što znači da je promenljiva tima str ( string ). U tabeli ispod možete videti neke osnovne i neke složenije tipove koji postoje u Python-u, naravno mi u svakom trenutku možemo prikazati tip promenljive tako da učenje tabele nije neophodno. Pretvaranje tipova Pretrvaranje tipova se vrši jednostavno u Python-u samo pozivom funkcije ( konstruktora, kasnije će Vam ovaj pojam biti jasan ) tog tipa i vrednost koju želimo da pretvorimo u taj tip. Na primeru će biti lakše za razumevanje, na primer da želimo broj u stringu da pretvorimo u pravi broj koji kasnije možemo sabirati, oduzimati i slično, to možete videti na primeru ispod: Ono što će program prikazati jeste da je prikaz obe promeljive isti, ali njihovi tipovi nisu. Brojevi Postoje tri brojčana tipa u Python-u, i oni su celobrojni ( int ), decimalni ( float ) i kompleksni ( complex ). Celobrojne promenljive su promenljive koje uzimaju za vrednost neki ceo broj, na primer 10, -53535, 10568875645, znači brojeve bez zareza. Ispod možete videti primer kreiranja celobrojnih promenljivi. Sve ove promenljive su tipa int. Decimalne promenljive su promenljive koje uzimaju bilo koji broj za svoju vrednost, to može biti 10, 50.65, -9857.05, to mogu biti i brojevi bez zareza i sa zarezom, pri čemu se svi oni tretiraju kao da imaju zarez, na primer 10 se tretira kao 10.0. Pored normalne vrednosti može se koristiti i notacija sa slovom E ili e. Ona se koristi na sledeći način, na primer 41e3 je ustvari 41000.0, ili 1.2e2 je ustvari 120.0, možda će Vam trebati malo vremena dok shvatite, ali uvek možete probati u programu i tako lakše naučiti. Ispod možete videti primer kreiranja decimalnih promenljivi. Sve ove promenljive su tipa float. Kompleksne promenljive neću obrađivati u ovom tutorijalu, jer je moje mišljenje da one zahtevaju malo veće znanje matematike i da nisu baš namenjene početnicima. Dodatak: Komentari Komentari su linije kodova koje program preskače, odnosno ne izvršava ih. Kometari obično služe programeru kako bi se on lakše snalazio u svom kodu. Jednolinijski komentari u Python-u počinju sa znakom #, dok više linijski počinju i završavaju se sa '''. Ispod možete videti primer korišćenja komentara. Program prikazuje 503 Laki_Mancic Level: 5, što znači da linije koje smo pisali pod kometarom nemaju nikakav uticaj na ostatak programa. Ako ste došli do ovog dela tutorijala, ja vam se zahvaljujem na čitanju i nadam se da vam je ovaj tutorijal pomogao. Ukoliko imate neko pitanje ili problem slobodno napišite u komentaru na ovu temu, a ukoliko želite da ispratite serijal tutorijala u Python-u zapratite potforum Tutorijali o programiranju i možete dobijati obaveštenja kada se objavi novi tutorijal. Pozdrav !
  5. Pozdrav forumaši i forumašice, Posle dužeg vremena stiže novi zadatak u potforumu Programiranje, u pitanju je zadatak vezan za popularnu internet igru 2048, u nastavku Vam sledi detaljan opis zadatka. Tekst Zadatka Napraviti program koji za uneto trenutno stanje u igri 2048 i sledeći potez koji korisnik planira da povuče, ispisuje kako izgleda naredno stanje u igri 2048. Igra 2048 se igra na kvadratnoj tabli koja sadrži pločice sa brojevima i neka prazna polja. Potez u igri se sastoji od pomeranja svih pločica u smeru koji igrač odabere, tako što se pločice sa brojevima pomeraju u izabranom smeru preko praznih pločica koliko god je to moguće. Pri tome ukoliko se dve susedne pločice sa istim brojem trebaju pomeriti u istom smeru, onda se te dve pločice spajaju u jednu sa duplo većim brojem nego pločice koje su se spojile, spajanje se vrši u smeru pomeranja. U jednom potezu spojene pločice se ne mogu ponovo spajati u tom istom potezu. Na sledećem linku možete probati igru kako biste lakše razumeli kako radi https://play2048.co/. Ulaz U prvoj linije se unosi broj n koji predstavlja veličinu table n x n, pri čemu je 3 ≤ n ≤ 10, nakon toga se unosi matrica n x n koja predstavlja tablu, gde 0 predstavlja prazno polje, drugo broj predstavlja broj koji je na pločici. U poslednjoj liniji ulaza se unosi karakter koji određuje smer pomeranja ( U - Gore, D - Dole, L - Levo, R - Desno ). Izlaz Izlaz je matrica n x n koja predstavlja stanje table nakon odigranog poteza. Test primeri Ulaz: Ulaz: Ulaz: Ulaz: 4 4 4 4 0 0 0 2 0 0 2 2 1 2 4 8 0 0 0 2 0 0 2 0 0 2 0 2 1 2 4 0 0 0 2 2 0 2 0 0 2 0 0 2 0 1 2 4 0 2 2 2 2 0 0 0 2 2 2 2 1 2 4 4 2 2 2 2 D R L U Izlaz: Izlaz: Izlaz: Izlaz: 0 0 0 0 0 0 0 4 1 2 4 8 2 4 4 4 0 0 0 0 0 0 0 4 1 2 4 0 0 0 2 4 0 0 0 0 0 0 0 4 1 2 4 0 0 0 0 0 2 2 2 2 0 0 4 4 1 2 8 0 0 0 0 0 Zabranjeno kopiranje kodova sa interneta ili od drugih korisnika. Ukoliko imate bilo kakvih pitanja možete napisati komentar na ovu temu i dobićete odgovor. Nema ograničenja po pitanju korišćenja programskih jezika. Srećno sa rešavanjem!
  6. Pozdrav forumaši i forumašice, Dobrodošli u moj prvi tutorijal vezan za programski jezik Python u kome ćete naučiti kako skinuti Python, radno okruženje i napisati svoj prvi program u ovom programskom jeziku. Ovo će ujedno biti i prvi tutorijal u serijalu tutorijala koji ću napraviti o Python-u, tako da ukoliko želite da ispratite tutorijale, zapratite potforum Tutorijali o programiranju. Instalacija Python-a Kako bi uopšte pokrenuli neki program u bilo kom programskom jeziku potreban nam je kompajler ili intepreter, u slučaju Python-a potreban nam je interpreter. Ovi termini Vam možda sada zvuče nepoznato, ali nije to ništa komplikovano. Kompajler je program koji prevodi kod nekog programskog jezika u mašinski jezik, jezik razumljiv računaru koji on može da pokrene. Intepreter je program koji ne prevodi, već izvrašava direktno program iz koda nekog programskog jezika poput Python-a. Python možete skinuti sa njihovog zvaničnog sajta https://www.python.org/downloads/. Kada odete na sajt ukoliko imate Windows, pritisnite dugme Download i preuzimanje setup-a će krenuti. Ukoliko imate neki drugi operativni sistem možete pronaći instalaciju ispod Download dugmeta, gde birate vrstu operativnog sistema u koju spada vaš OS. Na slici ispod možete videti sliku sajta i zaokruženo dugme za preuzimanje. Kada se preuzimanje instalacije završilo, pokrenite je. Dobićete prozor kao na slici ispod i ono što je važno jeste da na njemu čekirate opciju Add Python to PATH, kako bi nam instalacija sama dodala Python u PATH, da bismo mogli da pozovemo Python iz bilo kog foldera u kome se nalazimo. Nakon toga idite na Install Now ili Customize installation, ukoliko želite sami da odaberete šta od ponuđenih opcija želite da instalirate i na kojoj lokaciji. Nakon toga dobićete prozor o uspešnoj instalaciji koji možete samo isključiti. Ukoliko je sve prošlo kako treba, čestitam uspešno ste instalirali Python interpreter sa određenim dodacima. Ukoliko imate neki problem oko instalacije napišite u komentaru na ovu temu i dobićete odgovor u vezi vašeg problema. Instalacija i podešavanje radnog okruženja Visual Studio Code Sada imamo Python interpreter i tehnički možemo početi sa programiranjem u Python-u, ali bi morali da pišemo kod u nekom text editoru koji već imamo instaliran na računaru poput Notepad-a, što naravno nije nešto što će nam ići baš lako. Kako bi to izbegli moramo skinuti neki drugi text editor ili neko razvojno okruženje, ja sam odlučio da vam u ovom tutorijalu pokažem kako da skinete i podesite Visual Studio Code, koji ja lično koristim i svima bih ga preporučio. Instalaciju možete preuzeti sa zvaničnog sajta https://code.visualstudio.com/. Kao i u svakoj instalaciji idete na Download dugme i instalacija bi trebala da počne da se skida. Na slici ispod možete videti izgled sajta i gde se nalazi Download dugme. Ukoliko imate operativni sistem koji nije Windows idite na strelicu pored Download dugmeta i odaberite vaš operativni sistem. Otvorite instalaciju i otvoriće vam se sledeći prozor na kome samo idete Next. Nakon toga stavite da prihvatate uslove korišćenja i nastavite sa Next. Nakon toga možete odabrati lokaciju na kojoj želite da Visual Studio Code bude instaliran i idete Next. Nakon toga dobićete prozor da li želite da vam Visual Studio Code bude u Start meniju, možete samo nastaviti ukoliko želite. Ukoliko ne želite čekirajte Don't Create a Start Menu Folder. Nakon toga dobićete poslednji prozor pred instalaciju u kome imate da čekirate neke opcije poput da li želite da se kreira ikonica na Desktop-u ili da li želite da vam se na desni klik na neki folder pokaže opcija za otvaranje pomoću VS Code-a. Opcija koju trebate obavezno čekirati jeste Add to Path, ostale možete po želji. Instalacija bi trebala da započne i kada se završi vi ste uspešno instalirali Visual Studio Code, čestitam. Ukoliko se javi neki problem tokom instalacije i ne znate kako da ga rešite napišite u komentaru na ovu temu. Sada kada smo instalirali VS Code potrebno je da ga podesimo za programiranje u Python-u. Otvorite Visual Studio Code i otvorite opciju za ekstenzije ukucajte Python i instalirajte ekstenziju koja je prikazana na slici ispod. Kada se ekstenzija instalira možemo početi sa programiranje, napravite folder na Desktop-u ili u nekom drugom folderu i nazovite taj folder helloword ili nešto slično tome, po vašem izboru. Kako biste otvorili taj folder u VS Code-u idete na File i Open Folder i onda pronađite folder koji ste napravili i otvorite ga. Nakon toga trebate u VS Code-u napraviti fajl koji se zove main.py, ili drugačije po vašem izboru samo treba da se završava sa .py. Na slici ispod je opisan proces dodavanja fajla. Otkucajte u polje za kucanje koda, kod kao na slici ispod i da bi ga pokrenuli trebate ići desni klik i Run Python File in Terminal. Nakon čega će vam se ugrađeni terminal u VS Code projaviti i prikazati poruku Zdravo svete! . Ukoliko ste sve uradili kako treba, trebalo bi da dobijete poruku Zdravo svete !. Ovim ste napisali vaš prvi program u programskom jeziku Python i pokrenuli ga. Ukoliko nešto ne funkcioniše onako kako bi trebalo napišite to ovde u komentaru i dobićete odgovor i rešenje za vaš problem. Ako ste došli do ovog dela tutorijala, ja vam se zahvaljujem na čitanju i nadam se da vam je ovaj tutorijal pomogao. Uskoro ću napraviti nove tutorijale u vezi Python-a u kome će zapravo biti više programiranja od samog ispisivanja poruke i koji će biti zanimljiviji od ovog, ukoliko želite to da ispratite ponavljam da možete zapratiti potforum Tutorijali o Programiranju i biti u toku sa svim tutorijalima koji se objavljuju. Pozdrav !
  7. Moja priča sa programiranjem je počela još u nižim razredima osnovne škole, kad sam imao 10 ili 11 godina, prvi "programski" jezik koji sam naučio bio je HTML, bez CSS-a bez ičega, jer tada mi je sve to bilo strano iako sam imao iskustva sa računarima za dete u to doba, tada. Drugi programski jezik sa kojim sam se susreo malo nakon HTML, jeste vizuelni jezik GameMaker engine-a za pravljenje igrica, tu sam se malo upoznao sa konceptom programiranja, ali mi je idalje sve bilo strano i delovalo je jako teško. U petom razredu sa čini mi se 11 ili 12 godina, krenuo sam sa prvim, da kažem pravim programskim jezikom, Visual Basic-om, iako to nije bilo baš pravo programiranje, već prevlačenje dugmića na radnu površinu i pisanje nekog sitnog koda za to, što mi sad deluje glupo, ali ipak je bio neki pristojan uvod u taj svet pravog programiranja. Naredne godine sam počeo da učim C++, sa kojim sa išao na takmičenje, odnosno bavio sam se samo takmičarskim programiranjem sa njim. Tek sa 15 godina sam konačno počeo da učim nešto drugo, a to je bio običan C i algoritme i strukture podataka, koje sam krenuo da učim u školi, a pošto je gradivo u školi išlo presporo, krenuo sam sam da učim, to je bilo osnovno programiranje i stvarno dobar osnov za dalje, iako sam već imao relativno dobru osnovu. Sa 16, sam krenuo da se bavim ostalim jezicima, poput CSS-a, JavaScript-a i Python-a i nadogradio sam svoje znanje programiranja. Sa 17 sam krenuo sa C# ( .NET ), Java, ASP.NET, PHP, jQuery, NodeJS, Express, Socket IO, MySQL i SQLite, Unity malo, naučio sam nešto oko hardvera, elektronike ( i digitalne elektronike ) i oko računarskih sistema i mreža malo, što isto može koristiti kod programiranja. Sa 18, koliko imam trenutno, počeo sam da učim React, Android programiranje, malo Assembly i Lua, Ruby, i još par jezika, još uvek se bavim nekim jezicima koje sam ranije naučio poput C++, C, Python i ostalima, iako sam se malo rasplinuo sa tim jezicima smatram da to nije bila greška i da me je svaki jezik nečemu naučio što je primenljivo i na druge. To je ukratko neka moja priča sa tim programskim jezicima.
  8. Kako bi se napisao neki program, potrebno je poznavati neki programski jezik u kome je moguće napisati program koji želite. Neki od najpoznatijih programskih jezika su: C, C++, Python, C#, Java, JavaScript, Ruby, R, Pascal i još mnogi drugi. U ovoj temi bih voleo malo da diskutujemo o programskim jezicima koje vi znate, ili koje bi želeli da naučite, računaju se bilo koji jezici koji služe za pravljenje nekog programa, sajta, aplikacije i slično, bilo da se ti jezici zvanično računaju u programske jezike ili ne ( poput HTML-a, CSS-a ).
  9. Dobar tutorijalan, jasan i precizno opisan. Dat je primer za osnovne tipove podataka, a pored toga je dato i objašnjene, nema suvišnog teksta, tutorijal je dugačak baš onako kako treba da bude. Obrađene su i neke naredbe mimo promenljivih, poput if-a, funkcija format i printf i nekih operatora, što dodatno doprinosi tutorijalu. Sve pohvale za tutorijal, samo tako nastavi.
  10. Dobar tutorijal, sve je lepo objašnjeno, ne predugačko ne prekratko, baš kako treba. Lepo si pristupio temi na početku time što si objasnio šta je ustvari Sublime i čemu on služi. Svaki korak je razumljiv i ne bi trebalo da postoji ikakav problem kada se neko pridržava ovih koraka. Sve pohvale, samo tako nastavi.
  11. Veoma sažet, odnosno kratak tutorijal, ali ipak koristan, uglavnom svako ko počinje da se bavi Pythonom, i udje u tu priču čuje i za Jupyter, pa i za Anacondu, tako da je korisno znati da je najlakši način za instalaciju Jupyter Notebook-a pomoću Anaconde. Ipak bih naglasio da je tutorijal trebao biti malo duži, trebao si navesti detaljnije ( moja preporuka po koracima ) kako instalirati sve tačno, nekome to nije tako jednostavno.
  12. Tutorijal kopiran sa https://pcchip.hr/softver/korisni/10-nacina-i-savjeta-kako-poceti-programirati/ LOCK
  13. Tutorijal je kopiran sa https://sh.wikipedia.org/wiki/Skriptovanje_sa_korisni%C4%8Dke_strane LOCK
  14. Evo pošto nema nikog drugog sa efikasnijim rešenjem, ja rekoh da se oprobam sa ovim zadatkom #include <stdio.h> #include <stdlib.h> typedef struct Stack{ int val; struct Stack* next; }IntStack; IntStack* push(int val, IntStack* stack){ IntStack* newel = (IntStack*)malloc(sizeof(IntStack)); newel->val = val; newel->next = stack; } IntStack* pop(IntStack* stack){ IntStack* next = stack->next; free(stack); return next; } int main() { int n; scanf("%d", &n); int* niz1 = (int*)malloc(n * sizeof(int)); int* niz2 = (int*)malloc(n * sizeof(int)); for(int i=0;i<n;++i){ scanf("%d",&niz1[i]); } IntStack* s = NULL; for(int i=n-1;i>=0;--i){ while(s && s->val <= niz1[i]) s = pop(s); if(!s) niz2[i] = -1; else niz2[i] = s->val; s = push(niz1[i], s); } for(int i=0;i<n;i++) printf("%d ", niz2[i]); printf("\n"); while(s){ s = pop(s); } free(niz1); free(niz2); return 0; } I ja takođe koristim dve ugnježdene petlje jednu for i jednu while, ali zbog upotrebe dinamičke strukture ( Stack-a ), složenost ne ide u O(n^2), već u O(n), jer uslov while petlje je vezan za stek, a stek se puni i prazni kroz for, tako da se ne ponovi ni jedan element koji je već bio u steku, odnosno broj elemenata koji će proći kroz stek je n, što maksimalni mogući broj ciklusa čini n + n ( što predstavlja složenost O(n) ). Radio sam u C-u valjda ne predstavlja problem.
  15. Prvo bih se zahvalio za pokušaj rešavanja zadatka, a onda bih prešao na par kritika u vezi samog rešenja. Nažalost rešenje u vidu algoritma napisanog rečima ili vizuelno napravljenog se ne računa, već samo rešenje napisano u nekom programskom jeziku. Ali ja sam ipak proučio tvoj algoritam i tu sam našao par mana, odnosno čak i da napišeš algoritam u nekom programskom jeziku, mislim da neće raditi ( nemoj ovo shvatiti kao da sigurno neće raditi, ti svakako možeš da pokušaš ). Prvo sam primetio da nigde u algoritmu nisi koristio podatak d. Moja logika mi kaže da si verovatno pogrešio u pisanju i da je u koraku broj 1. i koraku broj 5. umesto provere da li je max liste veci od m, trebalo da proveravamo da li je veci od d, posto je m broj kaznenih dana, a ne broj postova koje Laki ne sme da predje. Ukoliko pretpostavimo da je tako kako sam objasnio onda algoritam ima smisla do nekle. Pogledajmo sledeci test primer i prodjimo kroz algoritam sa njim: 10 11 5 6 3 10 2 1 1 7 4 5 8 1. max niza je 10 sto je vece od 5, pa prelazimo na korak 2 2. i 3. i 4. napravimo listu -1 -1 -1 -1 -1 -1 -1 -1 -1 10, ovo je lista f, sada je lista a sledeca 6 3 2 1 1 7 4 5 8 5. max niza je sada 8 sto je takodje vece od 5 pa stavljamo ga na prvo slobodno mesto u f i f sada izgleda ovako 8 -1 -1 -1 -1 -1 -1 -1 -1 10 i prelazimo na korak 6 6. i 7. i 8. i 9. nakon for petlje niz bi trebao izgledati ovako 8 1 1 2 3 4 5 6 7 10, ukoliko izracunamo maksimalni broj postova ovog niza on iznosi 8, odnosno uzmemo prvi element i narednih 11 dana Laki ne moze pisati. a sledeci niz bi bio korektan 1 1 2 3 4 5 10 6 7 8, i broj maksimalnih postova je 26. Naravno, u ovom test primeru je takav redosled ne mora da znaci da ce u sledecim biti slican redosled, algoritam za resenje zadatka treba da bude univerzalan. Ukoliko mislis da sam u objasnjenju negde pogresio ispravi me, ili pak napisi kod kad pronadjes vremena pa da ga testiram.
×
×
  • Create New...