fork download
  1. defmodule Main do
  2.  
  3. IO.puts("Starting")
  4.  
  5. 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]
  6.  
  7. defmodule LoopThroughArray do
  8. def runcommand(list, n) when n >= length(list)-1 do
  9. IO.puts Enum.at(list,0)
  10. end
  11. def runcommand(list, n) do
  12. command = Enum.at(list,n)
  13. p1 = Enum.at(list,n+1)
  14. p2 = Enum.at(list,n+2)
  15. p3 = Enum.at(list,n+3)
  16. v1 = Enum.at(list,p1)
  17. v2 = Enum.at(list,p2)
  18. if (p3 == 0) do
  19. IO.puts "overwriting 0"
  20. end
  21.  
  22. cond do
  23. command == 99 ->
  24. IO.puts Enum.at(list,0)
  25. Enum.at(list,0)
  26. command == 1 ->
  27. vsum = v1+v2
  28. IO.puts "Add #{v1} #{v2} = #{vsum}"
  29. tempList = List.delete_at(list, Enum.at(list,p3))
  30. newList = List.insert_at(tempList, Enum.at(list,p3), vsum)
  31. runcommand(newList, n + 4)
  32. command == 2 ->
  33. vprod = v1*v2
  34. IO.puts "Multiply #{v1} #{v2} = #{vprod}"
  35. tempList = List.delete_at(list, Enum.at(list,p3))
  36. newList = List.insert_at(tempList, Enum.at(list,p3), vprod)
  37. runcommand(newList, n + 4)
  38. true ->
  39. IO.puts "error"
  40. end
  41. end
  42. end
  43. pos0= LoopThroughArray.runcommand(input_program, 0)
  44.  
  45. IO.puts pos0
  46. IO.puts("Finished")
  47. end
  48.  
  49.  
Success #stdin #stdout 0.47s 36076KB
stdin
Standard input is empty
stdout
Starting
Add 1 1 = 2
Add 0 0 = 0
Add 2 1 = 3
Add 1 1 = 2
Multiply 5 0 = 0
Add 2 0 = 2
Multiply 2 2 = 4
Add 1 4 = 5
Add 4 5 = 9
Multiply 2 9 = 18
Add 18 5 = 23
Add 23 3 = 26
Multiply 26 4 = 104
Add 1 104 = 105
Add 105 4 = 109
Multiply 109 2 = 218
Multiply 2 218 = 436
Add 1 436 = 437
Multiply 3 437 = 1311
Add 1311 2 = 1313
Add 2 1313 = 1315
Multiply 1315 3 = 3945
Multiply 3945 5 = 19725
Add 4 19725 = 19729
Add 19729 5 = 19734
Multiply 5 19734 = 98670
Add 98670 4 = 98674
Multiply 98674 4 = 394696
Add 394696 3 = 394699
Add 394699 2 = 394701
overwriting 0
Add 3 394701 = 394704
1
1
Finished