XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
DioD

offline
Опыт: 45,184
Активность:
[Task] Присвоение в цикле
Код:
function ZzZ takes nothing returns nothing
    local integer array ZzZ
    
    set ZzZ[0   ] = 1
    set ZzZ[8190] = 8189
    
    loop
        
        exitwhen ZzZ[0   ] == 8190
        
        set ZzZ[ZzZ[0   ]] = ZzZ[8190]
        
        set ZzZ[0   ] = ZzZ[0   ] + 1
        set ZzZ[8190] = ZzZ[8190] - 1
        
    endloop
    
    set ZzZ[0   ] = 8189
    
endfunction


Задание крайне просто.

Уберите последнее присвоение "set ZzZ[0 ] = 8189" сохранив числа в массиве неизменными.

Сразу говорю вы должны убрать это присвоение вообще, а не переставить куда либо в другое место.
Старый 10.03.2007, 07:41
adic3x

offline
Опыт: 107,539
Активность:
В итоге должно получится что z[1]=8189 и z[0]=8189 ?
Старый 10.03.2007, 09:17
DioD

offline
Опыт: 45,184
Активность:
ну вы сами должны решить что получиться, код 100% рабочий если заменить на глобалку можете потестить через ввод команд.
Старый 10.03.2007, 09:50
p01nTT

offline
Опыт: 10,760
Активность:
Код:
function ZzZ takes nothing returns nothing
    local integer array ZzZ
    
    set ZzZ[0   ] = 1
    set ZzZ[8190] = 8189
    
    loop
        
        exitwhen ZzZ[8190] == 0
        
        set ZzZ[8189-ZzZ[8190]] = ZzZ[8190]

        set ZzZ[8190] = ZzZ[8190] - 1
        
    endloop
    
endfunction

так вроде
Старый 10.03.2007, 10:23
adic3x

offline
Опыт: 107,539
Активность:
Код:
function z takes nothing returns nothing
local array z
set z[8190]=1
set z[8191]=8190
loop
exitwhen z[8190]==8189
set z[z[8190]]=z[8191]
set z[8190]=z[8190]+1
set z[8191]=z[8191]-1
endloop
endfunction


как вариант просто выделить два элемента для счетчика.

ADOLF добавил:
Хотя это впринципе то что у p01nTT, только расписанно через два элемента, думаю через один конечно лучше.
Старый 10.03.2007, 10:37
DioD

offline
Опыт: 45,184
Активность:
да, еще, ваш код должен выполняться полностью и поток не должен умирать....
это по примеру с вычитанием
8191 слот не существует, его использование крашит вар при загрузке.
это доказаный факт
как было сказано выше контент массива не должен отличаться, так что 8191 слот юзать нельзя в любом случае.
Старый 10.03.2007, 10:59
p01nTT

offline
Опыт: 10,760
Активность:
DioD мой код не умирает :),всё с ним нормально

p01nTT добавил:
только что проверил
Старый 10.03.2007, 11:20
adic3x

offline
Опыт: 107,539
Активность:
Ну-ка ну-ка ну-ка:
Код:
function z takes nothing returns nothing
local integer array z
set z[0]=0
loop
 exitwhen z[0]==8190
 set z[0]=z[0]+1
 set z[z[0]]=8190-z[0]
endloop
endfunction

DioD ?
Старый 10.03.2007, 11:42
EA_tm_GoReC

offline
Опыт: 1,089
Активность:
Код:
function ZzZ takes nothing returns nothing
    local integer array ZzZ
    
    set ZzZ[0   ] = 1
    set ZzZ[8190] = 8189
    
    loop
        
        exitwhen ZzZ[0   ] == 8190
        
        set ZzZ[ZzZ[0   ]] = ZzZ[8190]
        
        set ZzZ[8190] = ZzZ[8190] - 1
        set ZzZ[0   ] = set ZzZ[8190]
    endloop

Может так?
Старый 10.03.2007, 17:22
DioD

offline
Опыт: 45,184
Активность:
код должен быть рабочим
Старый 10.03.2007, 18:34
J
expert
offline
Опыт: 48,747
Активность:
так шоли?
Код:
function xXx takes nothing returns nothing
    local integer array xXx
    set xXx[0] = 1
    loop
        set xXx[xXx[0]] = 8190-xXx[0]
        exitwhen xXx[0] == 8190
        set xXx[0] = xXx[0] + 1
    endloop
endfunction

или че нужно сделать тогда?

Отредактировано Jon, 10.03.2007 в 20:01.
Старый 10.03.2007, 19:32
p01nTT

offline
Опыт: 10,760
Активность:
у меня в коде всё норм,и он норм работает,че диод тебе не нравится?
Старый 10.03.2007, 20:00
DioD

offline
Опыт: 45,184
Активность:
EA_tm_GoReC
Написал нерабочий скрипт.

Я же написал в задании, вы должны убрать последнее присвоение, но никак не изменять алгоритм, решение _ОЧЕНЬ_ простое.

Наиболее близок к нему Jon вообще он сделал почти правильно.

Если никто не напишет того чего я ждал то победа будет присуждена ему.

По постам

#3
Выполнена работа не связаная с задачей вообще, надо убрать последнее присвоение но никак не собрать 2 контрольных в одно

#4
Использован нерабочий слот массива

#7
Правильно но не то что требуется
Опять же вы пошли по пути сбора контрольных присвоений в одно сложное

#8
Код нерабочий вообще

#10
Полностью правильно, но опять же идёт сбор контрольных значений в одно сложное.

DioD добавил:
Короче говоря вы не должны изменять алгоритм выполнения, просто найдите способ убрать последнее присвоение НЕ добовляя и не изменяя то что уже есть.

Всё что было представлено выше это другой код, альтернатива, но не решение поставленой задачи.
Старый 10.03.2007, 20:43
J
expert
offline
Опыт: 48,747
Активность:
ну.. если просто изменить.. то мб так?
Код:
function ZzZ takes nothing returns nothing
    local integer array ZzZ
    set ZzZ[0   ] = 1
    set ZzZ[8190] = 8189
    loop
        exitwhen ZzZ[0   ] == 8190
        set ZzZ[ZzZ[0   ]] = ZzZ[8190]   
        set ZzZ[8190] = ZzZ[8190] - 1
        exitwhen ZzZ[0   ] == 8189
        set ZzZ[0   ] = ZzZ[0   ] + 1
        set ZzZ[8190] = ZzZ[8190] - 1
    endloop
    set ZzZ[0   ] = 8189
endfunction
Старый 10.03.2007, 21:06
DioD

offline
Опыт: 45,184
Активность:
Да, цель задачи это переставление "exitwhen"
Теперь результат именно такой каким он должен был быть.
Старый 10.03.2007, 21:09
J
expert
offline
Опыт: 48,747
Активность:
я выйграл пряник? :):
Старый 10.03.2007, 21:10
DioD

offline
Опыт: 45,184
Активность:
А тебе понравилось искать решение?
Старый 10.03.2007, 21:19
NETRAT

offline
Опыт: 83,762
Активность:
Воздержусь от комментариев...
вроде ты хочешь что бы просто переставили две строки:
Код:
function ZzZ takes nothing returns nothing
    local integer array ZzZ
    
    set ZzZ[0   ] = 1
    set ZzZ[8190] = 8189
    
    loop
        set ZzZ[ZzZ[0   ]] = ZzZ[8190]
        set ZzZ[8190] = ZzZ[8190] - 1
        exitwhen ZzZ[0   ] == 8189
        set ZzZ[0   ] = ZzZ[0   ] + 1 
    endloop
    
endfunction


NETRAT добавил:
ндапох, пока я пил пиво, все уже написали
Старый 10.03.2007, 21:20
J
expert
offline
Опыт: 48,747
Активность:
Цитата:
Сообщение от DioD
А тебе понравилось искать решение?

если честно.. то я больше времени пытался понять что вообще надо зделать, а не как зделать
Старый 10.03.2007, 21:20
NETRAT

offline
Опыт: 83,762
Активность:
имхо, искать небольшую рационализацию в иррациональной задаче неинтересно =\
Старый 10.03.2007, 21:21
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 03:34.