Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 5)

Модерирует : gyra, Maz

Maz (15-01-2020 17:38): FAR Manager (часть 6)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Alexyz21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
-- zagadka: обойти начиная с 1-го 16 этажей, побывав на каждом лишь 1 раз,
-- переходы между этажами разрешены только на 3, либо 5 этажей вверх/вниз.
local len=16
local t,t1 = {},{}
local d={-5,3,5,-3}
local st=function(x)
  local t0={}
  for i=1,#d do local r=x+d[i] if r>=1 and r<=len and not t[r] then table.insert(t0,d[i]) end end
  table.insert(t1,t0)
end
 
local src=function(x) for k,v in pairs(t) do if v==x then return k end end end
 
local fst,count = 1,1 -- старт с 1-го этажа
local l=fst -- текущий этаж
while true do
  local sub=function() t[l]=l+t1[#t1][#t1[#t1]] l=t[l] end
  st(l)
  if #t1[#t1]>0
  then sub()
  else
    if #t1==len and l==t1[1][#t1[1]-1]+fst
    --if #t1==len and (l==4 or l==6)
    then t[l]=fst break
    else
      while #t1[#t1]<2 do table.remove(t1) t[l]=nil l=src(l) end
      table.remove(t1[#t1])
      sub()
    end
  end
  count=count+1
end
 
local s=#t1..": "..fst
for i=1,#t1 do fst=t[fst] s=s.." "..fst end  
far.Message(s,count)
 

Всего записей: 3485 | Зарегистр. 16-06-2007 | Отправлено: 18:36 14-03-2019 | Исправлено: Alexyz21, 01:14 15-03-2019
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » FAR Manager (часть 5)
Maz (15-01-2020 17:38): FAR Manager (часть 6)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru