Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local nums = {}
- local list = {}
- local nums2 = {}
- local list2 = {}
- for line in io.lines(arg[1]) do
- table.insert(nums, tonumber(line))
- table.insert(list, {tonumber(line), #nums})
- table.insert(nums2, tonumber(line)*811589153)
- table.insert(list2, {tonumber(line)*811589153, #nums2})
- end
- local function findPos(ind, lst)
- if ind < #lst / 2 then
- for i, pair in ipairs(lst) do
- if pair[2] == ind then return i end
- end
- else
- for i = #lst, 1, -1 do
- if lst[i][2] == ind then return i end
- end
- end
- end
- local function wrap(n, lst)
- local nextPos = (n % #lst + #lst) % #lst
- return nextPos == 0 and #lst or nextPos
- end
- for i, num in ipairs(nums) do
- if num ~= 0 then
- local pos = findPos(i, list)
- local pair = table.remove(list, pos)
- table.insert(list, wrap(pos + num, list), pair)
- end
- end
- for _ = 1, 10 do
- for i, num in ipairs(nums2) do
- if num ~= 0 then
- local pos = findPos(i, list2)
- local pair = table.remove(list2, pos)
- table.insert(list2, wrap(pos + num, list2), pair)
- end
- end
- end
- local zeroInd
- for i, pair in ipairs(list) do
- if pair[1] == 0 then zeroInd = i break end
- end
- print(list[wrap(zeroInd+1000,list)][1] + list[wrap(zeroInd+2000,list)][1] + list[wrap(zeroInd+3000,list)][1])
- for i, pair in ipairs(list2) do
- if pair[1] == 0 then zeroInd = i break end
- end
- 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