Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Комбинаторика в AS 3.0 (http://www.flasher.ru/forum/showthread.php?t=154469)

Andrey730 18.04.2011 09:09

Комбинаторика в AS 3.0
 
Как реализовать следующее: Нужно занести в массив все возможные варианты расстановки "1" и "2" в 6 мест. То биш, варианты должны быть вроде таких: 111111, 111112, 111121 и т.д.
Пробовал реализовать через циклы, не получилось. Там, когда пытался вывести массив, выдавало:
Код:

1
     
12
     
121
     
121
     
1211
     
12112
     
121122
     
121122
     
1211221
     
12112212
     
121122121
     
121122121
     
121122121
     
1211221211
     
12112212112
     
121122121121
     
121122121121
     
1211221211211
     
12112212112112
     
121122121121122
     
121122121121122
     
1211221211211221
     
12112212112112212
     
121122121121122122
     
121122121121122122
     
121122121121122122
     
1211221211211221221
     
12112212112112212212
     
121122121121122122121
     
121122121121122122121
     
1211221211211221221211
     
12112212112112212212112
     
121122121121122122121122
     
121122121121122122121122
     
1211221211211221221211221
     
12112212112112212212112212
     
121122121121122122121122121
     
121122121121122122121122121
     
121122121121122122121122121
     
121122121121122122121122121
     
1211221211211221221211221211
     
12112212112112212212112212112
     
121122121121122122121122121121
     
121122121121122122121122121121
     
1211221211211221221211221211211
     
12112212112112212212112212112112
     
121122121121122122121122121121122
     
121122121121122122121122121121122
     
1211221211211221221211221211211221
     
12112212112112212212112212112112212
     
121122121121122122121122121121122121
     
121122121121122122121122121121122121
     
121122121121122122121122121121122121
     
1211221211211221221211221211211221211
     
12112212112112212212112212112112212112
     
121122121121122122121122121121122121121
     
121122121121122122121122121121122121121
     
1211221211211221221211221211211221211211
     
12112212112112212212112212112112212112112
     
121122121121122122121122121121122121121122
     
121122121121122122121122121121122121121122
     
1211221211211221221211221211211221211211221
     
12112212112112212212112212112112212112112212
     
121122121121122122121122121121122121121122122


Cornford 18.04.2011 09:17

например так:
Код AS3:

var arr:Array = [1, 1, 1, 1, 1, 1];
 
for (var i:int = 0; i<=5; i++){
    arr[i] = 2;
    trace(arr);
    arr = [1, 1, 1, 1, 1, 1];
}

криво конечно, но должно работать)

goodguy 18.04.2011 09:57

Cornford, по-моему слишком криво, чтобы работать )
Есть другой вариант
Код AS3:

 
var array:Array = new Array(6);
for (var i:int = 6; i > 0; i --) {
      array[i] = [1, 1, 1, 1, 1, 1]; // делаем сначала 6 ячейку равной всем однеркам
      array[i][i] = 2; // потом шестую ячейку, шестой ячейки заменяем на 2.
      // ну и далее по циклу, 5 ячейку всем однеркам, потом пятую ячейку пятой ячейки равной 2 и т.д.
}

Думаю идея ясна. Может конечно не правильно полнял вопрос
П.с. код писал прямо здесь, не тестировал

udaaff 18.04.2011 10:05

Автору нужны ВСЕ возможные варианты расстановки 1 и 2, т.е. их будет 2 в шестой степени, а не шесть штук. Достаточно перечислить все числа от 0 до 63, и вывести их строковое значение по основанию 2, с заменой цифр на необходимые символы. 0, допустим на 2 заменить.

-De- 18.04.2011 11:05

udaaff, +1, если 1 и 111111 - одинаковые.
Код AS3:

for (var i:uint = 0; i < 1 << 6; ++i) {
                                var s:String = "";
                                for (var j:uint = 0; j < 6; ++j) {
                                        s += String( ((i >> j) % 2) + 1);
                                }
                                trace(s);
                        }



Часовой пояс GMT +4, время: 16:23.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.