Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> [56b] Взаимоисключение
d`ArcZeal
сообщение 29.12.2024, 19:40
Сообщение #1


**********

Elder
Сообщений: 2.978
Регистрация: 27.11.2005
Группа: Пользователи
Наличность: 7293
Пользователь №: 4.522
Возраст: 34



Sphere 56b

Необходима функция которая отобразит любые уникальные 4 числа от 1 до 10.

А более конкретно стоит задача, чтобы при генерации предмета, он обладал 4-мя заготовленными бонусами из 10 возможных.


--------------------
Olmer online administrator
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sirocco
сообщение 30.12.2024, 0:01
Сообщение #2


******

Expert
Сообщений: 829
Регистрация: 2.2.2012
Группа: Пользователи
Наличность: 16398
Пользователь №: 14.566
Возраст: 30



Даже не буду тратить время... чтобы в ответ не получить:
"вообще не используемый и непонимаемый субьективно синтаксис."
а так может массивы для себя откроешь...
абсолютно аналогичный алгоритм, как в прошлом топике.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
d`ArcZeal
сообщение 30.12.2024, 11:05
Сообщение #3


**********

Elder
Сообщений: 2.978
Регистрация: 27.11.2005
Группа: Пользователи
Наличность: 7293
Пользователь №: 4.522
Возраст: 34



Имею необходимость в помощи. Синтаксис с годами забываю.
Пожалуйста любой пример необходим, а далее всплывут в голове флешбеки.


--------------------
Olmer online administrator
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sirocco
сообщение 30.12.2024, 12:29
Сообщение #4


******

Expert
Сообщений: 829
Регистрация: 2.2.2012
Группа: Пользователи
Наличность: 16398
Пользователь №: 14.566
Возраст: 30



Массив из 10 элементов отсортируй случайным перемешиванием циклом на 4 повтора. Первые 4 элемента массива будут твоим результатом.

либо просто выбирай случайное число от 1 до 10 через while и сверяйся что такая переменная не заполнена.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
keni
сообщение 30.12.2024, 13:05
Сообщение #5


**

Группа: Пользователи
Наличность: 0
Пользователь №: 6.699
Возраст: 10



Писал в туалете поэтому синтаксис итд лучше проверить, с кодом не особо знаком от 56 но чет типо того должно быть, но лучше на вики залети и посмотри

Код
[function display_random_numbers]
local.unique_numbers = "" // хранения надо ли в 56 я хз, опять же на вике лучше глянуть))
local.count = 0

while (<local.count> < 4) //скок номеров генерим
    local.random_number = <EVAL RAND(10)> + 1
//тут нужна проверка что бы числа ункикальные были но можно по идее и без нее  смотря какой результат
        local.unique_numbers = <local.unique_numbers>, <local.random_number>
        local.count++
    ENDIF
endwhile


SYSMESSAGE Уникальные числа твои: <local.unique_numbers>
return


--------------------
Ryan John Waldecker 1987 -2007 best friend forever

https://uoarena.ru/ FUN PVP 51a ORION GG by BangBang
Sphere 51 Open Source
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sirocco
сообщение 30.12.2024, 15:26
Сообщение #6


******

Expert
Сообщений: 829
Регистрация: 2.2.2012
Группа: Пользователи
Наличность: 16398
Пользователь №: 14.566
Возраст: 30



