Сейчас 01:42:13 Среда, 27 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Просто теоретический вопрос по Джассу
FatalBladeДата: Четверг, 15 Сентября 2011, 20:38:45 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Равкоды юнитов/предметов/абилок... Почему они являются Integer? Ведь равкод, например 'H002', это строка, а не число. Да и кроме того целочисленным чисел всего 32768 положительных и 32769 отрицательных, это не так уж много. Если равкоды это целочисленные значения, то создавая много своих абилок/предметов/юнитов в РО может привести к тому что эти равкоды будут пересекаться?

 

Ty3uKДата: Четверг, 15 Сентября 2011, 22:15:57 | Сообщение # 2
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Нет, не будут. Сочетание 3 цифр и всего англ алфавита дают тебе практически бесконечное множество рав-кодов (я утрирую, но вариаций оооочень много :) ). Так что вероятность совпадения "крайне мала" :)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

FaionДата: Четверг, 15 Сентября 2011, 22:19:15 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
Quote (Ty3uK)
Сочетание 3 цифр и всего англ алфавита дают тебе практически бесконечное множество рав-кодов (я утрирую, но вариаций оооочень много :) ). Так что вероятность совпадения "крайне мала"

Да вы сударь упороты ._.

Курите.


О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас.
My Project: Nindogatari
MAL
 

FatalBladeДата: Четверг, 15 Сентября 2011, 22:32:34 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (Ty3uK)
Нет, не будут. Сочетание 3 цифр и всего англ алфавита дают тебе практически бесконечное множество рав-кодов (я утрирую, но вариаций оооочень много :) ). Так что вероятность совпадения "крайне мала" :)

Да но в результате это ведь в Джассе считается целочисленным значением, которых от -32769 до 32768. И это ещё при том что есть другие переменные Integer, которые имеют такие же значения. 'H002' - может быть равно например числу 100, я правильно понял? И если я записываю что то в хэш под номером 'H002', то биш 100, и потом например запишу что то другое под самим номером 100. То есть я записываю обе вещи под одним и тем же номером.

call SaveInteger(udg_Abilities, 'H002', 0, 'A0KW')
call SaveInteger(udg_Abilities, 100, 0, 'A0KZ')

Вроде под разными значеиями, но они равны, если 'H002' = 100. Теоретически, это ведь может произойти?


 

lawsonДата: Четверг, 15 Сентября 2011, 23:03:20 | Сообщение # 5
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
'H002'

Quote (FatalBlade)
что эти равкоды будут пересекаться?

А теперь вычти шанс для совпадения при 9999 где любое число еще можно умножить на 26 букв алфавита. хм скорей у тебя варик свариться.
К тому же строка это тоже целоисчислительная только в другой системе отсчета.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Четверг, 15 Сентября 2011, 23:06:06
 

AjaccioДата: Пятница, 16 Сентября 2011, 00:12:27 | Сообщение # 6
7 уровень
Группа: Проверенные
Сообщений: 299
Награды: 1
Репутация: 239
Блокировки:
Для рав-кодов используется 256-ая система счисления (ASCII), то есть согласно этой таблице.
Например, 'A' = 65, '#' = 35 и так далее -> запись в ячейку 100 и в ячейку 'd' есть суть одно и тоже.
Боятся перезаписи не стоит, ибо в игре приняты рав-коды из 4 символов, а это очень большие числа. Вы же не используете ячейки №1 000 000 и больше?
БТВ, тип integer в JASS производный от DWORD, занимает 4 байта и может принимать значения от -2 147 483 648 до 2 147 483 647.


XOR EAX, EAX
MOV EAX, 00H ;; NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.
 

FatalBladeДата: Пятница, 16 Сентября 2011, 00:38:10 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (Ajaccio)
Боятся перезаписи не стоит, ибо в игре приняты рав-коды из 4 символов, а это очень большие числа. Вы же не используете ячейки №1 000 000 и больше?

Значит равкод это умножение всех чисел стоящих за буквами? То есть если 'd' это 100, то например 'dddd' это 100*100*100*100?

Quote (Ajaccio)
БТВ, тип integer в JASS производный от DWORD, занимает 4 байта и может принимать значения от -2 147 483 648 до 2 147 483 647.

То есть в джассе это longint?


 

ExtrematorДата: Пятница, 16 Сентября 2011, 00:51:28 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
мне казалось так

итого по 10 вариаций для каждой ячейки... всего их 4 ... 10*10*10*10 = 10000 вариаций
если присутствуют ещё и буквы... то... примерно так...

...букв всего 26... а значит вариаций на одну ячейку должно быть 26 + 10 (36) ...
а всего вариций будет 36*36*36*36 = 1679616 шт.

но... фигирируют так же и маленькие буквы оО
тогда ещё +26 ... (26*2)+10 = 52 + 10 = 62
62*62*62*62 = 14776336 вариаций... ололо xD
 

FatalBladeДата: Пятница, 16 Сентября 2011, 01:01:31 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Короче пересечений быть практически не может. Это радует. :)
Спс всем.


 

AjaccioДата: Пятница, 16 Сентября 2011, 01:13:39 | Сообщение # 10
7 уровень
Группа: Проверенные
Сообщений: 299
Награды: 1
Репутация: 239
Блокировки:
Под конец:

Quote (FatalBlade)
Значит равкод это умножение всех чисел стоящих за буквами? То есть если 'd' это 100, то например 'dddd' это 100*100*100*100?

Формула сложнее, но можно стать хитрым и просто заменить каждый символ на его HEX представление, а потом (калькулятором?) перевести в десятичную.
Таким образом 'dddd' == 0x64646464 (так как 64 - код символа d в 16-ой системе счисления из таблицы) == 1 684 300 900 в десятичной.

Quote (FatalBlade)
То есть в джассе это longint?

Ага, long signed int.

Extremator, еще никто не запрещает использовать !"№;%:?*() и другие знаки, тысячи их.


XOR EAX, EAX
MOV EAX, 00H ;; NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz