Toadcop
offline
Опыт:
54,313Активность: |
Кодировка Флагов
короче вот еще одна уже чуть сложней задачя !
начнём с самого начала... у нас есть например 10 флагов которые могут быть активированы или нет. типо так 1 (0) - false 2 (0) - false 3 (1) - true 4 (0) - false 5 (1) - true 6 (0) - false 7 (1) - true 8 (1) - true 9 (0) - false 10(1) - true вот типо иммено так ! в чём задачя надо создать алгоритм который будет 1) кодировать активированые флаги в один инт (не бинарный код т.е. не 011010101 ! это просто !) а в простое число вроде 27, 87 или что такое как выйдет ;) 2) алгоритм который сможет узнавать из этого числа какой флаг активирован ! т.е. функция в которую задаётьса это кодированое число + номер флага (1 - 10) который надо узнать или он активирован ! если да то функция вернёт true если нет то false. приверно так Код:
и вторая функция Код:
вот так ! + это всё должно решатьса без использования циклов или подобных конструкций ! и конечно как можно оптималней ! если не понятно спрашивайте ! желаю удачи =) ! |
23.03.2007, 00:02 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
чё так глухо ? или не знаете как можно риализовать ? могу подсказать... |
24.03.2007, 15:28 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Lord of Death
Потерянный надолго
offline
Опыт:
3,008Активность: |
Подскажи. |
24.03.2007, 20:24 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
узайте степени 2-ки =) это уже ОЧЕНЬ сильная подсказка ! но не надо забывать что реализовать надо без циклов ! |
24.03.2007, 21:37 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
dk
offline
Опыт:
60,293Активность: |
Можно сделать как права доступа к файлам у люнуха |
28.03.2007, 18:06 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
Цитата:
|
|
28.03.2007, 21:13 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
dk
offline
Опыт:
60,293Активность: |
1 2 4 и т.д хотя это как раз и получатся степени 2) я невнимательно топик прочел... |
29.03.2007, 04:05 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
Цитата:
тк понятно =) но нужен алгоритм ! |
|
29.03.2007, 12:26 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
ну... принцепи все довольно просто и понятно... единственная мне показалась сложность это:
Цитата:
|
|
30.03.2007, 09:54 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
Цитата:
это и есть главная задача ! ;) Toadcop добавил: да еще ! ТАКЖЕ нельзя использовать строки ! (ВООБЩЕ) |
|
30.03.2007, 13:49 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
remal
нечто
offline
Опыт:
2,087Активность: |
замена цикла на рекурсию, например... что тут сложного-то? только вот "задача" не имеет никакого практического смысла... |
03.04.2007, 20:55 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DeT
offline
Опыт:
5,715Активность: |
Цитата:
а ето не подобная конструкция? |
|
03.04.2007, 21:59 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
remal
нечто
offline
Опыт:
2,087Активность: |
Цитата:
не, ну можно использовать серию из n if-ов:) только вот какой смысл решать стандартную задачу по переводу числа из двоичной системы в 10-ичнуй через задницу? |
|
03.04.2007, 22:57 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
Код:
вот всё решение ! Цитата:
кстати Pow можно на integer array заменить будет быстрей... а как кодировать... очень просто =) я использую массив сумму значений из слотов массива ! потом покажу =) Toadcop добавил: юзать так IsInNumberX2BR(2,31) там 2 точно есть ;) можете проверить ! |
|
03.04.2007, 23:17 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
remal
нечто
offline
Опыт:
2,087Активность: |
2Toadcop:
Цитата:
|
|
04.04.2007, 18:49 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
Цитата:
короче вот это Pow2[1]=1 Pow2[2]=2 Pow2[3]=4 Pow2[4]=8 Pow2[5]=16 Pow2[6]=32 Pow2[7]=64 Pow2[8]=128 и т.д. до 31 степени... и т.д. это надо желательно инциализировать где нибудь... теперь просто ! 1 сразу задания нужного аргумнта или вот так ! Код:
ну эти чила можно и самому писать =) как я напр делаю ! т.е. в уме высчитывать... что вообще это даёт ? очень просто таким способом можно в одно число запихать кучу настроек ! (если производительность не главное =) ) кто не верит тестируйте ! |
|
04.04.2007, 19:18 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
remal
нечто
offline
Опыт:
2,087Активность: |
Toadcop, бугага. перевод в другую сичтему счисления делается циклом. что намного лучше и красивее
|
04.04.2007, 20:39 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
0pJl9lTa
offline
Опыт:
3,397Активность: |
Очень трудные задачи. очень |
20.04.2007, 13:13 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|