Fliize Ierakstīts Aprīlis 10, 2012 Share Ierakstīts Aprīlis 10, 2012 Izveidoju mazu algoritmu, kurš 10x10 masīvā "staigā" pa indeksiem, sākumā tiek izvēlētas koordinātas (x,y) ar random skaitļiem, tālāk staigāt var par vienu lauciņu uz jebkutu pusi, tajā pašā, kurā bija palikt nedrīkst (tas ir vienkārši bezjēdzīgi). Funkcija paņem vērtības un izdod jaunās, kas pārvieto "cilvēciņu" viena laukuma robežās. Ko jūs teiktu par šādu algoritmu? Ja nepieciešams, varu padalīties arī ar programmas pilno kodu xn=x+ran(3)-1; yn=y+ran(3)-1; while(yn>9 || yn<0 || xn>9 || xn<0 || xn==x && yn==y) { if(xn>9 || xn<0) { xn=x+ran(3)-1; } if(yn>9 || yn<0) { yn=y+ran(3)-1; } if(xn==x && yn==y) { xn=x+ran(3)-1; yn=y+ran(3)-1; } } x=xn; y=yn; return x,y; Link to comment Share on other sites More sharing options...
gudolfs Aprīlis 10, 2012 Share Aprīlis 10, 2012 (labots) izskatās pēc sū** - kods. Man liekas, ka prātīgāk sākumā jā atrast kkādus random x un y, bet tālāk vienkārši piešķirt 4x iespējamām vērtībām (nu vai mazāk kā 4, ja nav 4) indexu no 1 līdz 4 (vai mazāk) un rēķināt rand(4) .... nezinu, cik tas efektīvi, bet tad būtu saprotamāks... tu vari uztaisītu kkādu klasi "solis" , kurai ir divi propertīji - x un y. Labots Aprīlis 10, 2012 - gudolfs Link to comment Share on other sites More sharing options...
Fliize Aprīlis 11, 2012 Author Share Aprīlis 11, 2012 Pēc "sūda"? Paskaidrosi? Klases veidošana tikai visu lieki sarežģītu, jo šī ir klases funkcija. Man pat sāk likties, ka pietiks man ar savu izveidoto brīnumu, jo strādāt strādā labi, varbūt while ciklā visur salikšu ||. Masīva vidū pastāv 8 vietas, kur pārvietoties, stūros tikai 3, būtu diezgan nepatīkami visu laiku paŗbaudīt, vai tā vieta eksistē.. Link to comment Share on other sites More sharing options...
Inspektors Caps Aprīlis 11, 2012 Share Aprīlis 11, 2012 Adekvāti būtu vispirms paskaidrot priekš kam Tu taisi šo nenormāli sarežģīto "algoritmu". (yn>9 || yn<0 || xn>9 || xn<0 || xn==x && yn==y) Vai, neskatoties palīgmateriālos, vari pateikt kā šī rinda izpildās? Šādām niansēm nelikt iekavas ir diezgan slikts stils... Link to comment Share on other sites More sharing options...
Fliize Aprīlis 11, 2012 Author Share Aprīlis 11, 2012 Pardon, apskaidrošu. Jaunā izveidotā vērtībā nedrīkt būt lielāka par 9 un mazāka par 0, jo tad iziet ārā no masīva izmēriem. xn==x && yn==y nedrīkst izpildīties, jo tad pozīcija netike mainīta. Drīkst būt xn==x || yn==y. Kamēr kāds no tiem nosacījumiem izpildās, tiek veidotas jaunas vērības. Centos rakstīt vienkāršāku, bet nu galīgi nesanāca :/ Kļūdas algortima darbā atradi pagaidām neesmu Link to comment Share on other sites More sharing options...
melts Aprīlis 23, 2012 Share Aprīlis 23, 2012 (labots) while(yn>9 || yn<0 || xn>9 || xn<0 || xn==x && yn==y) Vai šis gadījumā nenozīmē, ka cikls griežās tikai tikmēr, kamēr solis šķērso masīva robēzu vai paliek uz vietas? Ja paņem, piemēram, masīva centru un nākamais solis sanāk uzreiz blakus, tad cikls beidzas,jo visi nosacījumi ir false. Labots Aprīlis 23, 2012 - melts Link to comment Share on other sites More sharing options...
Vilx- Aprīlis 23, 2012 Share Aprīlis 23, 2012 (labots) Nē, lasi uzmanīgi. Tā ir funkcija, kura atrgriež nākamo pozīciju, kas joprojām ir masīvā, un nesakrīt ar iepriekšējo pozīciju. Cikls izpildās tik ilgi, kamēr randomi ģenerētā jaunā pozīcija ir "slikta". Principā man izskatās pēc OK koda. Var uzrakstīt arī citādāk, moš īsāk vai lasāmāk, bet šim arī nav ne vainas. Bet kam Tev kaut ko tādu? O_o Ā, vienīgi "return" laikam var atgriezt tikai vienu vērtību, nevis divas. Tā kā šis vairāk izskatās pēc pseidokoda. Var mazliet novienkāršot: do { xn=x+ran(3)-1; yn=y+ran(3)-1; } while(yn>9 || yn<0 || xn>9 || xn<0 || (xn==x && yn==y)) return xn,yn; Labots Aprīlis 23, 2012 - Vilx- Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!