Страница 1 из 1

Протейший вопрос =)

Добавлено: Пт апр 10, 2009 7:58 pm
Airunreal
Небольшое предисловие...
Есть некий массив из 0 и 1...
надо выбирать по очереди все элементы из массива. и проверять равен ли 0 или нет. если нет выполняется такое то условие.
Сам вопрос - кто нибудь подскажите способ выбирать по очереди элементы массива. :oops:

Если кому не сложно подскажите.

Добавлено: Сб апр 11, 2009 6:03 pm
Andrey

Код: Выделить всё

X = Table[RandomInteger[{0, 10}]/10, {i, 16}] // N
Do[If[X[[i]] != 0, Print[X[[i]]]], {i, 16}]

Добавлено: Сб апр 11, 2009 6:41 pm
Airunreal
Andrey писал(а):

Код: Выделить всё

X = Table[RandomInteger[{0, 10}]/10, {i, 16}] // N
Do[If[X[[i]] != 0, Print[X[[i]]]], {i, 16}]


Сейчас чуток переделаем...
и попробую =)))

Добавлено: Вс апр 12, 2009 7:16 am
Airunreal
Andrey писал(а):

Код: Выделить всё

X = Table[RandomInteger[{0, 10}]/10, {i, 16}] // N
Do[If[X[[i]] != 0, Print[X[[i]]]], {i, 16}]


Андрей - если не сложно прочитай тут код. Я постараюсь максимально объяснить что делается.

F[mas_List, i_Integer, j_Integer, n_Integer, m_Integer] :=
Module[{count = 0},
If[i + 1 <= n, If[mas[[i + 1, j]] == 1, count++];];
If[(i + 1 <= n) && (j + 1 <= m),
If[mas[[i + 1, j + 1]] == 1, count++];];
If[(i + 1 <= n) && (j - 1 >= 1 ),
If[mas[[i + 1, j - 1]] == 1, count++];];
If[j + 1 <= m, If[mas[[i, j + 1]] == 1, count++];];
If[j - 1 >= 1, If[mas[[i, j - 1]] == 1, count++];];
If[i - 1 >= 1, If[mas[[i - 1, j]] == 1, count++];];
If[(i - 1 >= 1) && (j - 1 >= 1),
If[mas[[i - 1, j - 1]] == 1, count++];];
If[(i - 1 >= 1) && (j + 1 <= m),
If[mas[[i - 1, j + 1]] == 1, count++];];
count
];




n = 15;
m = 15;
mas = Table[0, {i, n}, {j, m}];
mas[[1, 1]] = 1;
mas[[2, 2]] = 1;
mas[[3, 3]] = 1;





Do[If[mas[[i, j]] = 0,
For[k = 1, k < 2, k++,
mas1 =
Table[count = F[mas, i, j, n, m];
If[count == 2, 1, 0], {i, n}, {j, m}];
mas = mas1;];
,For[k = 1, k < 2, k++,
mas1 =
Table[count = F[mas, i, j, n, m];
If[(count<2)||(count>4), 0, 1], {i, n}, {j, m}];
mas = mas1;];];, {i, n}, {j, m}]
ArrayPlot[mas]



Это вроде как реализация игры Жизнь. если ты вдруг знаешь =)))
Одним словом первый блок - задается функция которая проверяет всех соседей элемента массива - на то - 1 там или 0. если единица то добавляется в счетчик.

Далее создается массив. я сам вношу где единицы.

Потом идет вроде как условие что мол если элемент массива равен нулю, и вокруг него ровно две единицы - то записываем туда 1. в противном случае 0
и второе - если элемент массива равен 1 и соседей 1 вокруг него 2 или 3 то записываем единицу,в противном случае 0. и потом вывести этот массив графически. Вот только условия я по моему местами перепутал когда объяснял.

Вот ... посмотри. у меня в последнем блоке точно ошибка. я сам как то не пойму что делать уже =))) может сможешь подсказать если не сложно

Добавлено: Вс апр 12, 2009 10:18 am
Andrey

Код: Выделить всё

F[mas_List, i_Integer, j_Integer, n_Integer, m_Integer] :=
  Module[{count = 0},
   If[i + 1 <= n, If[mas[[i + 1, j]] == 1, count++];];
   If[(i + 1 <= n) && (j + 1 <= m),
    If[mas[[i + 1, j + 1]] == 1, count++];];
   If[(i + 1 <= n) && (j - 1 >= 1),
    If[mas[[i + 1, j - 1]] == 1, count++];];
   If[j + 1 <= m, If[mas[[i, j + 1]] == 1, count++];];
   If[j - 1 >= 1, If[mas[[i, j - 1]] == 1, count++];];
   If[i - 1 >= 1, If[mas[[i - 1, j]] == 1, count++];];
   If[(i - 1 >= 1) && (j - 1 >= 1),
    If[mas[[i - 1, j - 1]] == 1, count++];];
   If[(i - 1 >= 1) && (j + 1 <= m),
    If[mas[[i - 1, j + 1]] == 1, count++];];
   count];


n = 15;
m = 15;
mas = Table[0, {i, n}, {j, m}];
mas2 = Table[0, {i, n}, {j, m}];
mas[[1, 1]] = 1;
mas[[2, 2]] = 1;
mas[[3, 3]] = 1;

