I'm laying in bed. I think about how the values in the input/output lists are all in the range 0-7, and wonder if the AOC taskmaster wants us to be thinking of them as an octal number.
I think about "comparing" lists. I realize I don't know which end to compare from. I make a decision. I get up and start doing a *manual* binary search. Why not?
I quickly find the numbers don't behave the way I hoped. Most numbers I pick turn into long strings of 4s, for some reason.
But.

![Register A: [THIS IS THE NUMBER I'M TRYING TO FIND]
Register B: 0
Register C: 0
Program:
0 2,4 B = A % 8
1 1,1 B = B xor 1
2 7,5 C = A / (1 << B)
3 1,5 B = B xor 5 [0b101]
4 4,1 B = B xor C
5 5,5 output( B )
6 0,3 A = A / 8
7 3,0 if ( A > 0 ) goto 0](https://pool.jortage.com/slimeglobal/cache/media_attachments/files/117/472/015/006/904/565/small/d01f80b898c63ac5.png)





![let new = for [0..7] (\i => shiftL (the Bits64 1) (cast i))
"cast i" is highlighted saying that i (0..7) is an integer and "cast i" needs a Fin 64](https://pool.jortage.com/slimeglobal/cache/media_attachments/files/117/479/240/115/939/135/small/3667ebba9a07d4be.png)