Autor | Zpráva | ||
---|---|---|---|
joe Profil |
#1 · Zasláno: 3. 5. 2010, 02:20:32
Ahoj,
můžete mi někdo prosím poradit, jak udělat následující věc? Mám pole, třeba $arr = array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ); Záměrně jsem to napsal jako tabulku 6x6. A teď. Tam, bych tuto celou tabulku otočit doprava o 90 stupňů a místo 0 napsat jedničku. Takže výsledek by byl. $arr = array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ); Víte prosím někdo jak na to? Díky |
||
Radek9 Profil |
#2 · Zasláno: 3. 5. 2010, 07:03:17
joe:
To ale doopravdy není tabulka 6×6. Je to pouze pole s třiceti šesti prvky. Aby to bylo tak, jak říkáte, musel byste to napsat takto: $array = array( array(0, 0, 0, 0, 0, 0), array(0, 0, 0, 0, 0, 0), array(0, 1, 0, 0, 0, 0), array(0, 0, 0, 0, 0, 0), array(0, 0, 0, 0, 0, 0), array(0, 0, 0, 0, 0, 0) ); |
||
DoubleThink Profil * |
#3 · Zasláno: 3. 5. 2010, 07:28:31
|
||
nightfish Profil |
#4 · Zasláno: 3. 5. 2010, 07:31:29
joe:
„Tam, bych tuto celou tabulku otočit doprava o 90 stupňů a místo 0 napsat jedničku.“ Těch nul je tam 35, místo které z nich chceš napsat jedničku? Nebo je to tak, že to pole chceš otočit a "sloučit" s tím původním? (Pod pojmem "sloučit" si představuju operace OR - pokud je alespoň v jedné z těch dvou tabulek - otočené a neotočené - na dané pozici jednička, bude jednička i ve výsledku). |
||
AM_ Profil |
#5 · Zasláno: 3. 5. 2010, 09:33:57 · Upravil/a: AM_
Radek9:
„To ale doopravdy není tabulka 6×6. Je to pouze pole s třiceti šesti prvky.“ Tabulka 6x6 JE pole se 36ti prvky, záleží jak se na to díváš. pokud zavedeš bijekci [x,y]<->[z], kde [z]->[x,y] je [floor(z / 6), z mod 6], vidíš, že se na to dá dívat ekvivalentně. joe: „Tam, bych tuto celou tabulku otočit doprava o 90 stupňů a místo 0 napsat jedničku.“ Jednoduše, for ($i = 0; $i < 36; $i++) { if ($tabulka[$i] == 1) { $tabulka2 [6* (z mod 6) + floor (z/6)] = 1; //edit: musíš to cpát do jiné tabulky nebo udělat podobný workaround } } Tohle by mělo dělat to, co jsi popsal (jestli jsem dobře pohcopil z příkladu, tak tabulku nechceš otočit, ale jakoby provést operaci OR s jejím otočením (tedy jednička je všude, kde byla před nebo po otočení). |
||
Časová prodleva: 14 let
|
0