|
Здравствуйте помогите пожалуйста с таким заданием на СИ:
есть поле 20х20 надо посредством массива рандомом (каждый раз новый) найти путь от самой верхней до самой нижней ячейки квадрата. Ячейка может двигаться вверх,вниз,направо,налево! Заранее благоарю!
2
Слава
Смотрите, есть квадрад 20 на 20 заполнен,допустим, 176 символом, и надо чтобы комп рандомом заполнял пробелами путь к нижней правой ячейке!
3
Константин
Меня в тупик ставит рендомная генерация, а вы уверены, что путь вообще
будет существовать ?
4
Слава
да
любой путь к примеру вот так http://http://s59.radikal.ru/i166/1002/cc/1d1565831f7e.jpg только это массив, черное- это 176 символ, белое- пробелы! НО каждый раз путь должен быть разный!!!
5
Константин
ну это будет не просто рендом. Вероятность что будет проход - минимальна. Рендом вам просто накидает пробелов.
Рендом это 50/50 или ноль или единица. Если у вас есть алгоритм (рендом, генерации прохода), то покажите пожалуйста
6
Слава
в том то и дело что нету, знаю одно что рандом должн просто генерировать 1 или 2 или 3 илии 4 и на каждую цифру соответственно движение вправо,влево вниз или вверх. И знаю то что надо сделать проверку по столбцам и строкам на ходы, то есть крайняя вверхняя не может ходить вверх и так далее, но проверку я сам сделать смогу а вот ход ни очень понимаю как реализовать!
7
Константин
рендом или 1 или 0 генерирует и никак иначе, учите теорию вероятности
8
Слава
рандом будет генерировать 4 числа, ві неправильно поняли задание изначально поле , тоесть массив полностью забит 176 символом, а рандом будем генерировать направление движения пробела!!Только вот как это написать на Си ...увы....
9
Константин
Ну тогда все проще у вас есть начальные координаты 0,0 к примеру. У вас есть рендом который генерирует или ноль или 1. вы снимаете со входа 2 значения (00, 01, 10, 11). Логично что у вас будет двоичная система счисления.
А дальше если движение выпало вперед, а там стенка или назад, а там стенка (ход мысли понятен ?) то генерируется снова направление. и таким образом вы дойдете, может быть до конца Возможно я бы фильтровал движение только вперед ,налево и направо
10
Слава
это ясно спс почти догнал, только можете пожалуйста написать фрагмент кода который возрощает опять на рандом..который идёт по сле if
(....)
11
Константин
С синтаксисом могу напортачить ибо мой язык прогарммирования Java
int a = Random функция int b = Random функция int x, y - start Position if(a ==0 & b ==0) // влево { // проверка корректности координат может быть такой (x = x+1) x? x = x+1 } if(a ==1 & b ==0) // ввправо { // проверка корректности координат x = x-1 } if(a ==0 & b ==1) // назад { // проверка корректности координат y = y+1 } if(a ==1 & b ==1) // вперед { // проверка корректности координат y=y-1 }
12
Слава
большое спасибо,всё сделал!
13
Константин
Не за что )
|


Константин