Misija - atrodi 30 vārdus 1.0 beta

Jānis Rubļevskis (koko) // 2009. gada 2. oktobrī, 10:04 // #Datori // 13 komentāri 

Kā jūs domājat, ko dara programmētājs, kad viņam pieriebjas kodēt oficiālos projektus? Nekā nebija - neiet viņš spaidīt galu kaut kur citur un neiet viņš vēdināt galvu kaut kur ārā. Atveriet taču beidzot acis - mēs esam frīki! Nu labi, ne vienmēr, bet šoreiz gan es tam nodevos un, tā vietā, lai atpūstos no programmēšanas, izdomāju, ka jāuzprogrammē kaut kas tāds, ko es vēl neesmu programmējis.

Tā arī tapa neliela "palīgprogramma" draugiem.lv diezgan svaigajai un populārajai spēlei "Āfrika".

Lai tiktu līdz spēlei, "Āfrikā" ir jāuzkačājas vismaz līdz 20 gadu vecumam, jāiegūst guru pakāpe un jāsāk spēle "Kalnietis". Tur tad viena no atrakcijām ir 13x13 kvadrātu vārdminēšanas spēle. Daudzi ir neaptēsti un šos vārdus nevar atrast, tāpēc tapa Misija - atrodi 30 vārdus 1.0 beta.

Es pats projekta aprakstā saku:

Šī lapa domāta tiem nabaga cilvēciņiem, kas nespēj atrast 13x13 kvadrātiņā nieka 10 vārdiņus.
Brīdinājums: var gadīties, ka visos 100% gadījumu tomēr nenostrādā, bet vajadzētu!

Ja tev patīk tas, ko tu šeit vari izdarīt, tad ziedo bērnu slimnīcai!

Pielietojums gaužām vienkāršs:

1) atveram paralēli divus pārlūka logus, kur vienā ir spēle, bet otrā ir atvērts afrikas.draudiem.lv;
2) sākam spēli un nofotografējam (paņemam skrīnšotu) kvadrātu ar burtiem (uz linux to var redzēt zemāk video, uz windows būs jāčakarējas ar PrintScreen, notepad un izgriešanu). (Ja kāds var, lūdzu uztaisiet skrīnkāstu arī uz windas - būšu pateicīgs);
3) uploadojam bildi jaunizstrādātajā resursā;
4) iekopējam minamos vārdus;
5) spiežam mēģināt un gaidam, kad visu izrēķinās.
Šajā procesā lielāko bremzi sastāda attēla uploadošana, ja ir lēns internets. Man vidēji to visu apstrādā 10 - 15 sekundēs.

Video studijā:

Par tehnoloģiju: programma strādā uz to, ka ir samācīts algoritms atpazīt fontus. Kad ir iegūts masīvs ar attiecīgajiem burtiem, tad jau pārējais ir bērnu spēle. Protams, sākumā gribēju taisīt globāli optimizētu intelektuālo aģentu, bet sapratu, ka uz tik mazu informācijas telpu tā ir pārāk liela lepistne (atvainojiet par manu franču valodu). Pie tam PHP nav loģiskās programmēšanas valoda un likt "IF THEN ELSE" likumus iekšā ir nedaudz neprātīgi, tāpēc tika izveidotas 148 simbolu virknes, kurām tad algoritms arī izskrēja cauri, meklējot attiecīgos vārdus.

P.S. Liels paldies programmatūras izstrādes firmai X IT par atbalstu, un, galvenais, paldies direktoram Jānim par sapratni!

P.S.S. Programmas izstrādei bija nepieciešamas aptuveni 11 stundas. Tas viss tika darīts sestdien-svētdien, tā, ka darbu nekavējām.

Komentāri

izskatās, ka tu tikko vēl sarežģīji citiem to spēli, jo izstradatajiem vajadzēs izkropļot fontus ;D

Nu lai jau kropļo! Skaistums tajā visā ir tas, ka es savu algoritmu varu apmācīt... Nav jau grūti iebarot arī izkropļotos fontus. Tikai es šaubos, ka izstrādātāji ķersies pie tā klāt, jo, galu galā, tad cilvēki var arī vairs nespēlēt to spēli.

Plus - es tak varēju uztaisīt arī trakāk - uzrakstīt greesmonkey skriptu, kas realtaimā pats saliek visus tos vārdus :D

Jah, greasemonkey man ar tieš' ienāca prātā, nebūtu tā ņemšanās ar ekrānšāviņiem. Facebook Bejeweled spēlei piem. ir bots, kas klikšķinās pats, atliek tikai skatīties un priecāties :)

Nu es negribēju būt tāds pidars un sačakarēt to spēli.. Ja jau galīgi cilvēks nevar atrast tos vārdus, tad tagad vismaz ir kaut kāda puslīdz neliela [le]pistne (nu tas tā - godīgo mierināšanai :D)

a vieglāk nebija uztaisīt divdimensiju masīvu un meklēt katra vārda 1. burtu, nočekot vai nākamais burts ir [$i-1][$j-1], [$i-1][$j], [$i-1][$j+1], [$i][$j-1], [$i][$j+1], [$i+1][$j-1], [$i+1][$j], [$i+1][$j+1] un tad atliek skatīties, ja nākamais burts atrodas [$i+1][$j+1], tad salīdzinam vai 3. burts ir [$i+2][$j+2], 4. burts [$i+3][$j+3] utt? sanāktu ātrāk nekā taisīt mistiskas 148 simbolu virknes. tas tā - tev būs viela pārdomām :D

Nu gluži tik vienkārši nebūs ;) Es jau teicu, ka tad ir vieglāk uztaisīt globāli optimizētu intelektuālo aģentu. Redz, tavā gadījumā ir tā, ka meklē tikai uz priekšu, a reāli spēlē vārdi var būt pa labi, pa kreisi, uz leju, uz augšu pa diagonāli pa labi, pa diagonāli pa kreisi, pa diagonāli uz augšu un pa diagonāli uz leju..

Manā gadījumā, kad ir tās rindas, tad ļoti ātri var izskriet cauri ar mb_stristr un nav problēmu tad noteikt attiecīgās pozīcijas ;)

Maladecs!

Tik ja lietotājs ir tik ļauns (kā es) un iebaro bildi kurā skripts nevar nolasīt nevienu burtu parādās ziemassvētku brīnums ieksh.net/d/mobix/pic/afrikas ;)

Kā jau vienmēr - aizmirsu noņemt kļūdu paziņojumus :P No kļūdām mācās :D

Handlot errorus - nerādot tos - tā ir māksla. Es ceru, ka es tevi nepareizi sapratu, nevis pareizi sapratu.

es tak rakstīju, ka atrodot pirmo burtu nākamais tiek meklēts visās 8 pozīcijās: $i-1][$j-1], [$i-1][$j], [$i-1][$j+1], [$i][$j-1], [$i][$j+1], [$i+1][$j-1], [$i+1][$j], [$i+1][$j+1], bet aiznākamo var meklēt tieši tajā virzienā, kurā bija 2. burts.

Nu tas jau būtu lokāli optimizēts intelektuālais aģents, kuru man rakstīt negribējās :P

Tev ir jāpasaka, kas tas ir par lielisko skinu firefoxam :)

dikti jauki izskatās

Tas ir Chromium 4.0.223.4 (Ubuntu build 29381), respektīvi Chrome, bet uz linux.

Ja gribi tādu skinu uz windas, tad jāņem Chrome un jāmeklē graphit iekš google piedāvātajām tēmām.

Paud savu subjektīvo viedokli:

Visi lauki (izņemot interneta vietni) aizpildāmi obligāti!
E-pasts publiski netiks parādīts.
Zinot vairākumu, komentāros tagi netiek atrādīti kā tagi. Linki automātiski pārveidosies par spiežamiem (cerams).
Bloga īpašnieks patur tiesības ļaunus komentārus dzēst vai pārveidot cilvēkiem patīkamākā formā, bet tajā pašā laikā neatbild par komentāru saturu.