Pieduriens Posted May 24, 2009 Report Share Posted May 24, 2009 (edited) x ass 12345678910 1 xxxxxxxxxx 2 xxxxxxxxxx 3 xxxooooxxx y 4 xxxooooxxx ass 5 xxxooooxxx 6 xxxxxxxxxx 7 xxxxxxxxxx 8 xxxxxxxxxx 9 xxxxxxx9xx 10xxxxxxxxxx 1. Kā izveidot masīvu, kurā ir šie 100x, lai vajadzības gadijumā varētu apstrādāt katru x ar citu vērtību. 2. Kā no šī masīva izviklt x=8, y=9, apzīmēju ar 9 3. Kā sagrubēt masīvu masivā, lai piemēram iegūtu lauku no (x=4-7)(y=3-5) - apzīmēju šo apgabalu ar o Paldies. Edited May 24, 2009 by Pieduriens Quote Link to comment Share on other sites More sharing options...
bubu Posted May 24, 2009 Report Share Posted May 24, 2009 1) $elements = "xxxxxxxxxx" + "xxxxxxxxxx" + "xxxooooxxx" + ...; // utt visus par rindām saraksti 2) echo $elements[($y-1)*10 + ($x-1)]; 3) vienkāršākajā veidā - ar diviem for cikliem pa x un y asīm Quote Link to comment Share on other sites More sharing options...
Pieduriens Posted May 24, 2009 Author Report Share Posted May 24, 2009 (edited) bubu, kā Tu ieteiktu katras vienības kārtošanu, ņemot vērā, ka 100x ir tikai paraugs. Katram x`am, ja sākotnējais x skaits būs pie 50k, nerakstīs tak katrai savu adresi ? Ideju attīstot varētu nodefinēt x un y asi, kurā x*y== vienību skaits, automātiski katrai vienībai adrese ? Edited May 24, 2009 by Pieduriens Quote Link to comment Share on other sites More sharing options...
bubu Posted May 24, 2009 Report Share Posted May 24, 2009 Par kādām adresēm tu runā? Ja tev datu apjoms ir liels, tad der padomāt par citu datu struktūru. Viss atkarīgs no tā, ko tu taisies iesākt ar tiem datiem, kas ir tajā matricā. Tu prasīji par 10x10 lauciņu, tam prasts strings ir vairāk nekā pietiekoši ;) Quote Link to comment Share on other sites More sharing options...
Pieduriens Posted May 24, 2009 Author Report Share Posted May 24, 2009 (edited) Adrese = katram x, kur x satur dažādas vērtības, attiecīgi, katram x vēlams savs id datubāzē, jo šīs vērtības mainīsies. Konstanti uz vietas paliek tikai laukums, līdz visi x ir aizņemti, līdz ar to vēlams lai var piekabināt klāt jaunus apgabalus. 10x10 ir tikai kā piemērs formulas izveidei... Kādi prātā nāk citi datu struktūras veidi ? Edited May 24, 2009 by Pieduriens Quote Link to comment Share on other sites More sharing options...
bubu Posted May 24, 2009 Report Share Posted May 24, 2009 Ja tajā matricā ir daudz neizmantoti elementi, bet tikai dažas rūtiņas ir aizņemtas, tad ir daudz viedu. Tas saucās Sparse Matrix. Būtība tāda, ka tu glabā nevis visu matricu, bet tikai sarakstu ar aizņemtajiem elementiem un to adresēm, tipa (vienkārši izsakoties): (0, 1) -> "a" (5, 6) -> "b" ... Tas nozīmē, ka adresē y=0,x=1 atrodas "a", adresē y=5, x=6 atrodas "b". Ja parasti savā matricā rakstīsi kvadrātaina izskata aizņemtos elementus, tad vajag glabāt aizņemto četrstūrīšu sarakstu: (1, 2, 5, 6) -> "aabcddaa..." Tas nozīmē, ka četrstūrī y=1..5, x=2..6 atrodas dati ar saturu (katrā rūtiņā pa vienam elementam) "aabcd...". utt.. Wikipēdijā parādīts vēl viens - Yale Sparse Matrix Format. Varianti ir daudz. Te vēl lasāmais: http://www.cs.utk.edu/~dongarra/etemplates/node372.html Kā jau saku - izvīgākais formāts ir atkarīgs no tā, kādi ir dati un kādas operācijas taisies veikt ar elementiem. Quote Link to comment Share on other sites More sharing options...
Pieduriens Posted May 24, 2009 Author Report Share Posted May 24, 2009 Ja tajā matricā ir daudz neizmantoti elementi, bet tikai dažas rūtiņas ir aizņemtas, Katra matrica neizmantotā (nenoteiksmē) satur aukstākais 3-4 vērtības, līdz ar to katra matrica ir jāparāda... ceru, ka saprotam viens otru :) Quote Link to comment Share on other sites More sharing options...
bubu Posted May 24, 2009 Report Share Posted May 24, 2009 Tev ir vairākas matricas? Matrica ir tas, ko tu agstak rādīji - viena kvadrtātaina tabula. Par matricas elementu sauc vienu no tiem taviem "x" vai "o", kas atrodas vienā tabulas rūtiņā. Tad tev sparse matricas nederēs, ja nav neizmantotu elementu. A kas tev tiešām tur būs 50k*50k elementu? Tas ir vien ir ~250MB, ja katrs matricas elements aizņem 1 baitu. Tu tiešām katram lietotājam tādu kvantumu taisies lādēt atmiņā? Tas nav reāli. Tev noteikti tie dati jāglabā kur citu un jāoperē ar tiem savādāk, nevis ar prastām php funkcijām. Quote Link to comment Share on other sites More sharing options...
Pieduriens Posted May 24, 2009 Author Report Share Posted May 24, 2009 (edited) Tev ir vairākas matricas? Matrica ir tas, ko tu agstak rādīji - viena kvadrtātaina tabula. Par matricas elementu sauc vienu no tiem taviem "x" vai "o", kas atrodas vienā tabulas rūtiņā. Nu beidzot sāku saprast, atvainojos par savu stulbumu. labojums, nevis matricas pievienošana bet elemntu apgabalu pievienošana matricai, matricas iztiepšana... Edited May 24, 2009 by Pieduriens Quote Link to comment Share on other sites More sharing options...
Pieduriens Posted May 24, 2009 Author Report Share Posted May 24, 2009 (edited) <? $matrica = "01 02 03 04 05 06 07 08 09 10" "11 12 13 14 15 16 17 18 19 20" "21 22 23 24 25 26 27 28 29 30" "31 32 33 34 35 36 37 38 39 40" "41 42 43 44 45 46 47 48 49 50" "51 52 53 54 55 56 57 58 59 60" "61 62 63 64 65 66 67 68 69 70" "71 72 73 74 75 76 77 78 79 80" "81 82 83 84 85 86 87 88 89 90" "91 92 93 94 95 96 97 98 99 100" $01= { $cena=87567425; $statuss=brivs; $apraksts=1; } ?> Idejiski pareiza doma ? Edited May 24, 2009 by Pieduriens Quote Link to comment Share on other sites More sharing options...
bubu Posted May 24, 2009 Report Share Posted May 24, 2009 Nesapratu. Ne tur sintakse korekta, ne imho tev strings kā matrica derēs. Ja vajag vairākus datus glabāt, tad nāksies veidot masīvu no objektiem (vai asociatīvajiem masīviem): $masivs = array(new Element(87567425, "brivs", 1), new Element(...), ...); // vai $masivs = array({"cena":87567425, "statuss": "brivs", "apraksts":1}, {...}, ...); Bet nopietni apdomā aizņemto atmiņas daudzumu uz katru pieprasījumu, glabājot datus šādā supermasīvā.. Quote Link to comment Share on other sites More sharing options...
Pieduriens Posted May 24, 2009 Author Report Share Posted May 24, 2009 kādi varētu būt cita veida risinājumi ? prakse nav tik liela.... Quote Link to comment Share on other sites More sharing options...
bubu Posted May 24, 2009 Report Share Posted May 24, 2009 Nu kautvai prasta MySQL vai jebkura cita XyzSQL datubāze. Quote Link to comment Share on other sites More sharing options...
Pieduriens Posted June 12, 2009 Author Report Share Posted June 12, 2009 (edited) Paspēlējos ar šo, no mazliet savādākas puses. Ņemot par pamatu, ka katram info tipam ir sava sql tabula: $=x (x ass izmērs garumā-skaitlis) $=y (y ass izmērs platumā-skaitlis) $laukumaizmērs=$x*$y Tikai apstājos pie šīs domas, kas tad man tagat sadalīs katru iegūto vienību no matricas, pa vienam + adresi. $vienibasid (x2;y5) utt. $vienibascena ($vienibasid; cena) Kā tas varētu izskatīties uz mysql? Paldies! Edited June 12, 2009 by Pieduriens Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.