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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 15.12.2012, 15:42   #1
wppt
Нуждающийся
 
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений
(для 2 пользователей)
задача о массивах

допустим, есть int переменная e, int переменные s1 и s2, а также float переменные m и m_

в результате некоторого алгоритма выбираются значения для s1 и s2. Это могут быть числа от 0 до 3.
Далее идет некий "алгоритм" выбора значений для s1 и s2, которым присваиваются значения, например, s1=0,s2=1. Затем выбирается значение для e. Оно с равной долей вероятности может быть равно или s1, или s2.
для s1 и s2 ставится в соответствие некоторое значение из int массива arr, если e = s1, или из int массива arr_ если e=s2. Возможно ли "вывести" закон изменения для индекса массивов arr,arr_ в зависимости от s1,s2 и e, чтобы затем переменным m и m_ присвоить значения ячеек с соотв. индексом?

Понимаю, объяснил ужасно, вот еще в помощь соответствия s1 и s2, и массивов

s1 <-> s2 (arr[i],arr[i+1]) | (arr_[i],arr_[i+1])
s1 <-> s2 (arr[i+2],arr[i+3]) | (arr_[i+2],arr_[i+3])
...
s1 <-> s2 (arr[i + k], arr[i+k+1]) | (arr_[i+k],arr[i+k+1])

т.е. для каждого соответствия s1 и s2 (например 0 - 1, 0 - 2 и т.д.)
есть свое соответствие элементов массива.

если e = s1, то значение m = arr[i], значение m_ = arr[i+1] и так до последнего соответствия s1 и s2. Если e = s2, то m=arr_[i], а m_=arr_[i+1].
И, будто всего этого было мало, соответствия "читаются" с двух сторон, т.е. получается, что 1 <-> 0 то же самое, что 0 <-> 1.

Получается, что задача состоит в том, чтобы в конце можно было присвоить значениям m и m_ значения элементов соотв. массивов, индексы которых зависят от s1, s2 и e.

Всего получается десять соответствий:

0 <-> 0
0 <-> 1
0 <-> 2
0 <-> 3
1 <-> 1
1 <-> 2
1 <-> 3
2 <-> 2
2 <-> 3
3 <-> 3

И как же эту задачу решить?
(Offline)
 
Ответить с цитированием
Старый 15.12.2012, 15:45   #2
wppt
Нуждающийся
 
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: задача о массивах

Эта задача пришла мне в голову при разработке моей игры
(Offline)
 
Ответить с цитированием
Старый 20.12.2012, 02:59   #3
jimon
 
Сообщений: n/a
Ответ: задача о массивах

э ?

for(i = 0, i <= n; ++i) // n должно быть <= количеству битов в типе данных для e и s1, те 32 бита для инта
if(((e >> i)&1) == ((s1>>i)&1)) // (e >> i) &1 - получает значение i-того бита
m = arr[i];
else
m = arr_[i];
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
wppt (20.12.2012)
Старый 20.12.2012, 03:56   #4
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: задача о массивах

if (e == s1)
i = 2*s1
else
i = 2*s2

(Offline)
 
Ответить с цитированием
Старый 20.12.2012, 16:29   #5
wppt
Нуждающийся
 
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: задача о массивах

интересно, попробую!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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