Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 19.08.2007, 22:56   #1
Chrono Syndrome
 
Сообщений: n/a
Расстановка.

Условие: имеются двумерный (высота и ширина известны) массив, и список значений.
Задача: при любых размерах массива симметрично расставить по его углам значения списка.

Вот все никак не могу довести до ума алгоритм решения этой задачи... Есть идеи ?
 
Ответить с цитированием
Старый 19.08.2007, 23:49   #2
jimon
 
Сообщений: n/a
Re: Расстановка.

1)если список значений больше чем width*height/4 то задача не решается

2)уместить етот список значений в масив width/2,height/2

в принципе решать ее надо не очень сложным перебором
клетки заполняем "волной" ... тоесть 0,0 ; 1,0 ; 1,1 ; 0,1; 2,0 ; 2,1 ; 2,2; 1,2 ; 0,2;

так чтобы масив чисел 1,2,3,4,5,6,7,8,9 уместился вот так :
12500
43600
98700
00000

хотя тут мона и по извращатся

3)скопировать етот масив в 4 угла инвертировав
тоесть в левый угол скопировать оригинал, в правый инверсию по X
тоже самое с высотой
 
Ответить с цитированием
Старый 20.08.2007, 11:01   #3
Chrono Syndrome
 
Сообщений: n/a
Re: Расстановка.

3)скопировать етот масив в 4 угла инвертировав
тоесть в левый угол скопировать оригинал, в правый инверсию по X
тоже самое с высотой
Вот я так и делаю. Проблемы начинаются с неквадратными массивами, когда число элементов в списке приближается к этому самому width * height / 4...
 
Ответить с цитированием
Старый 20.08.2007, 13:03   #4
jimon
 
Сообщений: n/a
Re: Расстановка.

хм я тут подумал что width и height должны быть кратны 2
иначе ты общий масив не поделиш на 4 части
в принципе ето условие для простого решения задачи

теоретически я думаю ее возможно решить при общем условии
размер масива с числами * 4 <= width * height

первоначально надо выделить из общего масива 1/4 часть
и сделать из нее одномерный масив,

к примеру вот у нас игровая область :
0000
0000
0000
если ее делить на 4 части
при размере масива с числами = 3 то выйдет так
(числами обозначены номер части масива)
1133
1243
2244
или так
1133
2134
2244

в общем нам надо получить только номера клеток для первого под масива

потом все просто - превращаем его в одномерный масив по алгоритму
который я описал в 2 посте пункт 2
размер етого масива будет => размера масива с числами

заполняем псевдо-случайно,
но так чтобы генератор чисел генерировал "ближе" к нулю
(при такой генерации юниты будут только с краев карты)

после всего етого берем етот одномерный масив и копируем в первый блок общего масива
потом собсно инверсно копируем в остальные 4

ps. а задача оказалась чуть сложнее чем я думал
но imho тут нету ничего уж слишком сложного
 
Ответить с цитированием
Старый 20.08.2007, 16:57   #5
Chrono Syndrome
 
Сообщений: n/a
Re: Расстановка.

Ладно, буду пробовать.
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расстановка физических обьектов. Черный крыс Blitz3D 17 06.01.2008 18:57
Расстановка ботов smaller 3D-программирование 1 18.12.2006 19:36
Расстановка точек по сфере GoodWin 3D-программирование 5 17.08.2006 22:57
Случайная расстановка кубиков Fant 3D-программирование 8 29.12.2005 11:09


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com