import Foundation /* 0 adv: A / 2^OP -> A 1 bxl: B xor LIT -> B 2 bst: OP % 8 -> B 3 jnz: jump LIT if A != 0 4 bxc: B xor C -> B (ignore op/lit) 5 out: OP % 8 -> screen 6 bdv: A / 2^OP -> B 7 cdv: A / 2^OP -> C adv 1 // A = A / 2 out A // print(A % 8) jnz 0 // loop while A != 0 2,4, 1,1, 7,5, 1,5, 4,0, 5,5, 0,3, 3,0 bst 4 // B = A % 8 bxl 1 // B = B xor 1 cdv 5 // C = A / 2^B bxl 5 // B = B xor 5 bxc 0 // B = B xor C out 5 // print(B % 8) adv 3 // A = A / 2^3 jnz 0 // loop while A != 0 */ // let prog = [2,4, 1,1, 7,5, 1,5, 4,0, 5,5, 0,3, 3,0] //var A = 164279024971709 var A = 164279024971453 var B = 0 var C = 0 while true { B = A % 8 // 1 B = B ^ 1 // 2 C = A >> B // 3 B = B ^ 5 // 4 B = B ^ C // 5 print(B % 8, terminator: ",") A = A >> 3 if A == 0 { break } }