и так, с этапом сдвига разобрался, работает на ура, пошел на этап работать с зеркальным отображением - с лева в право. Думал что пройдет вариант с for #j 4 2 -1 , но это не прокатило, в общем, сделал так
Код
// ПРАВО
log clear
set delimiter ' '
load_array %test test.txt //загружаю массив для теста
log open 1 1 450 300
for #i 1 4 //вывод в лог массива
log %test [#i] Исходник
end_for
//==делаем зеркало==//
set %tmp %test //возьмем данные их исходника
init_arr %mirror //промежуточный массив
set size(%mirror) //обнулить
for #i 1 4 //
for #j 1 4
set #a size (%tmp) - #j + 1
set %mirror [#i #j] %tmp [#i #a]
end_for
end_for
set %tmp %mirror //закрепим перемещение
set size(%mirror) //очистим промежуточный
for #i 1 4 //вывод в лог массива
log %tmp [#i] Зеркальный
end_for
save_array %tmp tmp.txt //сохраним массив
//==cсмещение в ЛЕВО==//
for #i 1 4 //строчка
for #j 2 4 //ячейка
set #jj #j - 1 //левее ячейка
while #j > 1 //зациклюсь
if %tmp [#i #j] = 0 //пропущу нули
break
else //леввая и правая равны
if %tmp [#i #j] = %tmp [#i #jj]
set %tmp [#i #jj] %tmp [#i #j] + 1
set %tmp [#i #j] 0
set #j #j - 1
break
end_if
if %tmp [#i #jj] = 0 //левее ноль
set %tmp [#i #jj] %tmp [#i #j]
set %tmp [#i #j] 0
set #j #j - 1
else
break
end_if
set #j #j - 1
end_if
end_while
end_for
end_for
for #i 1 4 //вывод в лог массива
log %tmp [#i] в ЛЕВО //что вышло
end_for
//gosub summa
//потом обратно сделать зеркало
end_script
все бы хорошо, да не очень , не хочет работать нормально если .... пример строки
1 2 2 3 Исходник, переворачивает шикарно 3 2 2 1 Зеркальный, а вот сдвиг, уже не так весело 3 3 1 0 в ЛЕВО. Делал так, брал Зеркальный массив и прогонял его через чистый сдвиг в Лево - работает на ура 4 1 0 0 . вот и ни как не пойму, весь блок перелопатил, сэйв-файл смотрел, вссе нормально, в чем тут несовместимость зеркальности со сдвигом, просимо помощи клуба знатоков. З.Ы. танцы с бубном и вызов духа святого Акакия - не помог