то чувство когда ты не дружишь с циклами... не умеешь читать и не понимаешь смысла задачи.
лучше бы ты эту бумагу в туалете по назначению пустил.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
d`ArcZeal
сообщение 31.12.2024, 9:29
Сообщение #7


**********

Elder
Сообщений: 2.978
Регистрация: 27.11.2005
Группа: Пользователи
Наличность: 7293
Пользователь №: 4.522
Возраст: 34



Поэтому вопрос актуальный.
WHILE всегда избегал.


--------------------
Olmer online administrator
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sirocco
сообщение 31.12.2024, 15:28
Сообщение #8


******

Expert
Сообщений: 829
Регистрация: 2.2.2012
Группа: Пользователи
Наличность: 16398
Пользователь №: 14.566
Возраст: 30



Это не тот случай где его надо избегать...


Код
[FUNCTION f_choose]
for i 1 4
    local.rand = {1 10}
    while (<local.num_<dlocal.rand>> == 1) && (<local._while> < 30)
        local.rand = {1 10}
    endwhile
    local.num_<dlocal.rand> = 1
    local.nums_<dlocal.i> = <dlocal.rand>
endfor
for m 1 4
    say @,,1 <dlocal.nums_<dlocal.m>>
endfor
say @,,1 ----------------------------
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
kklej
сообщение 31.12.2024, 18:48
Сообщение #9


******

Группа: Пользователи
Наличность: 15743
Пользователь №: 13.346



+1 спасибо за код, сделаю что-то для выкида рандомного игрока с шарда, всех с новым годом!
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sirocco
сообщение 31.12.2024, 20:04
Сообщение #10


******

Expert
Сообщений: 829
Регистрация: 2.2.2012
Группа: Пользователи
Наличность: 16398
Пользователь №: 14.566
Возраст: 30



Чтобы вам было не скучно... вот еще один алгоритм.

Код
[FUNCTION f_shuffle]
FOR i 1 10
    local.n<dlocal.i> = <dlocal.i>
ENDFOR
FOR m 1 10
    local.rand = {1 10}
    local.prev = <local.n_<dlocal.m>>
    local.n_<dlocal.m> = <local.n_<dlocal.rand>>
    local.n_<dlocal.rand> = <dlocal.prev>
ENDFOR
FOR z 1 4
    say @,,1 <local.n_<dlocal.z>>
ENDFOR
say @,,1 ----------------------------
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
d`ArcZeal
сообщение 2.1.2025, 15:51
Сообщение #11


**********

Elder
Сообщений: 2.978
Регистрация: 27.11.2005
Группа: Пользователи
Наличность: 7293
Пользователь №: 4.522
Возраст: 34



(IMG:https://i.ibb.co/ft4QvKm/Screenshot-1.png)

Оба кода выдают по нулям. (IMG:style_emoticons/default/sad.gif)


--------------------
Olmer online administrator
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sirocco
сообщение 2.1.2025, 16:02
Сообщение #12


******

Expert
Сообщений: 829
Регистрация: 2.2.2012
Группа: Пользователи
Наличность: 16398
Пользователь №: 14.566
Возраст: 30



Я оба кода писал на 55i - c eval и 0 перед локалами.
все работало в обоих случаях.
ваша беда, что вы не знаете функциии SAY.... и не пользуетесь ей.

Вот неадаптированная под 55b
возможно нужно эту строку заэвалить было local.rand = {1 10}

Код
[FUNCTION f_choose]
for i 1 4
    local.i = "<eval(<local.i>)>"
    local.rand = "<eval({1 10})>"
    while (0<local.num_<local.rand>> == 1) && (<local._while> < 30)
        local.rand = "<eval({1 10})>"
    endwhile
    local.num_<local.rand> = 1
    local.nums_<local.i> = <local.rand>
endfor
for m 1 4
    say @,,1 <eval(0<local.nums_<eval(<local.m>)>>)>
endfor
say @,,1 ----------------------------
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
d`ArcZeal
сообщение 2.1.2025, 19:23
Сообщение #13


**********

Elder
Сообщений: 2.978
Регистрация: 27.11.2005
Группа: Пользователи
Наличность: 7293
Пользователь №: 4.522
Возраст: 34



Благодарю. Обнимаю. (IMG:style_emoticons/default/goodpost.gif)


--------------------
Olmer online administrator
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
3 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 1 kklej

 

- Текстовая версия | Версия для КПК Сейчас: 13.2.2025, 19:49
Designed by Nickostyle