Do[count = F[mas, i, j, n, m];
 If[mas[[i, j]] == 0,
  If[count == 2, mas2[[i, j]] = 1],
  If[count == 2 || count == 3, mas2[[i, j]] = 1, mas2[[i, j]] = 0]],
 {i, n}, {j, m}]
ArrayPlot[mas2]

Добавлено: Чт апр 16, 2009 5:42 pm
Airunreal
Andrey писал(а):

Код: Выделить всё

F[mas_List, i_Integer, j_Integer, n_Integer, m_Integer] :=
  Module[{count = 0},
   If[i + 1 <= n, If[mas[[i + 1, j]] == 1, count++];];
   If[(i + 1 <= n) && (j + 1 <= m),
    If[mas[[i + 1, j + 1]] == 1, count++];];
   If[(i + 1 <= n) && (j - 1 >= 1),
    If[mas[[i + 1, j - 1]] == 1, count++];];
   If[j + 1 <= m, If[mas[[i, j + 1]] == 1, count++];];
   If[j - 1 >= 1, If[mas[[i, j - 1]] == 1, count++];];
   If[i - 1 >= 1, If[mas[[i - 1, j]] == 1, count++];];
   If[(i - 1 >= 1) && (j - 1 >= 1),
    If[mas[[i - 1, j - 1]] == 1, count++];];
   If[(i - 1 >= 1) && (j + 1 <= m),
    If[mas[[i - 1, j + 1]] == 1, count++];];
   count];


n = 15;
m = 15;
mas = Table[0, {i, n}, {j, m}];
mas2 = Table[0, {i, n}, {j, m}];
mas[[1, 1]] = 1;
mas[[2, 2]] = 1;
mas[[3, 3]] = 1;

Do[count = F[mas, i, j, n, m];
 If[mas[[i, j]] == 0,
  If[count == 2, mas2[[i, j]] = 1],
  If[count == 2 || count == 3, mas2[[i, j]] = 1, mas2[[i, j]] = 0]],
 {i, n}, {j, m}]
ArrayPlot[mas2]

все точно =))) только я сделал ошибку когда сказал что 0 массива перерождается в 1 при условии что у него ровно 2 соседа. долго мучился не мог понять чего у меня не правильно. а там оказывается в правилах надо для 0 что бы ровно 3 соседа!!!! УРА =))) СПАСИБО Андрей !!! :lol:

Добавлено: Вт июн 30, 2009 12:22 pm
datrinex
budmat1 писал(а):http://juzi.ru/wallpapers/7/4.html
http://capekana.ru/stol-kompjuternyjj-10.html
http://www.tuluz.ru/content/view/703/
http://www.greekwinter.ru/content/view/43/35/
http://mosrlt.ru/133/s-d/
http://www.kerun.ru/?p=36
http://manrol.ru/?p=261
http://apartmenti.ru/106/s-c/
http://www.med-site.org/cgi-bin/8.pl?show=320
http://hiphopfight.ru/article14-page2.html
http://www.domano.ru/news14.html
http://www.pravanet.ru/content/view/597/76/
http://www.pesnyary.com/album.php?id=30&groupid=1
http://www.masterssl.com/seq_4.htm
http://fullhealth.ru/60.html
http://kireika.ru/script.php.html
http://iftomm.ru/index.php?page%252Fcon ... s.php.html
http://www.allcredits.spb.ru/credit/11/3/0/
http://pozvonimne.ru/son/content/view/1189/
http://sprach-insel.com/index.php?optio ... &Itemid=61
http://www.xbox2.ru/den-fizkulturnika-f ... e-2005.php
http://www.stilia.ru/component/option,c ... nc,search/
http://www.fanclub-fakel.ru/article/text/165.html
http://prohormone.ru/?p=691
http://www.5sezon.ru/?url=fitnes&razd=dance
http://www.art-tur.com/eks.html
http://lpb.ru/?action=more&id=10142&p=6&Us=ufasumki
http://www.spishy.ru/pages/50/i27
http://vauto.biz/vseoturbinax.html
http://www.japan-sumo.ru/home4.wakakirin.htm
http://moscow2006.com/eng/news/congress/1391/
http://kalugaauto.ru/100.html
http://www.mybirds.ru/news/detail.php?ID=5743
http://www.madridist.ru/103-portsmut-pr ... hhemu.html
http://www.agentura.ru/press/cenzura/bez_ussr/
http://www.children-care.ru/walk1/
http://alfaromeoguide.ru/page/2/
http://fiatstation.ru/index.php?do=lostpassword
http://www.saitostroitelstvo.ru/index.p ... 1&Itemid=5
http://smolensknature.ru/?tag=%d0%b4%d0%b8%d1%81%d0%ba
http://www.masterbilliards.ru/catalog/d ... ree_id=176
http://www.endictionary.com/statd.htm
http://myniva.ru/dir/92
http://www.sf-club.ru/modules.php?op=mo ... ndex&req=E
http://slavgimn.ru/tag/gimnastika/
http://www.mebweb.ru/products/49
http://placeart.ru/forum/index.php?showforum=66
http://www.teploportal.ru/obzor1-1.htm
http://www.interiorworld.ru/news-284.html

________________________________________
качественные входные двери