Skip to content

Instantly share code, notes, and snippets.

@codesections
Created December 10, 2019 00:36
Show Gist options
  • Save codesections/e08110f6392783cc7e8c130e111b4f44 to your computer and use it in GitHub Desktop.
Save codesections/e08110f6392783cc7e8c130e111b4f44 to your computer and use it in GitHub Desktop.
Advent of Code day 9
intcode{
0 0 (i rb) val[0] addr[1]
get{ <0: 'ERR: invalid negative index'
(addr)<(addr):(addr)val
addr, val,0 }
set{ (addr)<(addr):((addr)val)
addr, val, }
instr(10 10 10 10 10)(get i) opcode(10 10)¯2instr p_modes3instr
p{modep_modes[-1]
mode=0:get i+ positional
mode=1:i+ immediate
mode=2:(get i+)+rb relative base
'ERR: Unknown parameter mode',mode}
ival:'ERR: no HALT opcode'
1=opcode:{_(p 3) set ((get p 1)+(get p 2)) ((i+4) rb) intcode val addr}
2=opcode:{_(p 3) set ((get p 1)×(get p 2)) ((i+4) rb) intcode val addr}
3=opcode:{_(p 1) set ((i+2) rb) intcode val addr}
4=opcode:{(get p 1) ((i+2) rb) intcode val addr}
5=opcode:{0(get p 1): ((get p 2) rb) intcode val addr
((i+3) rb) intcode val addr}
6=opcode:{0=(get p 1): ((get p 2) rb) intcode val addr
((i+3) rb) intcode val addr}
7=opcode:{(get p 1)<(get p 2):{_(p 3) set 1 ((i+4) rb) intcode val addr}
{_(p 3) set 0 ((i+4) rb) intcode val addr} }
8=opcode:{(get p 1)=(get p 2):{_(p 3) set 1 ((i+4) rb) intcode val addr}
{_(p 3) set 0 ((i+4) rb) intcode val addr} }
9=opcode:{rb+(get p 1) ((i+2) rb) intcode val addr}
99=opcode:''
'ERR: Unknown opcode',opcode
}
in¨','() ⊃⊃⎕nget '09.input' 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment