|
Белый кубик | ☑ | ||
---|---|---|---|---|
0
Ненавижу 1С
гуру
11.10.11
✎
08:58
|
Каждую грань белого кубика можно либо оставить белой, либо на ней нарисовать черную диагональ (одну для грани). Сколькими различными способами можно таким образом раскрасить кубик?
Два кубика раскрашены одинаковыми способами, если можно их повернуть в пространстве так, что их рисунки: слева, справа, сверху, снизу, спереди и сзади совпадают. |
|||
1
Нуф-Нуф
11.10.11
✎
08:59
|
Джони, ло ханта эста ми лока. ВАТАФАК?
|
|||
2
Ненавижу 1С
гуру
11.10.11
✎
09:01
|
(1) засранец ты
|
|||
3
Нуф-Нуф
11.10.11
✎
09:04
|
(2) ну дык а че ты такие ребусы задаешь...
|
|||
4
Ненавижу 1С
гуру
11.10.11
✎
09:07
|
(3) попроще задать?
|
|||
5
skunk
11.10.11
✎
09:11
|
6 бит - это 64 различных значения
|
|||
6
skunk
11.10.11
✎
09:12
|
вторую часть никуя непонял
|
|||
7
Темный Эльф
11.10.11
✎
09:13
|
(5)
000001 100000 совпадут. Кроме того, диагонали можно нарисовать двумя способами, а можно оставить грань белой. |
|||
8
Ненавижу 1С
гуру
11.10.11
✎
09:15
|
(7) да, если бы не повороты, то было бы 3^6=729 вариантов, но вот повороты все осложняют
|
|||
9
skunk
11.10.11
✎
09:16
|
(7)одну для грани
|
|||
10
Темный Эльф
11.10.11
✎
09:17
|
(9)Можно из правого верхнего в левый нижний, а можно из левого верхнего в правый нижний
|
|||
11
Alexandr Puzakov
11.10.11
✎
09:21
|
Кубик вроде как можно раскрасить 8! (восемь факториал) способами.
|
|||
12
Alexandr Puzakov
11.10.11
✎
09:22
|
Тьфу-ты! 6! способами :)
|
|||
13
Темный Эльф
11.10.11
✎
09:23
|
(11)Число способов явно меньше 729, как сказано в (8) :) Другое дело, что среди 729 способов есть совпадающие
|
|||
14
Темный Эльф
11.10.11
✎
09:29
|
(12)Я знаю седьмой
|
|||
15
strh
11.10.11
✎
09:30
|
2^0*13+2^1*11+2^2*9+2^3*7+2^4*5+2^5*3+2^6*1=367 как то так
|
|||
16
Alexandr Puzakov
11.10.11
✎
09:30
|
(13) эт я с разгону ляпнул, будет 6!. Каждый кубик можно также поставить в одно из 6! положений. И тогда получается...
6!*6! это для одного кубика варианты раскраска/поворот. Для двух кубиков будет хотя бы одно совпадение из 6!*6!*6! комбинаций. Поправьте. |
|||
17
strh
11.10.11
✎
09:33
|
(15) ошибся, значительно меньше, попробую посчитать
|
|||
18
Темный Эльф
11.10.11
✎
09:33
|
(16)6!=720. Только 9 совпадающих позиций? Я тебе с разгона назову вдвое больше.
|
|||
19
Alexandr Puzakov
11.10.11
✎
09:33
|
Полная дробь будет
(6!*6!*6!*6!)/6! где в числителе все возможные комбинации каждого кубика, а в знаменателе количество возможных совпадений. |
|||
20
Ненавижу 1С
гуру
11.10.11
✎
09:35
|
(19) по-моему полная чушь
|
|||
21
Alexandr Puzakov
11.10.11
✎
09:36
|
Или 6! это будет все возможные комбинации покраска/поворот для одного кубика?
|
|||
22
Alexandr Puzakov
11.10.11
✎
09:39
|
(20) ну поправь. Я с ходу решение ляпнул, вполне мог ошибиться. А "по-моему полная чушь" ни разу не опровержение :)
|
|||
23
Ненавижу 1С
гуру
11.10.11
✎
09:40
|
(22) посмотри (8), это ОЧЕНЬ грубая оценка сверху, но и она меньше чем (19)
|
|||
24
Alexandr Puzakov
11.10.11
✎
09:40
|
Короче, я склоняюсь к 6!*6! возможных комбинаций раскраска/положение каждого из двух кубиков.
|
|||
25
Ненавижу 1С
гуру
11.10.11
✎
09:41
|
(24) вот ты пишешь налево-направо факториалы, а какое обоснование его применения?
|
|||
26
Alexandr Puzakov
11.10.11
✎
09:45
|
(26) как какое? Через факториал как раз и вычисляются количество возможных комбинаций. Только возможно перед знаком факториала будет не n (т. е. 6), а n-1 (т. е. 5).
|
|||
27
Ненавижу 1С
гуру
11.10.11
✎
09:51
|
(26) вычисляют то вычисляют, но не в данном случае
|
|||
28
Alexandr Puzakov
11.10.11
✎
09:54
|
(27) а чем данный случай отличается от других случаев нахождения всех возможных комбинаций?
|
|||
29
mrkorn
11.10.11
✎
09:59
|
у кубика 3 оси симметрии по-идее надо 729 на 3 разделить
|
|||
30
Ненавижу 1С
гуру
11.10.11
✎
10:00
|
(28) такой пример, есть три монетки 1, 2 и 5 рублей. Каждая может на столе лежать орлом или решкой. Вопрос: сколько всего комбинаций?
|
|||
31
Ненавижу 1С
гуру
11.10.11
✎
10:01
|
(29) у кубика их больше
|
|||
32
mrkorn
11.10.11
✎
10:03
|
(31) осей 3 - есть еще плоскости симметрии
|
|||
33
mikecool
11.10.11
✎
10:06
|
(1) +100500 бугога
|
|||
34
Ненавижу 1С
гуру
11.10.11
✎
10:07
|
(32) осей больше:
3 через центры граней 4 через вершины 6 через середины ребер |
|||
35
mrkorn
11.10.11
✎
10:11
|
14 вариантов раскраске, если грани не уникальные
|
|||
36
Ненавижу 1С
гуру
11.10.11
✎
10:12
|
(35) как посчитал?
|
|||
37
Nagaru
11.10.11
✎
10:13
|
(35) Мало
|
|||
38
mrkorn
11.10.11
✎
10:15
|
посчитал
0 граней черных - 1 вариант 1 - 1 2 - 3 3 - 2 умножить на 2 |
|||
39
mrkorn
11.10.11
✎
10:15
|
да же вру 2 грани черных 2 варианта
значит все 12 |
|||
40
Nagaru
11.10.11
✎
10:17
|
так ведь они не полностью черные, а только диагонали, поэтому вариантов больше
|
|||
41
strh
11.10.11
✎
10:17
|
я тебе сходу дам 15 вариантов это с раскрашенными только от 0 до 3 граней
а так вроде 70 вариантов |
|||
42
Alexandr Puzakov
11.10.11
✎
10:18
|
(30) 3! кажется.
|
|||
43
mrkorn
11.10.11
✎
10:19
|
(40) ясно
|
|||
44
Nagaru
11.10.11
✎
10:19
|
(42) 3^2 кажется
|
|||
45
Alexandr Puzakov
11.10.11
✎
10:19
|
Откуда вы взяли цифру 3? У кубика 6 граней...
|
|||
46
Ненавижу 1С
гуру
11.10.11
✎
10:22
|
(42)(44) мда... ответ на (30) равен 2^3
|
|||
47
Alexandr Puzakov
11.10.11
✎
10:24
|
(44) количество комбинаций вычисляется факториалами, а не степенями.
|
|||
48
Ненавижу 1С
гуру
11.10.11
✎
10:24
|
(47) это смотря где ))
|
|||
49
deputat2
11.10.11
✎
10:26
|
6!*3!=2160
|
|||
50
Ненавижу 1С
гуру
11.10.11
✎
10:27
|
(49) смотри (8)
|
|||
51
deputat2
11.10.11
✎
10:31
|
6!*2=1440
|
|||
52
Nagaru
11.10.11
✎
10:34
|
охренеть, 1440 вариантов, вот уверен, что больше порядок - около 50 вариантов, но 1440... есть хоть одно обоснование того, что надо брать факториал и умножать его на 2 или просто так, понравились цифры и знаки?
|
|||
53
Nagaru
11.10.11
✎
10:35
|
(47) В том случае именно степенью, только я спутал числа. Факториал там был совершенно не при чем.
|
|||
54
deputat2
11.10.11
✎
10:42
|
тогда 2*2^6=256
|
|||
55
Alexandr Puzakov
11.10.11
✎
10:43
|
(50) выкладывай уже ответ и не томи.
|
|||
56
deputat2
11.10.11
✎
10:48
|
или 3^6-2^6=601
|
|||
57
Alexandr Puzakov
11.10.11
✎
10:55
|
Кто еще какие комбинации с числами 2, 3 и 6 предложит? :)
|
|||
58
strh
11.10.11
✎
11:10
|
перебор говорит что 58 вариантов
|
|||
59
Nagaru
11.10.11
✎
11:11
|
Ну да, как-то так и должно быть, только совсем непонятно почему?
|
|||
60
strh
11.10.11
✎
11:11
|
+(58) точнее 57
|
|||
61
Nagaru
11.10.11
✎
11:12
|
кстати, у тебя какие результаты? У меня вот что вышло:
0 линий - 1 вариант 1 линия - 1 вариант 2 линии - 4 варианта 3 линии - 6 вариантов 4 линии - 10 вариантов Вот дальше я уже не считал. |
|||
62
strh
11.10.11
✎
11:14
|
за меня 1с считал, но вообще
0-1 1-1 2-5 3-9 дальше хз |
|||
63
Nagaru
11.10.11
✎
11:15
|
а как ты 1с заставил посчитать?
|
|||
64
deputat2
11.10.11
✎
11:15
|
29
|
|||
65
deputat2
11.10.11
✎
11:16
|
0 линий - 1 вариант
1 линия - 1 вариант 2 линии - 4 варианта 3 линии - 8 вариантов 4 линии - 7 вариантов 5 линии - 6 вариантов 6 линии - 2 вариантов |
|||
66
strh
11.10.11
✎
11:21
|
(63) записываем в тз 3^6-729 вариантов в виде шестизначного числа в троичной системе
потом каждый прокручиваем в 24 положения которые может занимать куб, если такие в тз есть то удаляем, оставшиеся варианты уникальны (65) см (62) |
|||
67
Steel_Wheel
11.10.11
✎
11:26
|
У кубика 6 граней. На каждой грани может не быть диагоналей, быть 1 диагональ (слева-направо, сверху вниз), быть 2-ая диагональ, быть 2-е диагонали. Т.е. для каждой грани возможно 4 варианта...
т.е. вохможна раскраска от 000000 до 444444 |
|||
68
Nagaru
11.10.11
✎
11:29
|
Нарисовать можно только одну диагональ, две на одной грани - нельзя
|
|||
69
strh
11.10.11
✎
11:30
|
(67) из (0) "черную диагональ (одну для грани)"
|
|||
70
Steel_Wheel
11.10.11
✎
11:32
|
(68), (69) Тогда от 000000 до 333333
|
|||
71
Steel_Wheel
11.10.11
✎
11:39
|
Система будет 4-ичной, соответсвенно, в 10-ой системе: 1365 вариантов, если все грани различимы
|
|||
72
Steel_Wheel
11.10.11
✎
11:39
|
1366
|
|||
73
strh
11.10.11
✎
11:39
|
(70) да но при вращении 000001 и 100000 будет одной и той же раскраской
|
|||
74
Steel_Wheel
11.10.11
✎
11:40
|
(73) если грани неразличимы, тогда гемороя будет больше
|
|||
75
strh
11.10.11
✎
11:40
|
и не 4-ной а 3-ой от 000000 до 222222
|
|||
76
Nagaru
11.10.11
✎
11:41
|
Да блин, тут сто процентов надо считать их относительное положение. Количество вариантов не имеет значения.
При относительном расположении первая нарисованная диагональ уже исключается из расчета. Потому что все дальнейшие нарисованы уже относительно неё. И тогда для двух диагоналей становится понятно как получается число 4 Вторая диагональ может быть нарисована либо на соседней грани, либо на противоположной (2 варианта) и она может быть нарисована параллельно первой или перпендикулярно (два вариантв), то есть всего возможных состояний будет 2^2 |
|||
77
Nagaru
11.10.11
✎
11:41
|
Да блин, тут сто процентов надо считать их относительное положение. Количество вариантов не имеет значения.
При относительном расположении первая нарисованная диагональ уже исключается из расчета. Потому что все дальнейшие нарисованы уже относительно неё. И тогда для двух диагоналей становится понятно как получается число 4 Вторая диагональ может быть нарисована либо на соседней грани, либо на противоположной (2 варианта) и она может быть нарисована параллельно первой или перпендикулярно (два вариантв), то есть всего возможных состояний будет 2^2; |
|||
78
Steel_Wheel
11.10.11
✎
11:41
|
(75) Православное программирование отрицательно влияет на мозг, ты прав.
|
|||
79
Steel_Wheel
11.10.11
✎
11:45
|
Значит, надо сдвиги контроллировать: 2 раскраски одинаковы, если "код" одной из них можно сдвинуть вправо/влево таким образом, что получится "код" второй раскраски
|
|||
80
deputat2
11.10.11
✎
11:54
|
0 линий - 1 вариант
1 линия - 1 вариант 2 линии - 4 варианта 3 линии - 8 вариантов 4 линии - 10 вариантов 5 линий - 11 вариантов 6 линий - 10 вариантов итого 45 |
|||
81
strh
11.10.11
✎
12:00
|
ответ в (60) не правильный, нашел ошибку в алгоритме вращения сейчас исправляю
(80) 0-1, 1 -1 2- варианты на соседних гранях //,\\,/\, на противоположных // и /\ итого 5 3-9... |
|||
82
Nagaru
11.10.11
✎
12:02
|
(81) Неправильно, потому что // легко превращается в \\, так что для двух диагоналей вариантов все-таки 4, а не 5
|
|||
83
deputat2
11.10.11
✎
12:02
|
(81) в 2 ошибка в соседних // и \\ с легкостью переворачиваются отсюда итого 4
|
|||
84
deputat2
11.10.11
✎
12:03
|
(81) и в 3 - 8 а не 9
|
|||
85
Ненавижу 1С
гуру
11.10.11
✎
12:03
|
если что - я ответа не знаю ))
|
|||
86
Nagaru
11.10.11
✎
12:04
|
может задача не решается формулами вовсе?
|
|||
87
deputat2
11.10.11
✎
12:04
|
значит 45 - никто пока не опроверг
|
|||
88
strh
11.10.11
✎
12:08
|
(83) нарисуй и попробуй перевернуть из // \\ не получить
|
|||
89
Nagaru
11.10.11
✎
12:24
|
(88) Черт побери, действительно не выходит...
|
|||
90
strh
11.10.11
✎
12:32
|
теперь получилось 44 варианта, надеюсь это мой последний ответ))
а (0) сам знает ответ |
|||
91
strh
11.10.11
✎
12:33
|
точнее так
а (0) сам знает ответ??? |
|||
92
Ненавижу 1С
гуру
11.10.11
✎
12:35
|
(91) смотри (85)
|
|||
93
deputat2
11.10.11
✎
12:48
|
(92) где ж ты откапал такую задачу
|
|||
94
Ненавижу 1С
гуру
11.10.11
✎
12:48
|
(93) на просторах инета
|
|||
95
deputat2
11.10.11
✎
12:49
|
и что там нет ответа?
|
|||
96
Ненавижу 1С
гуру
11.10.11
✎
12:54
|
(95) нет ((
|
|||
97
Alexandr Puzakov
11.10.11
✎
13:55
|
Чуваки, не гоните, комбинаторика завещала решать подобные задачи через факториалы...
|
|||
98
Nagaru
11.10.11
✎
14:07
|
(97) Так ты попробуй тольк с обоснованием
|
|||
99
Axel2009
11.10.11
✎
14:08
|
всех возможных вариантов расположения кубика с диагоналями может быть 4374
|
|||
100
salvator
11.10.11
✎
14:10
|
1 0 0
|
|||
101
Axel2009
11.10.11
✎
14:18
|
даже больше 17496... хехе
|
|||
102
Ненавижу 1С
гуру
11.10.11
✎
14:42
|
у меня 86 выдала программа на C#
|
|||
103
Axel2009
11.10.11
✎
14:45
|
57 различных вариантов
|
|||
104
Axel2009
11.10.11
✎
14:48
|
выкладываем алгоритмы =)))
|
|||
105
Ненавижу 1С
гуру
11.10.11
✎
14:51
|
брешу, нашел баг: 135
|
|||
106
Ненавижу 1С
гуру
11.10.11
✎
14:52
|
косяки где-то
|
|||
107
Axel2009
11.10.11
✎
14:53
|
(105) ищи еще =)
|
|||
108
Axel2009
11.10.11
✎
15:03
|
N Куб Количество
01 000000 1 02 111111 1 03 222222 1 04 001001 3 05 002002 3 06 011011 3 07 022022 3 08 112112 3 09 122122 3 10 000001 6 11 000002 6 12 001002 6 13 011111 6 14 011211 6 15 012012 6 16 022122 6 17 022222 6 18 111112 6 19 122222 6 20 000111 8 21 000222 8 22 111222 8 23 000011 12 24 000022 12 25 001011 12 26 001021 12 27 001111 12 28 001221 12 29 002012 12 30 002022 12 31 002112 12 32 002222 12 33 011012 12 34 011022 12 35 012022 12 36 012112 12 37 012212 12 38 111122 12 39 112122 12 40 112222 12 41 000012 24 42 000112 24 43 000122 24 44 001012 24 45 001022 24 46 001112 24 47 001121 24 48 001122 24 49 001212 24 50 001222 24 51 002122 24 52 011112 24 53 011122 24 54 011212 24 55 011222 24 56 012122 24 57 012222 24 |
|||
109
Ненавижу 1С
гуру
11.10.11
✎
15:17
|
так стоп, кто делал зеркальную симметрию, тот сильно неправ, ее получить с помощью вращения в пространстве нельзя!
|
|||
110
Axel2009
11.10.11
✎
15:19
|
(109) я делал не зеркальную симметрию =)
|
|||
111
Alexandr Puzakov
11.10.11
✎
15:19
|
(108) это только раскраска для одного лишь кубика ;) Да и то, чет кажется варианты пропущены... А еще есть второй, а еще их нужно вращать...
|
|||
112
Ненавижу 1С
гуру
11.10.11
✎
15:20
|
(110) тогда что означает последний столбец?
|
|||
113
Ненавижу 1С
гуру
11.10.11
✎
15:21
|
using System;
using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { delegate int[] Mute(int[] a); class Program { static bool EqualArray(int[] a, int[] b) { for (int i = 0; i < 6; i++) { if (a[i] != b[i]) return false; } return true; } static int[] OperatorA(int[] s) { int[] res = new int[6]; for (int i = 0; i < 6; i++) { if (i <= 3) { res[(i + 1) % 4] = s[i] * (2 * (i % 2) - 1); } else { res[i] = -s[i]; } } return res; } static int[] index = new int[6] {1,4,3,5,0,2}; static int[] OperatorB(int[] s) { int[] res = new int[6]; for (int i = 0; i < 6; i++) { res[index[i]] = s[i]; } return res; } static void Main(string[] args) { int size = 3 * 3 * 3 * 3 * 3 * 3; List<int[]> list = new List<int[]>(); for (int i = 0; i < size; i++) { list.Add(new int[6]); int i0 = i; for (int j = 0; j < 6; j++) { int d=i0 % 3; if (d == 2) { d = -1; } list[i][j] = d; i0 /= 3; } } int res = 0; List<int[]> found = new List<int[]>(); for (int i = 0; i < size; i++) { if (found.Exists(x => EqualArray(x, list[i]))) { continue; } res++; for (int j = 0; j < 6; j++) { Console.Write("{0} ",list[i][j]); } Console.WriteLine(); Mute M1 = (a => a); for (int j = 0; j < 4; j++) { Mute M11 = M1; if (j != 0) { M1 = (a => OperatorA(M11(a))); } Mute M2 = M11; for (int k = 0; k < 3; k++) { Mute M22 = M2; if (k != 0) { M2 = (a => OperatorB(M22(a))); } int[] a0 = M2(list[i]); found.Add(a0); //for (int j0 = 0; j0 < 6; j0++) //{ // Console.Write("{0} ", a0[j0]); //} //Console.WriteLine(); } } //Console.ReadKey(); } Console.WriteLine(res); Console.ReadKey(); } } } |
|||
114
Axel2009
11.10.11
✎
15:22
|
(111) я делал для 17496 вариантов. всех возможных вариантов с расскраской и расположением граней. 57 вариантов и амба
(112) 1 - перед 2 - лево 3 - верх 4 - зад 5 - право 6 - низ |
|||
115
Ненавижу 1С
гуру
11.10.11
✎
15:23
|
(114) ничего не понял и вопрос про последний столбец остался
|
|||
116
Axel2009
11.10.11
✎
15:24
|
(113) извращенец
|
|||
117
Ненавижу 1С
гуру
11.10.11
✎
15:24
|
+(115) ага количество
а как ты получил из одной позиции целых 24, если без зеркальной симметрии их всего 12? |
|||
118
Axel2009
11.10.11
✎
15:27
|
(115) если исходить из того, что мы куб не вращаем когда составляем различные варианты раскраски, и колво вариантов будет 729, то правая колонка означает количество поворотов куба.
ну смотри если исходить из (114) то куб имеет вид 123456, где 2 и 5 - лево и право соответственно, когда меняем 5 и 2, то куб будет выглядеть 453126 |
|||
119
Ненавижу 1С
гуру
11.10.11
✎
15:28
|
(118) ан нет, был неправ
|
|||
120
Axel2009
11.10.11
✎
15:30
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Куб"); Для Сч1 = 0 По 2 Цикл Для Сч2 = 0 По 2 Цикл Для Сч3 = 0 По 2 Цикл Для Сч4 = 0 По 2 Цикл Для Сч5 = 0 По 2 Цикл Для Сч6 = 0 По 2 Цикл НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Куб = "" + Сч1 + Сч2 + Сч3 + Сч4 + Сч5 + Сч6; //Добавить4Поворота(ТЗ, Сч1, Сч2, Сч3, Сч4, Сч5, Сч6); //Добавить4Поворота(ТЗ, Сч4, Сч5, Сч3, Сч1, Сч2, Сч6); //Добавить4Поворота(ТЗ, Сч2, Сч4, Сч3, Сч5, Сч1, Сч6); //Добавить4Поворота(ТЗ, Сч5, Сч1, Сч3, Сч2, Сч4, Сч6); //Добавить4Поворота(ТЗ, Сч1, Сч3, Сч5, Сч4, Сч6, Сч2); //Добавить4Поворота(ТЗ, Сч4, Сч6, Сч5, Сч1, Сч3, Сч2); КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; //ТЗУник.Очистить(); ТЗУник = Новый ТаблицаЗначений; ТЗУник.Колонки.Добавить("Куб"); ТЗУник.Колонки.Добавить("Количество"); Пока ТЗ.Количество() > 0 Цикл ОбработкаПрерыванияПользователя(); ТЗ2 = Новый ТаблицаЗначений; ТЗ2.Колонки.Добавить("Куб"); УникальныйКуб = ТЗ[0].Куб; НоваяСтрока = ТЗУник.Добавить(); НоваяСтрока.Куб = УникальныйКуб; Сч1 = Сред(УникальныйКуб, 1, 1);Сч2 = Сред(УникальныйКуб, 2, 1);Сч3 = Сред(УникальныйКуб, 3, 1); Сч4 = Сред(УникальныйКуб, 4, 1);Сч5 = Сред(УникальныйКуб, 5, 1);Сч6 = Сред(УникальныйКуб, 6, 1); Добавить4Поворота(ТЗ2, Сч1, Сч2, Сч3, Сч4, Сч5, Сч6); Добавить4Поворота(ТЗ2, Сч4, Сч5, Сч3, Сч1, Сч2, Сч6); Добавить4Поворота(ТЗ2, Сч2, Сч4, Сч3, Сч5, Сч1, Сч6); Добавить4Поворота(ТЗ2, Сч5, Сч1, Сч3, Сч2, Сч4, Сч6); Добавить4Поворота(ТЗ2, Сч1, Сч3, Сч5, Сч4, Сч6, Сч2); Добавить4Поворота(ТЗ2, Сч4, Сч6, Сч5, Сч1, Сч3, Сч2); Сч = 0; Для Каждого Строка Из ТЗ2 Цикл МассивТЗ = ТЗ.НайтиСтроки(Новый Структура("Куб", Строка.Куб)); Для Каждого СтрокаТЗ Из МассивТЗ Цикл Сч = Сч + 1; ТЗ.Удалить(СтрокаТЗ); КонецЦикла; КонецЦикла; НоваяСтрока.Количество = Сч; КонецЦикла; ТЗУник.Сортировать("Количество, Куб"); Сообщить(ТЗУник.Количество()); КонецПроцедуры Процедура Добавить4Поворота(ТЗ, Сч1, Сч2, Сч3, Сч4, Сч5, Сч6) НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Куб = "" + Сч1 + Сч2 + Сч3 + Сч4 + Сч5 + Сч6; НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Куб = "" + Сч3 + Сч2 + Сч4 + Сч6 + Сч5 + Сч1; НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Куб = "" + Сч4 + Сч2 + Сч6 + Сч1 + Сч5 + Сч3; НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Куб = "" + Сч6 + Сч2 + Сч1 + Сч3 + Сч5 + Сч4; КонецПроцедуры |
|||
121
Nallama
11.10.11
✎
15:48
|
формула для ответа на первый вопрос - http://storage4.static.itmages.ru/i/11/1011/h_1318333672_8173725_0277d97b4c.png
считать лень |
|||
122
Ненавижу 1С
гуру
11.10.11
✎
15:53
|
||||
123
Nallama
11.10.11
✎
15:53
|
(122) Да, похоже на правду
|
|||
124
Nallama
11.10.11
✎
16:11
|
(0) требую более адекватной формулировки второго вопроса!
|
|||
125
Axel2009
11.10.11
✎
16:18
|
(121) рассчитай формулу для 2х квадратиков и тем же заполнением из (0), т.е. 3 состояния. какое количество комбинаций??
|
|||
126
Ненавижу 1С
гуру
11.10.11
✎
16:55
|
(124) там один вопрос
|
|||
127
Axel2009
11.10.11
✎
17:07
|
(126) вот у нас есть 1 нарисованная сторона куба, и остальные пустые, эту сторону поворачиваем к нам вперед. будет /
если мы поворачиваем куб на 90 градусов по часовой стрелке она станет \ и будет как 2 считаться? |
|||
128
Ненавижу 1С
гуру
11.10.11
✎
17:09
|
(127) если есть поворот что все рисунки совпадают то одинаковые, в данном случае это одно и тоже
|
|||
129
Axel2009
11.10.11
✎
17:16
|
(128) ну как же совпадают то рисунки??
http://itmages.ru/image/preview/301149/7d4b44f6 |
|||
130
Axel2009
11.10.11
✎
17:18
|
||||
131
Nallama
11.10.11
✎
17:42
|
(126) Теперь осознала. Не сразу понятно, что второй абзац - это ограничение к первому вопросу.
В таком случае, 128 - это число вариантов с допущением, что диагональ ЛВ/ПН и ПВ/ЛН - разные варианты раскраски. Окончательный ответ однозначно меньше 117ти (общее число за вычетом "дублей" с одной диагональю). Остальное считать нужно.. |
|||
132
Axel2009
11.10.11
✎
17:52
|
(131) у меня больше. 203 комбинации получается =))))))
(0) спс за задачку! оч. интересно |
|||
133
Nallama
11.10.11
✎
18:00
|
(132) Аргументируй с позиций комбинаторики ;)
|
|||
134
Axel2009
11.10.11
✎
18:07
|
(131) 128 я тоже выходил на это число в одном из вариантах..
но вопрос, если принять, что 1 - перед 2 - лево 3 - верх 4 - зад 5 - право 6 - низ 022022 202202 220220 одинаковые кубы или нет? |
|||
135
Steel_Wheel
11.10.11
✎
18:11
|
(134) Да. Одинаковые.
|
|||
136
Axel2009
11.10.11
✎
18:43
|
(135) ну скрути и поповорачивай. удивишься =) они разные.
|
|||
137
Steel_Wheel
11.10.11
✎
18:47
|
(136) Так у тебя стоит один и тот же знак (2 -- это же вид знака?) на 4-ех гранях, кроме 2-ух противолежащих. Повернуть можно
|
|||
138
Steel_Wheel
11.10.11
✎
18:49
|
т.е. в одном случае не промаркированы
1) перед и зад 2) лево право 3) верх и низ |
|||
139
Axel2009
11.10.11
✎
18:52
|
(137) смотри (130) там один и тот же знак. 1 стоит, но при этом рисунки разные отображаются
|
|||
140
Axel2009
11.10.11
✎
18:53
|
так наверна понятней будет
http://storage8.static.itmages.ru/i/11/1011/h_1318344802_1453967_2b293fecd7.jpeg |
|||
141
SUA
11.10.11
✎
18:57
|
для 2х линий число вариантов разных посчитали хотя бы?
- линии на противоположных гранях, 2 варианта - линии на соседних гранях, пусть одна из них перед нами, другая сверху - +2 или +4 варианта? - у меня получается +4 т.к. ЛВ в ПН никак не переходит |
|||
142
RomanYS
11.10.11
✎
21:45
|
(141) на соседних гранях 3 варианта:
|\|\| |/|/| |/|\| можно повернуть в |\|/| Итого 5 вариантов для 2-х диагоналей. |
|||
143
RomanYS
12.10.11
✎
00:26
|
0 линий - 1 вариант
1 линия - 1 вариант 2 линии - 5 (смотри (143)) 3 линии - 8 (5 при расположении в линию + 3 варианта "на угле") 4 линии - 16 (6 при свободных клетках напротив + 10 при смежных свободных клетках) 5 линий - 10 вариантов 6 линий - ХЗ (меньше 32) вариантов итого 41+ХЗ |
|||
144
RomanYS
12.10.11
✎
00:32
|
+(143) поправка
3 линии - 9 (5 при расположении в линию + 4 варианта "на углу") итого 42+ХЗ |
|||
145
strh
12.10.11
✎
08:37
|
(108)(120) я тоже сначала так посчитал и получил 57 см.(60)
но потом нашел ошибку в этом алгоритме см.(81) дело в том что во время 4 поворотов значения на гранях куба относительно которых совершаются повороты меняютя т.е. НоваяСтрока.Куб = "" + Сч3 + Сч2 + Сч4 + Сч6 + Сч5 + Сч1; на самом деле надо добавлять если сч2=1 тогда сч2=2; если сч2=2 тогда сч2=1; если сч5=1 тогда сч5=2; если сч5=2 тогда сч5=1; например в (108) 000001 и 000002 оказываются одинаковыми т.к. при вращении 1 меняется на 2 у меня после внесения исправлений получилось 44 варианта, но могу и ошибаться |
|||
146
Axel2009
12.10.11
✎
09:29
|
(145) да я тоже так считал, ща бум разбираться =)
у меня получается из 2х линий 6 кубов. по алгоритму получается 60 кубов со всеми возможными линиями |
|||
147
Alexandr Puzakov
12.10.11
✎
09:30
|
Жостко... Может все-таки попробуем решить через факториалы?
|
|||
148
Axel2009
12.10.11
✎
09:30
|
(147) давай решай, показывай варианты
|
|||
149
Alexandr Puzakov
12.10.11
✎
09:33
|
(148) так я уже пробовал, комбинаторику забыл напрочь :) Нужно либо учебник доставать, либо хороший напутствующий пинок.
|
|||
150
Axel2009
12.10.11
✎
09:35
|
(149) (6!*6!*6!*6!)/6! = 4
|
|||
151
Alexandr Puzakov
12.10.11
✎
09:49
|
(150) чиво?
(6!*6!*6!*6!)/6! = 6!*6!*6! |
|||
152
Alexandr Puzakov
12.10.11
✎
09:51
|
6!*6!*6! = 373248000 многовато будет :)
|
|||
153
Alexandr Puzakov
12.10.11
✎
09:52
|
6! * 6! = 518400 маленько правдивее :)
|
|||
154
Axel2009
12.10.11
✎
09:59
|
(153) вариантов всех различных может быть 17496, не более.
|
|||
155
Axel2009
12.10.11
✎
10:22
|
есть кубик 012012 какие варианты его расположения в пространстве? 24кубика
|
|||
156
deputat2
12.10.11
✎
11:10
|
(145) ты близок к моему ответу 45. см. (80)
|
|||
157
deputat2
12.10.11
✎
11:12
|
(145) через отладчик найди нестыковки по моим линиям и там посмотрим где нестыкуемся...
|
|||
158
Alexandr Puzakov
12.10.11
✎
11:35
|
(154) это кто сказал?
|
|||
159
Axel2009
12.10.11
✎
11:48
|
(158) 2^6*24
|
|||
160
Axel2009
12.10.11
✎
11:48
|
(159)+ *3^6*24
|
|||
161
Mickeleangelo
12.10.11
✎
11:59
|
Повороты, наверно, избыточны, но так проще. Всего получилось 65 вариантов:
|
|||
162
Mickeleangelo
12.10.11
✎
12:00
|
Блин, исправьте, плиз, в (161) 1С на 1C.
|
|||
163
strh
12.10.11
✎
12:01
|
(146) дак смысл в том, что ответ 57 неправильный в предложенных тобой вариантах из (108) 10 и 11 варианты одинаковые
|
|||
164
Axel2009
12.10.11
✎
12:35
|
(163) , глянь (155) не могу найти где косяк у меня
|
|||
165
YV
12.10.11
✎
12:43
|
Каждая грань кубика может принимать 3 состояния (диагональ 1/диагональ 2/ пусто). Кубик имеет 6 граней. Следовательно все возможные комбинации кубика составляют 3 в степени 6 или 729.
|
|||
166
Axel2009
12.10.11
✎
12:49
|
(165) а еще 24 оборота. каждая грань может быть впереди их 6, и 4 оборота вокруг этой грани
|
|||
167
Mickeleangelo
12.10.11
✎
13:06
|
Ошибся в строках
// Вращаем ФТ
Надо: // Вращаем ФТ
Итого 53 варианта: -1 -1 -1 -1 -1 -1
|
|||
168
strh
12.10.11
✎
13:27
|
(164) в (108) ты привел все возможные варианты
вариант 000001 и 000002 получаются один из другого одним поворотом у тебя не учтено что при повороте диагонали меняются одна на другую |
|||
169
Axel2009
12.10.11
✎
13:35
|
(168) про 108 уже закрыли разговор, я там пересчитал все, но я не могу понять почему у меня повороты кубов
220220 и 012012 не сходятся |
|||
170
YV
12.10.11
✎
14:14
|
(166) Кубик можно рассматривать под бесконечно огромным количеством углов, но состояние кубика от этого никак не измениться. Так что не нужно учитывать обороты, только раскраску самого кубика.
Кроме того в некоторых случаях раскраска будет полностью совпадать. Т.е. среди этих 729 случаев есть полные дубли (их можно избежать, если условие задачи наделяет каждую сторону собственным уникальным признаком, например номером). |
|||
171
RomanYS
12.10.11
✎
14:18
|
(170) Вопрос не в том, как изменить условие, чтобы твой ответ стал правильным.
А в том как решить задачу при заданных условиях. |
|||
172
Axel2009
12.10.11
✎
14:25
|
(170) если пронумеровать каждую грань, тогда уже будет не 729 случаев. если мы не разделяем какая грань впереди, тогда 729, я не отрицаю.
|
|||
173
YV
12.10.11
✎
14:59
|
(171) Я не меняю условия. В первой задаче нет ни слова про вращение или разные углы обзора.
>>> "Каждую грань белого кубика можно либо оставить белой, либо на ней нарисовать черную диагональ (одну для грани). Сколькими различными способами можно таким образом раскрасить кубик?" |
|||
174
RomanYS
12.10.11
✎
15:00
|
(173) далее в (0)
"Два кубика раскрашены одинаковыми способами, если можно их повернуть в пространстве так, что их рисунки: слева, справа, сверху, снизу, спереди и сзади совпадают." По-моему как раз про вращение. |
|||
175
YV
12.10.11
✎
15:01
|
(172) Если пронумеровать, то будет 729 случаев, если не нумеровать то будет меньше, потому что в некоторых случаях кубик будет выглядеть одинаково, несмотря на разные стороны.
(174) Это уже вторая задача. |
|||
176
RomanYS
12.10.11
✎
15:03
|
(175) это второй абзац единственной задачи
|
|||
177
YV
12.10.11
✎
15:04
|
(176) Да ты прав. Просто второй абзац очень похож на самостоятельную задачу. Я таки невнимательно прочел и ошибся.
|
|||
178
Axel2009
12.10.11
✎
15:07
|
(175) ага. нумеруем каждую сторону от 1 до 6. и в зависимости от состояния впереди той или иной грани у нас есть 24 разных кубов. а у тебя в 729 куб со сторонами 000000 будет только 1.
|
|||
179
kittystark
13.10.11
✎
04:19
|
у меня 51 получилось
берем развертку куба U LFR D B //маской вида F B R L U D - представим заполнение сторон куба (Front, Back, Right, Left, Up, Down) //на соответствующей позиции цифры означают // 0 - нет диагонали // 1 - диагональ вида "слеш" (/) // 2 - диагональ вида "бэкслеш" (\) function alert(x){ WScript.echo(x) } function next(s){ //следующее число в троичной системе счисления var arr = s.split('') var pos = s.length-1 arr[pos] = parseInt(arr[pos]) + 1 while(arr[pos]==3 && pos>0){ arr[pos--] = 0 arr[pos] = parseInt(arr[pos]) + 1 } return arr.join('') } function dot(ch){ //меняем диагональ, если ее нет, оставляем ноль var n = parseInt(ch) if(n!=0){ return n==1?2:1 }else{ return 0 } } function turn_the_cube( cube, axis ){ var arr = cube.split('') //F B R L U D //0 1 2 3 4 5 switch(axis){ case 'x': // F B R L U D -> F' B' D' U' R' L' return '' + dot(arr[0]) + dot(arr[1]) + dot(arr[5]) + dot(arr[4]) + dot(arr[2]) + dot(arr[3]) case 'y': // F B R L U D -> U D R' L' B F return '' + arr[4] + arr[5] + dot(arr[2]) + dot(arr[3]) + arr[1] + arr[0] case 'z': // F B R L U D -> L R F B U' D' return '' + arr[3] + arr[2] + arr[0] + arr[1] + dot(arr[4]) + dot(arr[5]) } } //оси вокруг которых будем последовательно вращать куб //на 90 градусов против часовой стрелки //(после каждого поворота - анализ совпадений) //для получения 24 положений в пространстве //вращать будем так: на 1-ой оси - 4 раза, на 2-ой - 1 раз, // на следующей - 4, на следующей - 1, // на следующей - 4, на следующей - 1 ... axes = 'zyxzyzxzyxz' axes = axes.split('') var unique = [] for(cube='000000'; cube!='300000'; cube=next(cube)){ turned_cube = cube turn_once = false found = false for(i in axes){ for(j=0; j<(turn_once?1:4); j++){ turned_cube = turn_the_cube( turned_cube, axes[i] ) if(unique[turned_cube] == turned_cube){ found = true break } } if(found) break turn_once = !turn_once } if(!found) unique[cube] = cube } n = 0 for(i in unique){ n++ alert('unique '+ n +':\t'+unique[i]) } alert('всего ' + n + ' вариантов') |
|||
180
Alexandr Puzakov
13.10.11
✎
07:03
|
Мля, пора уже вводить голосовалку:
1. х < 50 2. 50 <= х < 150 3. 150 <= х <= 500 4. х > 500 :) |
|||
181
Alexandr Puzakov
13.10.11
✎
07:05
|
И судя по ответам СиПлюсПлюсников 1Ске пока ничего не грозит ;)
|
|||
182
Shaman100M
19.10.11
✎
13:41
|
у меня тоже 51.
000000 000001 000011 000012 000101 000102 000111 000112 000122 000202 000211 000212 000222 001111 001112 001122 001212 001222 002222 010101 010102 010111 010112 010121 010201 010210 010211 010212 010221 010222 011102 011111 011112 011122 011202 011211 011212 011220 011221 011222 012211 012212 012222 111111 111112 111211 111212 111222 112211 121212 121221 |
|||
183
Shaman100M
19.10.11
✎
13:46
|
Перем Мп[24];
Функция НайтиМинЗначение(ВхЗнач) МинЗнач = "222222"; Для М1 = 1 По 24 Цикл НовЗнач = ""; Для М2 = 1 По 6 Цикл НомерСимвола = Число(Сред(Мп[М1],2*М2 ,1)); ЗнакСимвола = Сред(Мп[М1],2*М2-1 ,1); ТекСимвол = Сред(ВхЗнач,НомерСимвола,1); ТекСимвол = ?((ЗнакСимвола = "-") И (ТекСимвол <> "0"),Строка(3 - Число(ТекСимвол)),ТекСимвол); НовЗнач = НовЗнач + ТекСимвол; КонецЦикла; МинЗнач = Мин(МинЗнач,НовЗнач); КонецЦикла; Возврат МинЗнач; КонецФункции Процедура Сформировать() СписокУникальныхКомбинаций = ЗначениеИзСтрокиВнутр("{""VL"",{}}"); Для М1 = 0 По 2 Цикл Для М2 = 0 По 2 Цикл Для М3 = 0 По 2 Цикл Для М4 = 0 По 2 Цикл Для М5 = 0 По 2 Цикл Для М6 = 0 По 2 Цикл ТекКомбинация = "" + М1 + М2 + М3 + М4 + М5 + М6; МинКомбинация = НайтиМинЗначение(ТекКомбинация); Если СписокУникальныхКомбинаций.НайтиЗначение(МинКомбинация) = 0 Тогда СписокУникальныхКомбинаций.ДобавитьЗначение(МинКомбинация); Сообщить(МинКомбинация); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; Сообщить("Всего " + СписокУникальныхКомбинаций.РазмерСписка()); КонецПроцедуры //ФТЛПВН // 123456 Мп[1] = " 1 2 3 4 5 6";// Ф . крутим "фасад" по часовой. сам фасад меняется диагональ (на "чет") знак "-" Мп[2] = "-1-2 6 5 3 4";// Ф1 Мп[3] = " 1 2 4 3 6 5";// Ф2 Мп[4] = "-1-2 5 6 4 3";// Ф3 // берем другую грань и также вертим Мп[5] = " 3 4 2 1-5-6";// Л повернули на фасад левую. (Верх против часовой относительно Мп 1. знак "-" - диагональ поменялась) Мп[6] = "-3-4-6-5 2 1"; Мп[7] = " 3 4 1 2-6-5"; Мп[8] = "-3-4-5-6 1 2"; Мп[9] = " 2 1 4 3 5 6";// Т // повернули на фасад тыл. (В2) Мп[10] = "-2-1 6 5 4 3"; Мп[11] = " 2 1 3 4 6 5"; Мп[12] = "-2-1 5 6 3 4"; Мп[13] = " 4 3 1 2-5-6";// П // повернули на фасад правую (В почасовой) Мп[14] = "-4-3-6-5 1 2"; Мп[15] = " 4 3 2 1-6-5"; Мп[16] = "-4-3-5-6 2 1"; Мп[17] = "-5-6-3-4-2-1";// В повернули на фасад верх (Л по часовой) все диагонали инвертировались Мп[18] = " 5 6-1-2-3-4"; Мп[19] = "-5-6-4-3-1-2"; Мп[20] = " 5 6-2-1-4-3"; Мп[21] = "-6-5-3-4-1-2";// Н повернули на фасад низ (л против) Мп[22] = " 6 5-2-1-3-4"; Мп[23] = "-6-5-4-3-2-1"; Мп[24] = " 6 5-1-2-4-3"; |
|||
184
Alexandr Puzakov
19.10.11
✎
14:01
|
(182) фигня...
Смотри как возрастают различные вариации все стороны чистые 000000 одна сторона закрашена первым вариантом 000001 000010 000100 001000 010000 100000 Две стороны первым вариантом 000011 000101 001001 010001 100001 100010 100100 101000 110000 000110 001010 010010 100010 001100 010100 100100 011000 101000 Чувствуешь, что у тебя и всяких сиплюсплюсников лажа? |
|||
185
Alexandr Puzakov
19.10.11
✎
14:06
|
(183) 24 это откуда такое?
|
|||
186
Alexandr Puzakov
19.10.11
✎
14:09
|
(185) а, все, сообразил.
|
|||
187
Shaman100M
19.10.11
✎
14:09
|
(185) рисуем на сторонах куба Ф (фронт), т (тыл), л, п, н, в.
разворачиваем к себе куб стороной ф. крутим по оси фронт-тыл 4 раза. 4 положения. и так на каждой стороне - 24 положения |
|||
188
Alexandr Puzakov
19.10.11
✎
14:12
|
(187) я это уже понял. Осталось только дождаться того, кто правильный алгоритм раскраски напишет :)
|
|||
189
Shaman100M
19.10.11
✎
14:13
|
(184) "одна сторона закрашена первым или втрым вариантом" - все приводится к 000001 поворотами
|
|||
190
Alexandr Puzakov
19.10.11
✎
14:19
|
(189) с чего это? Отдельная сторона это отдельная сторона, а их 6.
|
|||
191
Alexandr Puzakov
19.10.11
✎
14:25
|
Ну или по другому, стороны называются A, B, C, D, E и F. Закрашивая по одной из них одним вариантом, мы может сделать все те же вращения. Итого, для одной только закрашеной стороны 6*24 вариантов, а вы все свели к одному.
|
|||
192
Shaman100M
19.10.11
✎
14:30
|
(191) нужны все варианты или нужны условия задачи?
|
|||
193
Alexandr Puzakov
19.10.11
✎
14:34
|
(192) нужны все варианты. В условии задачи ничего не сказано про сферический кубик в вакууме, у которого при вращении одна сторона становится другой и все стороны являются одной стороной.
|
|||
194
Alexandr Puzakov
19.10.11
✎
14:36
|
(192) ну или если конкретно: какой смысл имеет вращение кубика, если у него стороны никак не различаются?
|
|||
195
Shaman100M
19.10.11
✎
14:38
|
(194) чтобы убедиться в этом.
|
|||
196
Shaman100M
19.10.11
✎
14:41
|
Все варианты?
000000 000001 000002 000010 000020 000100 000200 001000 002000 010000 020000 100000 200000 000011 000022 001100 002200 110000 220000 000012 000021 001200 002100 120000 210000 000101 000110 001001 001010 010002 010020 020200 022000 100002 100020 200200 202000 000102 000120 000201 000210 001002 001020 002001 002010 010001 010010 010200 012000 020002 020020 020100 021000 100001 100010 100200 102000 200002 200020 200100 201000 000111 001011 001101 001110 010022 022200 100022 110002 110020 202200 220200 222000 000112 000121 001012 001021 001201 001210 002101 002110 010012 010021 021200 022100 100012 100021 120002 120020 120200 122000 201200 202100 210002 210020 210200 212000 000122 001022 002201 002210 010011 021100 100011 110200 112000 201100 220002 220020 000202 000220 002002 002020 010100 011000 020001 020010 100100 101000 200001 200010 000211 001102 001120 002011 012200 020022 102200 110001 110010 200022 220100 221000 000212 000221 001202 001220 002012 002021 002102 002120 011200 012100 020012 020021 101200 102100 120001 120010 120100 121000 200012 200021 210001 210010 210100 211000 000222 002022 002202 002220 011100 020011 101100 110100 111000 200011 220001 220010 001111 110022 222200 001112 001121 001211 002111 110012 110021 120022 122200 210022 212200 221200 222100 001122 002211 110011 112200 220022 221100 001212 001221 002112 002121 120012 120021 121200 122100 210012 210021 211200 212100 001222 002122 002212 002221 111200 112100 120011 121100 210011 211100 220012 220021 002222 111100 220011 010101 010120 010202 011002 011010 012020 020110 020201 020220 021001 022002 022010 100102 100110 100220 101001 101020 102002 200101 200202 200210 201010 202001 202020 010102 010110 010220 011001 011020 012002 020101 020202 020210 021010 022001 022020 100101 100120 100202 101002 101010 102020 200110 200201 200220 201001 202002 202010 010111 010122 011011 011022 021101 021110 022201 022210 100111 100122 101011 101022 110202 110220 112002 112020 201101 201110 202201 202210 220202 220220 222002 222020 010112 011021 021210 022101 100121 101012 120202 122020 201201 202110 210220 212002 010121 011012 021201 022110 100112 101021 120220 122002 201210 202101 210202 212020 010201 012010 020120 021002 100210 102001 200102 201020 010210 012001 020102 021020 100201 102010 200120 201002 010211 012011 012201 012210 020122 021022 021102 021120 100211 102011 102201 102210 110201 110210 112001 112010 200122 201022 201102 201120 220102 220120 221002 221020 010212 011210 012021 012101 020112 021021 021220 022102 100221 101201 102012 102110 120102 120201 121020 122010 200121 201012 201202 202120 210120 210210 211002 212001 010221 011201 012012 012110 020121 021012 021202 022120 100212 101210 102021 102101 120120 120210 121002 122001 200112 201021 201220 202102 210102 210201 211020 212010 010222 011101 011110 012022 020111 021011 022202 022220 100222 101101 101110 102022 110102 110120 111002 111020 200111 201011 202202 202220 220201 220210 222001 222010 011102 011120 012202 012220 020211 020222 022011 022022 101102 101120 102202 102220 110101 110110 111001 111010 200211 200222 202011 202022 220101 220110 221001 221010 011111 021111 101111 110122 110222 111022 112022 201111 222201 222202 222210 222220 011112 011121 021211 022111 101112 101121 110112 110121 111012 111021 120222 122022 122202 122220 201211 202111 210222 212022 212202 212220 221201 221210 222101 222110 011122 022211 101122 110111 111011 112202 112220 202211 220222 221101 221110 222022 011202 012120 020221 022012 101220 102102 120110 121001 200212 202021 210101 211010 011211 012111 021112 021121 101211 102111 110212 110221 112012 112021 120122 121022 122201 122210 201112 201121 210122 211022 212201 212210 221202 221220 222102 222120 011212 012121 021221 022112 101221 102112 120112 120221 121021 121201 121220 122012 122102 122110 201212 202121 210121 210212 211012 211202 211210 212021 212101 212120 011220 012102 020212 022021 101202 102120 120101 121010 200221 202012 210110 211001 011221 012112 021212 022121 101212 102121 120121 120212 121012 121202 121210 122021 122101 122120 201221 202112 210112 210221 211021 211201 211220 212012 212102 212110 011222 012122 022212 022221 101222 102122 111202 111220 112102 112120 120111 121011 121101 121110 202212 202221 210111 211011 211101 211110 220212 220221 222012 222021 012211 021122 102211 110211 112011 112201 112210 201122 220122 221022 221102 221120 012212 012221 021222 022122 102212 102221 111201 111210 112101 112110 120211 121102 121120 122011 201222 202122 210211 211102 211120 212011 220112 220121 221012 221021 012222 022222 102222 111101 111102 111110 111120 202222 220111 220211 221011 222011 111111 111122 112222 221111 222211 222222 111112 111121 122222 212222 221211 222111 111211 112111 112212 112221 121122 122211 211122 212211 221112 221121 221222 222122 111212 111221 112112 112121 121112 121121 121211 121222 122111 122122 122212 122221 211112 211121 211211 211222 212111 212122 212212 212221 221212 221221 222112 222121 111222 112122 121111 211111 222212 222221 112211 221122 121212 122121 211221 212112 121221 122112 211212 212121 |
|||
197
Shaman100M
19.10.11
✎
14:44
|
+ (196) расшифровка одной раскраски, 6 цифр, по порядку: фасад - тыл - левая - правая - верх - низ. 0 - белая 1 - "слэш", 2 - "бэкслэш"
|
|||
198
Alexandr Puzakov
19.10.11
✎
14:57
|
(196) не, их будет намного больше
|
|||
199
Alexandr Puzakov
19.10.11
✎
15:01
|
(196) фигани все в один упорядоченный ряд и будет видно.
|
|||
200
xenos
19.10.11
✎
15:10
|
1 - целиком черный
2 - целиком белый 3 - с одной белой 4 - одной черной 5,6 - С двумя белыми 2шт() 7,8 - С двумя черными 2шт() 9,10 - Три белых три черных, подбираем возможные только для одного цвета другие будут обратные. 2шт или привязанны к одной вершине или в форме скобы Итого 10 |
|||
201
Shaman100M
19.10.11
✎
15:40
|
(198) так, давай тогда пример, которого в (196) нет
|
|||
202
Alexandr Puzakov
19.10.11
✎
17:24
|
(201) упорядочь, очень сложно искать.
|
|||
203
xenos
19.10.11
✎
17:47
|
1 - целиком черный
2 - целиком белый 3 - с одной белой 4 - одной черной 5,6 - С двумя белыми 2шт() 7,8 - С двумя черными 2шт() 9,10 - Три белых три черных, подбираем возможные только для одного цвета другие будут обратные. 2шт или привязанны к одной вершине или в форме скобы Итого 10 |
|||
204
Shaman100M
19.10.11
✎
18:05
|
(202) Они уже упорядочены, по-строчно по тождественной раскраске. Можно, конечно, упорядочить в 1 столбец. Получится 729 значений, все по порядку. с 000000 по 222222
|
|||
205
Alexandr Puzakov
19.10.11
✎
18:44
|
(204) не надо тождественного упорядочивания, запихни все в одну колонку ТЗ и отсортируй по возрастанию, вот тогда все будет видно.
|
|||
206
kittystark
20.10.11
✎
10:20
|
(202),(205) вот точно набросаю "визуальный дебаггер" с диагонализируемым кубиком, чтоб по шагам все было видно, какая раскраска как вращается, после вращения каким соответствует, ну и чтоб количество уникальных вариантов (С УЧЕТОМ последнего предложения постановки задачи) можно было "ручками" посчитать
только домой с работы прийду, как доберусь до флэша... |
|||
207
Alexandr Puzakov
21.10.11
✎
07:23
|
(206) а смысл? Даже если вариантов раскраски всего 720 вариантов, то для одного кубика возможных комбинаций раскраска-поворот будет уже 720*24... Не трудновато ли будет все вручную посчитать? :)
|
|||
208
Axel2009
21.10.11
✎
09:57
|
(207) ну уже заколебал с 720, чес слово.
сколько вариантов покраски 2х квадратов тем же способом исходя из твоего алгоритма? |
|||
209
kittystark
21.10.11
✎
10:12
|
(207) предположим за сутки будет обработан один вариант раскраски, итого 729 суток, делим на 365, почти 2 года (за минусом суток)... т.е. время "конечно" и ограничено сверху
ха, делов-то, 2 года :) на самом деле для прохода всех 729 вариантов раскраски таки придется 729 раз нажать кнопку "next", автоматика сама выдаст для каждого шага найдены ли совпадения или нет, ну и поиграться можно будет - самому повращать, попроверять сейчас думаю над алгоритмом поиска минимального количества вращений от одной конфигурации куба к идентичной но повернутой, т.к. по идее цепочка вращений не должна превышать 4-х движений, это вместо максимальных 24-х перебором |
|||
210
Alexandr Puzakov
21.10.11
✎
10:51
|
(209) я и не утверждал, что именно 720...
|
|||
211
Axel2009
21.10.11
✎
10:56
|
(210) а в (12) кто писал? и продолжил про 720 в (207) тоже не ты? =)
|
|||
212
Alexandr Puzakov
21.10.11
✎
13:38
|
(211) в (207) разве утверждение?
|
|||
213
NeeD
21.10.11
✎
13:39
|
У меня получилось 84 варианта.
Заполняем все возможные комбинации, затем перебираем их и удаляем комбинации полученные вращением. Учитываем изменения рисунка! После этого в таблице остаются только уникальные комбинации. Процедура ЗаполнитьВсеКомбинации() Для Грань1 = 0 По 2 Цикл Для Грань2 = 0 По 2 Цикл Для Грань3 = 0 По 2 Цикл Для Грань4 = 0 По 2 Цикл Для Грань5 = 0 По 2 Цикл Для Грань6 = 0 По 2 Цикл Стр = Кубик.Добавить(); Стр.Грань1 = Грань1; Стр.Грань2 = Грань2; Стр.Грань3 = Грань3; Стр.Грань4 = Грань4; Стр.Грань5 = Грань5; Стр.Грань6 = Грань6; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецПроцедуры Функция ПовернутьКубик(Грани, А, Б) ГраниПоворота = Новый Структура("Грань1, Грань2, Грань3, Грань4, Грань5, Грань6"); ГраниПоворота.Грань1 = Грани.Грань1; ГраниПоворота.Грань2 = Грани.Грань2; ГраниПоворота.Грань3 = Грани.Грань3; ГраниПоворота.Грань4 = Грани.Грань4; ГраниПоворота.Грань5 = Грани.Грань5; ГраниПоворота.Грань6 = Грани.Грань6; Если А <> 0 Тогда Если А = 1 ИЛИ А = 3 Тогда ГраниПоворота.Грань5 = ?(ГраниПоворота.Грань5 = 0, 0, ?(ГраниПоворота.Грань5 = 1, 2, 1)); ГраниПоворота.Грань6 = ?(ГраниПоворота.Грань6 = 0, 0, ?(ГраниПоворота.Грань6 = 1, 2, 1)); КонецЕсли; Для Цкл = 1 По А Цикл Пром = ГраниПоворота.Грань1; ГраниПоворота.Грань1 = ГраниПоворота.Грань2; ГраниПоворота.Грань2 = ГраниПоворота.Грань3; ГраниПоворота.Грань3 = ГраниПоворота.Грань4; ГраниПоворота.Грань4 = Пром; КонецЦикла; КонецЕсли; Если Б <> 0 Тогда Если Б = 1 ИЛИ Б = 3 Тогда ГраниПоворота.Грань1 = ?(ГраниПоворота.Грань1 = 0, 0, ?(ГраниПоворота.Грань1 = 1, 2, 1)); ГраниПоворота.Грань3 = ?(ГраниПоворота.Грань3 = 0, 0, ?(ГраниПоворота.Грань3 = 1, 2, 1)); КонецЕсли; Для Цкл = 1 По Б Цикл Пром = ГраниПоворота.Грань2; ГраниПоворота.Грань2 = ГраниПоворота.Грань6; ГраниПоворота.Грань6 = ГраниПоворота.Грань4; ГраниПоворота.Грань4 = ГраниПоворота.Грань5; ГраниПоворота.Грань5 = Пром; КонецЦикла; КонецЕсли; Возврат ГраниПоворота; КонецФункции Процедура УдалитьДубли() Грани = Новый Структура("Грань1, Грань2, Грань3, Грань4, Грань5, Грань6"); Для каждого Комбинация Из Кубик Цикл Грани.Грань1 = Комбинация.Грань1; Грани.Грань2 = Комбинация.Грань2; Грани.Грань3 = Комбинация.Грань3; Грани.Грань4 = Комбинация.Грань4; Грани.Грань5 = Комбинация.Грань5; Грани.Грань6 = Комбинация.Грань6; Для А = 0 По 3 Цикл Для Б = 0 По 3 Цикл ГраниПоворота = ПовернутьКубик(Грани, А, Б); Дубли = Кубик.НайтиСтроки(ГраниПоворота); Для каждого Стр Из Дубли Цикл Если Стр <> Комбинация Тогда Кубик.Удалить(Стр); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецПроцедуры Процедура КнопкаВыполнитьНажатие(Кнопка) ЗаполнитьВсеКомбинации(); УдалитьДубли(); КонецПроцедуры Если увидите ошибку - дайте знать. |
|||
214
NeeD
21.10.11
✎
13:43
|
Увидел визуально 2 одинаковые комбинации :-) Надо алгоритм подправить.
|
|||
215
NeeD
21.10.11
✎
13:50
|
Не, всё нормально... Я просто в форме колонку "Грань3" не вывел, вот визуально и появились одинаковые строки :-). Одним словом, подтверждаю 84.
|
|||
216
NeeD
21.10.11
✎
14:08
|
И всё таки ошибся... Не довернул кубик по 3-му измерению :-) Исправленный вариант:
Процедура ЗаполнитьВсеКомбинации() Для Грань1 = 0 По 2 Цикл Для Грань2 = 0 По 2 Цикл Для Грань3 = 0 По 2 Цикл Для Грань4 = 0 По 2 Цикл Для Грань5 = 0 По 2 Цикл Для Грань6 = 0 По 2 Цикл Стр = Кубик.Добавить(); Стр.Грань1 = Грань1; Стр.Грань2 = Грань2; Стр.Грань3 = Грань3; Стр.Грань4 = Грань4; Стр.Грань5 = Грань5; Стр.Грань6 = Грань6; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецПроцедуры Функция ПовернутьКубик(Грани, А, Б, В) ГраниПоворота = Новый Структура("Грань1, Грань2, Грань3, Грань4, Грань5, Грань6"); ГраниПоворота.Грань1 = Грани.Грань1; ГраниПоворота.Грань2 = Грани.Грань2; ГраниПоворота.Грань3 = Грани.Грань3; ГраниПоворота.Грань4 = Грани.Грань4; ГраниПоворота.Грань5 = Грани.Грань5; ГраниПоворота.Грань6 = Грани.Грань6; Если А <> 0 Тогда Если А = 1 ИЛИ А = 3 Тогда ГраниПоворота.Грань5 = ?(ГраниПоворота.Грань5 = 0, 0, ?(ГраниПоворота.Грань5 = 1, 2, 1)); ГраниПоворота.Грань6 = ?(ГраниПоворота.Грань6 = 0, 0, ?(ГраниПоворота.Грань6 = 1, 2, 1)); КонецЕсли; Для Цкл = 1 По А Цикл Пром = ГраниПоворота.Грань1; ГраниПоворота.Грань1 = ГраниПоворота.Грань2; ГраниПоворота.Грань2 = ГраниПоворота.Грань3; ГраниПоворота.Грань3 = ГраниПоворота.Грань4; ГраниПоворота.Грань4 = Пром; КонецЦикла; КонецЕсли; Если Б <> 0 Тогда Если Б = 1 ИЛИ Б = 3 Тогда ГраниПоворота.Грань1 = ?(ГраниПоворота.Грань1 = 0, 0, ?(ГраниПоворота.Грань1 = 1, 2, 1)); ГраниПоворота.Грань3 = ?(ГраниПоворота.Грань3 = 0, 0, ?(ГраниПоворота.Грань3 = 1, 2, 1)); КонецЕсли; Для Цкл = 1 По Б Цикл Пром = ГраниПоворота.Грань2; ГраниПоворота.Грань2 = ГраниПоворота.Грань6; ГраниПоворота.Грань6 = ГраниПоворота.Грань4; ГраниПоворота.Грань4 = ГраниПоворота.Грань5; ГраниПоворота.Грань5 = Пром; КонецЦикла; КонецЕсли; Если В <> 0 Тогда Если В = 1 ИЛИ В = 3 Тогда ГраниПоворота.Грань2 = ?(ГраниПоворота.Грань2 = 0, 0, ?(ГраниПоворота.Грань2 = 1, 2, 1)); ГраниПоворота.Грань4 = ?(ГраниПоворота.Грань4 = 0, 0, ?(ГраниПоворота.Грань4 = 1, 2, 1)); КонецЕсли; Для Цкл = 1 По Б Цикл Пром = ГраниПоворота.Грань1; ГраниПоворота.Грань1 = ГраниПоворота.Грань6; ГраниПоворота.Грань6 = ГраниПоворота.Грань3; ГраниПоворота.Грань3 = ГраниПоворота.Грань5; ГраниПоворота.Грань5 = Пром; КонецЦикла; КонецЕсли; Возврат ГраниПоворота; КонецФункции Процедура УдалитьДубли() Грани = Новый Структура("Грань1, Грань2, Грань3, Грань4, Грань5, Грань6"); Для каждого Комбинация Из Кубик Цикл Грани.Грань1 = Комбинация.Грань1; Грани.Грань2 = Комбинация.Грань2; Грани.Грань3 = Комбинация.Грань3; Грани.Грань4 = Комбинация.Грань4; Грани.Грань5 = Комбинация.Грань5; Грани.Грань6 = Комбинация.Грань6; Для А = 0 По 3 Цикл Для Б = 0 По 3 Цикл Для В = 0 По 3 Цикл ГраниПоворота = ПовернутьКубик(Грани, А, Б, В); Дубли = Кубик.НайтиСтроки(ГраниПоворота); Для каждого Стр Из Дубли Цикл Если Стр <> Комбинация Тогда Кубик.Удалить(Стр); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецПроцедуры Процедура КнопкаВыполнитьНажатие(Кнопка) ЗаполнитьВсеКомбинации(); УдалитьДубли(); КонецПроцедуры Итого получилось 57. |
|||
217
Axel2009
21.10.11
✎
14:10
|
плохо поворачивал. это без поворотов если то 57 получится
|
|||
218
NeeD
21.10.11
✎
14:14
|
Вот ведь... Опять очепятка: Если В <> 0 Тогда
Если В = 1 ИЛИ В = 3 Тогда ГраниПоворота.Грань2 = ?(ГраниПоворота.Грань2 = 0, 0, ?(ГраниПоворота.Грань2 = 1, 2, 1)); ГраниПоворота.Грань4 = ?(ГраниПоворота.Грань4 = 0, 0, ?(ГраниПоворота.Грань4 = 1, 2, 1)); КонецЕсли; Для Цкл = 1 По Б Цикл Пром = ГраниПоворота.Грань1; ГраниПоворота.Грань1 = ГраниПоворота.Грань6; ГраниПоворота.Грань6 = ГраниПоворота.Грань3; ГраниПоворота.Грань3 = ГраниПоворота.Грань5; ГраниПоворота.Грань5 = Пром; КонецЦикла; КонецЕсли; нужно Для Цкл = 1 По В Цикл. Таким образом: Процедура ЗаполнитьВсеКомбинации() Для Грань1 = 0 По 2 Цикл Для Грань2 = 0 По 2 Цикл Для Грань3 = 0 По 2 Цикл Для Грань4 = 0 По 2 Цикл Для Грань5 = 0 По 2 Цикл Для Грань6 = 0 По 2 Цикл Стр = Кубик.Добавить(); Стр.Грань1 = Грань1; Стр.Грань2 = Грань2; Стр.Грань3 = Грань3; Стр.Грань4 = Грань4; Стр.Грань5 = Грань5; Стр.Грань6 = Грань6; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецПроцедуры Функция ПовернутьКубик(Грани, А, Б, В) ГраниПоворота = Новый Структура("Грань1, Грань2, Грань3, Грань4, Грань5, Грань6"); ГраниПоворота.Грань1 = Грани.Грань1; ГраниПоворота.Грань2 = Грани.Грань2; ГраниПоворота.Грань3 = Грани.Грань3; ГраниПоворота.Грань4 = Грани.Грань4; ГраниПоворота.Грань5 = Грани.Грань5; ГраниПоворота.Грань6 = Грани.Грань6; Если А <> 0 Тогда Если А = 1 ИЛИ А = 3 Тогда ГраниПоворота.Грань5 = ?(ГраниПоворота.Грань5 = 0, 0, ?(ГраниПоворота.Грань5 = 1, 2, 1)); ГраниПоворота.Грань6 = ?(ГраниПоворота.Грань6 = 0, 0, ?(ГраниПоворота.Грань6 = 1, 2, 1)); КонецЕсли; Для Цкл = 1 По А Цикл Пром = ГраниПоворота.Грань1; ГраниПоворота.Грань1 = ГраниПоворота.Грань2; ГраниПоворота.Грань2 = ГраниПоворота.Грань3; ГраниПоворота.Грань3 = ГраниПоворота.Грань4; ГраниПоворота.Грань4 = Пром; КонецЦикла; КонецЕсли; Если Б <> 0 Тогда Если Б = 1 ИЛИ Б = 3 Тогда ГраниПоворота.Грань1 = ?(ГраниПоворота.Грань1 = 0, 0, ?(ГраниПоворота.Грань1 = 1, 2, 1)); ГраниПоворота.Грань3 = ?(ГраниПоворота.Грань3 = 0, 0, ?(ГраниПоворота.Грань3 = 1, 2, 1)); КонецЕсли; Для Цкл = 1 По Б Цикл Пром = ГраниПоворота.Грань2; ГраниПоворота.Грань2 = ГраниПоворота.Грань6; ГраниПоворота.Грань6 = ГраниПоворота.Грань4; ГраниПоворота.Грань4 = ГраниПоворота.Грань5; ГраниПоворота.Грань5 = Пром; КонецЦикла; КонецЕсли; Если В <> 0 Тогда Если В = 1 ИЛИ В = 3 Тогда ГраниПоворота.Грань2 = ?(ГраниПоворота.Грань2 = 0, 0, ?(ГраниПоворота.Грань2 = 1, 2, 1)); ГраниПоворота.Грань4 = ?(ГраниПоворота.Грань4 = 0, 0, ?(ГраниПоворота.Грань4 = 1, 2, 1)); КонецЕсли; Для Цкл = 1 По В Цикл Пром = ГраниПоворота.Грань1; ГраниПоворота.Грань1 = ГраниПоворота.Грань6; ГраниПоворота.Грань6 = ГраниПоворота.Грань3; ГраниПоворота.Грань3 = ГраниПоворота.Грань5; ГраниПоворота.Грань5 = Пром; КонецЦикла; КонецЕсли; Возврат ГраниПоворота; КонецФункции Процедура УдалитьДубли() Грани = Новый Структура("Грань1, Грань2, Грань3, Грань4, Грань5, Грань6"); Для каждого Комбинация Из Кубик Цикл Грани.Грань1 = Комбинация.Грань1; Грани.Грань2 = Комбинация.Грань2; Грани.Грань3 = Комбинация.Грань3; Грани.Грань4 = Комбинация.Грань4; Грани.Грань5 = Комбинация.Грань5; Грани.Грань6 = Комбинация.Грань6; Для А = 0 По 3 Цикл Для Б = 0 По 3 Цикл Для В = 0 По 3 Цикл ГраниПоворота = ПовернутьКубик(Грани, А, Б, В); Дубли = Кубик.НайтиСтроки(ГраниПоворота); Для каждого Стр Из Дубли Цикл Если Стр <> Комбинация Тогда Кубик.Удалить(Стр); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецПроцедуры Процедура КнопкаВыполнитьНажатие(Кнопка) ЗаполнитьВсеКомбинации(); УдалитьДубли(); КонецПроцедуры Получается 50. А кто ни будь ответ знает? |
|||
219
Mickeleangelo
21.10.11
✎
16:35
|
Продолжаю настаивать на 53 вариантах.
Обозначения граней: [Ф]ронт, [Т]ыл, [Л]ево, [П]раво, [В]ерх, [Н]из Обозначения рисунков: -1, 1 — диагонали, 0 — пусто. В таком случае вращение кубика вокруг оси, проходящей через грань записывается просто: Новый рисунок = 0 - Старый рисунок.
Результат:
|
|||
220
RomanYS
21.10.11
✎
17:22
|
У меня 55 получается, перебирал вручную
0: 1 1: 1 2: 5 3: 10 4: 20 5: 10 6: 8 |
|||
221
NeeD
21.10.11
✎
17:44
|
(219) А изменение рисунка при повороте на 90 и 270 учитывали?
|
|||
222
NeeD
21.10.11
✎
17:45
|
Задача сводится к правильному вращению кубика.
|
|||
223
Mickeleangelo
21.10.11
✎
17:54
|
(221) Конечно. Вот пример поворота вокруг оси Верх-низ по часовой стрелке:
ВсеПовороты.Добавить(Раскраска);
|
|||
224
Mickeleangelo
21.10.11
✎
18:03
|
(222)
Для каждого Комбинация Из Кубик Цикл
Этот код может неправильно отработать. Хотя, удаляем только вперед, поэтому ошибки может и не быть.
А вот Ваш метод вращений меня смущает. Тут ранее уже говорилось, что всего есть 24 положения: каждая грань может быть повернута к нам лицом (6 вариантов) и учитываем вращения её по кругу (4 варианта). 4?6=24 |
|||
225
RomanYS
21.10.11
✎
22:50
|
в (220) ошибся
Правильно: 51 вариант 0: 1 1: 1 2: 5 3: 10 4: 16 5: 10 6: 8 с (212) расхождение только при 5-ти диагоналях. При 5-ти диагоналях ставим кубик пустой стороной вниз. Положение верхней диагонали фиксируем, то есть другое положение не расматриваем - их можно получить поворотом на 90 градусов. Имеем лишь одно преобразование, сохраняющее верхнюю диагональ - поворот на 180 относительно вертикальной оси. Без учета этого поворота - 16 = 2^4 вариантов(4 боковых стороны, 2 положения каждой).Из этих 16 вариантов 4 симметричны(относительно указанного поворота) и 6 пар вариантов переходящих друг в друга (внутри каждой пары). Итого 10 различных вариантов при 1 пустой стороне с учетом поворотов. Надеюсь понятно. Иначе можно развертки рисовать крестом, нижнюю сторону можно не учитывать - все равно только 10 вариантов. Попробуй нарисовать свои 12. |
|||
226
kittystark
22.10.11
✎
02:16
|
вот алгоритм поиска минимальной цепочки вращений от одного куба до аналогичного ему
|
|||
227
NeeD
24.10.11
✎
09:06
|
(224) Насчет удаления строк - я уже думал над этим... Попробую найти 100% рабочий вариант удаления строк в данной ситуации. По поводу вращения. Меня тоже такой вариант немного смущает и 24 комбинации - это абсолютно логично. Но, с одной стороны - вращение в 3 плоскостях на углы 90гр. - где противоречие - перебираем все комбинации углов... С другой стороны, вдруг при таком вращении некоторые комбинации просто выпадают... ну чисто теоретически (хотя слабо верится). Одним словом, для проверки моего варианта нужен новый алгоритм удаления строк и новый алгоритм получения 24 комбинаций пространственного положения :-). Практически нужно всё переписать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |