Sunday, December 24, 2006
Besplatan SMS!
Ova opcija me je baš obradovala, naročito kad sam video da među zemljama koje su podržane za slanje SMS poruka ima i Srbija.
Nešto posle ovog otkrića sam naleteo na google-calendar-data-api. Pomoću tog API-ja možete napisati aplikaciju za pristupanje google calendar-u. Za igranje sa događajima. Za dodavanje, brisanje, pregled i sl.
Čim sam video na ovaj api, sinula mi je ideja da možda mogu napisati aplikaciju koja će, koristeći isti i gore pomenutu opciju google calendara da služi za besplatno slanje SMSova. I posle malo eksperimentisanja uspeo sam (u nekoj meri) u tome.
Aplikaciju možete preuzeti ovde.
Da biste je mogli koristiti potrebno je da uradite par stvari.
Za slanje poruka potrebno je da imate GMail nalog i kreiran google calendar.
Da biste mogli da primate poruke, potrebno je u podešavanjima google calendar-a da ostavite vaš broj telefona i otkačite opciju za slanje SMS notifikacije za "New invitations".
Što se tiče broja poruka koje mogu da se prime, google ga je ograničio na max 20 dnevno, odnosno 150 mesečno po jednom nalogu. Možete poslati beskonačno mnogo poruka.
Format poruke je malo problematičan, jer ne može iz aplikacije da se utiče na njega. Pošto google šalje poruku ona je oblika: "Damjan Tomic invites you to: TEKST VASE PORUKE @vreme i datum" (ako sa mog naloga nekom šaljem), što znači da ne može svih 160 karaktera da se iskoristi za tekst poruke. Veličina zavisi od duzine imena i prezimena onoga ko šalje poruku. Ja sam stavio da default veličina poruke bude 60 karaktera, ali to svako može promeniti u aplikaciji u zavisnosti od dužine imena i prezimena. Ukoliko je poruka koju želite poslati veća od pomenute dužine, program će je izdeliti na više manjih poruka.
Aplikacija je trenutno u verziji 1.0 :) tako da nema neke od realno potrebnih opcija, kao što su snimanje podešavanja ili spiska kontakata. To će nadam se uskoro biti ubačeno.
Aplikacija je pisana u javi. Potrebno je da imate jre 5.0 na vašem računaru. Ukoliko nemate, možete je skinuti odavde
Source će uskoro biti postavljen na http://gnu.fon.bg.ac.yu/subversion/ pa će svako ko želi moći da se igra sa ovim.
Očekujem komentare sa utiscima i novim predlozima.
Tuesday, June 27, 2006
sudoku
Verovatno ste svi čuli za igru Sudoku.
Pravila su vrlo jednostavna:
Dobijete matricu dimenzija 9x9, koja je dodatno izdeljena na 9 manjih matrica (3x3), u neka polja su upisani brojevi od 1 do 9 i vi treba da popunite celu matricu tako da se u svakom redu i koloni, ali i u unutrašnjoj matrici od 3 x 3 polja, nađu brojevi od 1 do 9, pri čemu se oni ne smeju ponavljati.
Jedan nemački matematičar izračunao je da je ukupan broj kombinacija u ovoj igri 6.670.903.752.021.072.936.960, što, kako negde pročitah, odgovara broju mikrona do najbliže zvezde.
Više o igri naravno možete pročitati na: http://en.wikipedia.org/wiki/Sudoku
Imao sam priliku da se igram malo sa ovim, i ono što sam napravio možete videti ovde.
U pitanju je JAVA aplet koji rešava bilo koji sudoku zadatak (koji ima rešenje, naravno). Ukoliko ima više rešenja, prikazaće prvo na koje naiđe.
Što se algoritma tiče, program prvo pokušava da na "pametan" način dođe do rešenja, znači gleda da li je vrednost nekog polja očigledna, zatim za sva ostala polja računa kandidate za vrednosti, pa na osnovu pravila (da u 1 vrsti, koloni ili maloj matrici svi elementi moraju biti različiti) poljima koja imaju samo 1 kandidata fiksira vrednost. I to se tako vrti dok ne dođe do trenutka u kome sva ne rešena polja imaju više kandidata, tako da ne postoji način da se utvrdi koje vrednosti treba fiksirati.
U tom trenutku u priču se uključuje backtracking algoritam, koji rekurzivno pokušava da pronađe prave vrednosti.
On radi tako što uzme prvo ne rešeno polje i fiksira mu prvog kandidata, zatim za takvu matricu pokušava da nadje rešenje. Ukoliko u nekom trenutku, posle primene svih gore pomenutih pravila bilo koje ne rešeno polje ostane bez kandidata, to je signal da nešto ne valja, i rekurzivna funkcija se vraća nazad i uzima prvog sledećeg kandidata.
Ukoliko neko želi, okačiću source , pa da ga zajedno prodiskutujemo. (naravno, pošto nisam koristio nikakav obfuscator, oni sa malo više znanja mogu i sami da vide source :))