Advertisement
Guest User

Untitled

a guest
Dec 20th, 2022
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.43 KB | None | 0 0
  1. local nums = {}
  2. local list = {}
  3. local nums2 = {}
  4. local list2 = {}
  5. for line in io.lines(arg[1]) do
  6.     table.insert(nums, tonumber(line))
  7.     table.insert(list, {tonumber(line), #nums})
  8.     table.insert(nums2, tonumber(line)*811589153)
  9.     table.insert(list2, {tonumber(line)*811589153, #nums2})
  10. end
  11.  
  12. local function findPos(ind, lst)
  13.     if ind < #lst / 2 then
  14.         for i, pair in ipairs(lst) do
  15.             if pair[2] == ind then return i end
  16.         end
  17.     else
  18.         for i = #lst, 1, -1 do
  19.             if lst[i][2] == ind then return i end
  20.         end
  21.     end
  22. end
  23.  
  24. local function wrap(n, lst)
  25.     local nextPos = (n % #lst + #lst) % #lst
  26.     return nextPos == 0 and #lst or nextPos
  27. end
  28.  
  29. for i, num in ipairs(nums) do
  30.     if num ~= 0 then
  31.         local pos = findPos(i, list)
  32.         local pair = table.remove(list, pos)
  33.         table.insert(list, wrap(pos + num, list), pair)
  34.     end
  35. end
  36.  
  37. for _ = 1, 10 do
  38.     for i, num in ipairs(nums2) do
  39.         if num ~= 0 then
  40.             local pos = findPos(i, list2)
  41.             local pair = table.remove(list2, pos)
  42.             table.insert(list2, wrap(pos + num, list2), pair)
  43.         end
  44.     end
  45. end
  46.  
  47. local zeroInd
  48. for i, pair in ipairs(list) do
  49.     if pair[1] == 0 then zeroInd = i break end
  50. end
  51. print(list[wrap(zeroInd+1000,list)][1] + list[wrap(zeroInd+2000,list)][1] + list[wrap(zeroInd+3000,list)][1])
  52.  
  53. for i, pair in ipairs(list2) do
  54.     if pair[1] == 0 then zeroInd = i break end
  55. end
  56. print(list2[wrap(zeroInd+1000,list2)][1] + list2[wrap(zeroInd+2000,list2)][1] + list2[wrap(zeroInd+3000,list2)][1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement