defmodule Main do
input_program = [1,0,0,3,1,1,2,3,1,3,4,3,1,5,0,3,2,13,1,19,1,6,19,23,2,23,6,27,1,5,27,31,1,10,31,35,2,6,35,39,1,39,13,43,1,43,9,47,2,47,10,51,1,5,51,55,1,55,10,59,2,59,6,63,2,6,63,67,1,5,67,71,2,9,71,75,1,75,6,79,1,6,79,83,2,83,9,87,2,87,13,91,1,10,91,95,1,95,13,99,2,13,99,103,1,103,10,107,2,107,10,111,1,111,9,115,1,115,2,119,1,9,119,0,99,2,0,14,0]
defmodule LoopThroughArray do
def runcommand(list, n) when n >= length(list)-1 do
end
def runcommand(list, n) do
command = Enum.at(list,n)
p1 = Enum.at(list,n+1)
p2 = Enum.at(list,n+2)
p3 = Enum.at(list,n+3)
v1 = Enum.at(list,p1)
v2 = Enum.at(list,p2)
if (p3 == 0) do
end
cond do
command == 99 ->
Enum.at(list,0)
command == 1 ->
vsum = v1+v2
IO.
puts "Add #{v1} #{v2} = #{vsum}" tempList = List.delete_at(list, Enum.at(list,p3))
newList = List.insert_at(list, Enum.at(list,p3), vsum)
runcommand(newList, n + 4)
command == 2 ->
vprod = v1*v2
IO.
puts "Multiply #{v1} #{v2} = #{vprod}" tempList = List.delete_at(list, Enum.at(list,p3))
newList = List.insert_at(tempList, Enum.at(list,p3), vprod)
runcommand(newList, n + 4)
true ->
end
end
end
pos0= LoopThroughArray.runcommand(input_program, 0)
end
ZGVmbW9kdWxlIE1haW4gZG8KCiAgSU8ucHV0cygiU3RhcnRpbmciKQoKICBpbnB1dF9wcm9ncmFtID0gWzEsMCwwLDMsMSwxLDIsMywxLDMsNCwzLDEsNSwwLDMsMiwxMywxLDE5LDEsNiwxOSwyMywyLDIzLDYsMjcsMSw1LDI3LDMxLDEsMTAsMzEsMzUsMiw2LDM1LDM5LDEsMzksMTMsNDMsMSw0Myw5LDQ3LDIsNDcsMTAsNTEsMSw1LDUxLDU1LDEsNTUsMTAsNTksMiw1OSw2LDYzLDIsNiw2Myw2NywxLDUsNjcsNzEsMiw5LDcxLDc1LDEsNzUsNiw3OSwxLDYsNzksODMsMiw4Myw5LDg3LDIsODcsMTMsOTEsMSwxMCw5MSw5NSwxLDk1LDEzLDk5LDIsMTMsOTksMTAzLDEsMTAzLDEwLDEwNywyLDEwNywxMCwxMTEsMSwxMTEsOSwxMTUsMSwxMTUsMiwxMTksMSw5LDExOSwwLDk5LDIsMCwxNCwwXQogICAgCiAgZGVmbW9kdWxlIExvb3BUaHJvdWdoQXJyYXkgZG8KICAgZGVmIHJ1bmNvbW1hbmQobGlzdCwgbikgd2hlbiBuID49IGxlbmd0aChsaXN0KS0xIGRvCiAgICAgIElPLnB1dHMgRW51bS5hdChsaXN0LDApCiAgIGVuZAoKICAgZGVmIHJ1bmNvbW1hbmQobGlzdCwgbikgZG8KICAgICAgY29tbWFuZCA9IEVudW0uYXQobGlzdCxuKQogICAgICBwMSA9IEVudW0uYXQobGlzdCxuKzEpCiAgICAgIHAyID0gRW51bS5hdChsaXN0LG4rMikKICAgICAgcDMgPSBFbnVtLmF0KGxpc3QsbiszKQogICAgICB2MSA9IEVudW0uYXQobGlzdCxwMSkKICAgICAgdjIgPSBFbnVtLmF0KGxpc3QscDIpCgogICAgICBpZiAocDMgPT0gMCkgZG8KICAgICAgICBJTy5wdXRzICJvdmVyd3JpdGluZyAwIgogICAgICBlbmQKICAgICAgCiAgICAgIGNvbmQgZG8KICAgICAgICBjb21tYW5kID09IDk5IC0+CiAgICAgICAgICBJTy5wdXRzIEVudW0uYXQobGlzdCwwKQogICAgICAgICAgRW51bS5hdChsaXN0LDApCiAgICAgICAgY29tbWFuZCA9PSAxIC0+CiAgICAgICAgICB2c3VtID0gdjErdjIKICAgICAgICAgIElPLnB1dHMgIkFkZCAje3YxfSAje3YyfSA9ICN7dnN1bX0iCiAgICAgICAgICB0ZW1wTGlzdCA9IExpc3QuZGVsZXRlX2F0KGxpc3QsIEVudW0uYXQobGlzdCxwMykpCiAgICAgICAgICBuZXdMaXN0ID0gTGlzdC5pbnNlcnRfYXQobGlzdCwgRW51bS5hdChsaXN0LHAzKSwgdnN1bSkKICAgICAgICAgIHJ1bmNvbW1hbmQobmV3TGlzdCwgbiArIDQpCiAgICAgICAgY29tbWFuZCA9PSAyIC0+CiAgICAgICAgICB2cHJvZCA9IHYxKnYyCiAgICAgICAgICBJTy5wdXRzICJNdWx0aXBseSAje3YxfSAje3YyfSA9ICN7dnByb2R9IgogICAgICAgICAgdGVtcExpc3QgPSBMaXN0LmRlbGV0ZV9hdChsaXN0LCBFbnVtLmF0KGxpc3QscDMpKQogICAgICAgICAgbmV3TGlzdCA9IExpc3QuaW5zZXJ0X2F0KHRlbXBMaXN0LCBFbnVtLmF0KGxpc3QscDMpLCB2cHJvZCkKICAgICAgICAgIHJ1bmNvbW1hbmQobmV3TGlzdCwgbiArIDQpCiAgICAgICAgdHJ1ZSAtPgogICAgICAgICAgSU8ucHV0cyAiZXJyb3IiCiAgICAgICAgZW5kCiAgIGVuZAogIGVuZAogIHBvczA9IExvb3BUaHJvdWdoQXJyYXkucnVuY29tbWFuZChpbnB1dF9wcm9ncmFtLCAwKQogIAogIElPLnB1dHMgcG9zMAogIElPLnB1dHMoIkZpbmlzaGVkIikKZW5kCgo=