Ik was uiteindelijk op de 151 uitgekomen, en kan nog steeds een loop unrollen maar daar had ik geen zin meer in

Nice. Code? (Ik heb voor #35 een oplossing met 161 stappen met 16 instructies, beiden under par met één oplossing. Ik kan 'm ook met 15 instructies maar dan wordt 'ie iets trager.)
Voor beide bouw ik in feite gewoon een lookup table.
#35 is degene waar je moet filteren op duplicates. Het vervelende is dat je niet kunt indexen op letter, maar je kunt natuurlijk wel twee letters van elkaar aftrekken (en waarom kun je in hemelsnaam geen cijfer bij een letter optellen

). De LUT moet natuurlijk wel passen, maar gelukkig is de input altijd A t/m E, dus je hebt max 5 elementen nodig. Dan heb je alleen nog een referentie-letter nodig. Daarvoor gebruik ik simpelweg de eerste uit de inbox. Omdat dat zowel een A als een E kan zijn werk ik ergens vanuit het midden ('base'), en kopieer ik de letter van base-4 t/m base+4 (dit doe ik omdat je nou eenmaal niet kunt kijken of een plek gevuld is of niet, dus dan heb je wat om mee te vergeljiken). Voor elk volgende input trek ik die van de eerste af, tel er de 'base' bij op en kijk ik vervolgens op die plek of de letter overeenkomt. Zo niet, dan heb ik 'm nog niet gehad en dan plaats ik 'm op die plek en output ik 'm
spoiler:-- HUMAN RESOURCE MACHINE PROGRAM --
COPYFROM 14
COPYTO 13
BUMPUP 13
BUMPUP 13
ADD 13
ADD 13
COPYTO 13
INBOX
COPYTO 2
COPYTO 3
COPYTO 4
COPYTO 5
COPYTO 6
COPYTO 7
COPYTO 8
COPYTO 9
COPYTO 10
OUTBOX
a:
b:
INBOX
COPYTO 12
SUB 6
ADD 13
COPYTO 11
COPYFROM [11]
SUB 12
JUMPZ b
COPYFROM 12
COPYTO [11]
OUTBOX
JUMP a
DEFINE LABEL 6
eJyzY2BgiLVnEb1jf9Ah1v7xluuOuQmTnGNCTrrFhBj7l6Y9Dplc/SA0ofVB6JreJSFmU7OCjs7f6H9u
KZvH7PURjvM3AbUzrM7cm30gUa2zL6Z/mX/M7PWnY5dsdUlYscMk7fn2nMyYDU+zA5Yr5jLMicvzLlPM
tT4G0lMz6WRJaCdHyc32rlKF1pimhy1Gk3x7bq070/N6F19P4f57rdbH1tdD1M6cbzRJav6PqT5L/swo
W2M9I3Pj50ky27R6Lu2818yz51JV7+692ZN2bkldsOV94tc1OzNOLO2vuLBoduO0Ba97pObvnSk133vJ
jfmS6/gXb9jHtML62KsNe48zjIJRMArAAABMn3nN;
DEFINE LABEL 11
eJxzY2BgmGv/KMLGZH6Ym0FqlJDO+8RIzb3ZD9TOlSupKbYtUNswIUZj78wQbfeF3XoBy5mMRFfrWV5b
rWbTv+ymw85pU53W9J5x5Sk/6bY3m9N9Tfwk59SOqU6yG4HGMvxN0ktkTShNmxIlWisbXjhxYaj7wqRQ
0dUPQudvkg1X2x4UvWIHV9zjLVYpR+d/SjOalJN5qyEz63t6ZpZs6LoMI7O8DB7PHSknF+1IiVgLMu9l
Y2Fycd3OjONlITWBxc87pxb+mRFWeHLRpSLR1SwVatuL655v126cv0mu7eCcm+3PO2+231KJ6GBxluhQ
2gLSrzWTpfDddLXOd9OtZ6ycKbtx2SzepY9nnyufN1cr7vY8xYjLC2cHey6dHXx/y5JIhlEwCkYIAAAE
Ynxm;
DEFINE LABEL 12
eJzjY2BgaEngcOOKWxETE57ZrRBWN2thqOS6eWGPt4hG5e45Efd+r3mq3l6gMob4sHvNUhExTUbpMU0M
o2AUjIJhAQDSxxT4;
DEFINE LABEL 13
eJzjY2BgCCwutRApYnHenKbYVplSNX1f0vxNNskb9u1I+XxAK+vzgUc5G/aJFC3Z6lfSv8yvhGX+9QKt
HoZRMApGwbAAAGadGYM;
DEFINE LABEL 14
eJyTZGBgqK62tmkt9/YQLyxMjs5vK5LJj6i/XqDW2Vvyvr+26sfU6R1V09v7Nkyon6jWuWfSrYbfk/or
6idWZYp1XvLZVGdmCTSCIbLgvXFYobXN/sotqcubUjsEuvuX1U/M3Llx2o/DDFjAh2n2J7GJj4JRMAro
CwAcNjCA;
Bij #32 ga ik er gewoon vanuit dat het bord nooit verandert. Je weet dus gewoon hoeveel je van elke letter hebt. Kwestie van een tabelletje vullen, en de input comparen met een van de letters A,B,C en X.
spoiler:-- HUMAN RESOURCE MACHINE PROGRAM --
BUMPUP 14
BUMPUP 14
COPYTO 17
BUMPUP 14
COPYTO 18
BUMPUP 14
COPYTO 15
BUMPUP 14
COPYTO 16
a:
b:
c:
d:
INBOX
COPYTO 19
SUB 1
JUMPZ e
COPYFROM 19
SUB 0
JUMPZ f
COPYFROM 19
SUB 4
JUMPZ g
COPYFROM 18
OUTBOX
JUMP a
e:
COPYFROM 15
OUTBOX
JUMP b
f:
COPYFROM 16
OUTBOX
JUMP c
g:
COPYFROM 17
OUTBOX
JUMP d
DEFINE LABEL 0
eJxTZ2BgOOlWaMrnKugDZDLkBtbZ6QZyuBn7Tw8A8X8ll1qYp4r6b0u9tKIwXa9/XYZRyof0QtMVWUZm
irlmliJFzk6Xik66XSq65DO1cHbw6sw18WnZr+Pu5+olni1pymepEKxyrHzc5lhZOLG1vGluWGHqNvm8
93vVswv352Vs2FeY/nw7yB6Bbln1m+1LIkHsjdP0jI2macUxjIJRMApoDgAcqDtW;
DEFINE LABEL 1
eJyTZ2BgKPe1tin3ZXG29VaLBnIZ4sMYHBaGzg4GsfMy7m3MyxBdrZJztDA6PyZkchGLc3dpv9ehiszY
6uqQmp/VqR0/q3dO+1P1ZwZIvWLu/JaphbcaPMskG0D8k70B3id7IwLPdRulgPjlU446m04V9DGd+hxs
1ygYBaNgYAEApJEtKg;
DEFINE LABEL 2
eJyTZGBgeGTr7LTIlsdzldXzaCCXodeVxbnXVdBHzOl1HIg/JWqH1bH43IS8jOlrEnNPXgCJRUWcWzot
sm3B6sxrtXfzDuZNKM6MBYkvarG2UWtOCAexGSYedGCYeM2fYRSMglEwaAEAg0kifA;
DEFINE LABEL 4
eJyTZGBgCIkyswyPbHOJD7sXCuQy/Ep2dtqdfNLNK+57OohvWH8v9FCFfe6lIrXOsMKd08IK+5cJFl9b
fap09vq9VfM3rW1I3AxSpztjsu/OyWZgPT5LLvn0LVaLnrzwcwrDKBgFo2DQAgATaCes;
DEFINE LABEL 14
eJyTYWBgeJH13lg/o8q6MiXAmynxfSJrwrly1oTZjUyJWj37knZO+5HSNHdZ9qUV0fnXVh8vm76GsVJ0
9Z+q/mXfa5rmrq9XbHvTUJWZ26AVV1rL47m/0trGryTXaEbBCr2czEdaQOMZemLna2yqE1xxr1VrF8Mo
GAWjYFABAEYBMZI;
DEFINE LABEL 15
eJwTZmBgqEx53VOS1pT/NiMhXDHXzFImX89YsiDXqLdkh9XxMmcnxkpBn5/VW1IrapwLLGuu1f6pSu1w
rMztY6l43w/UzmCeWpgcWKyXyDAKRsEoGHIAAOSvHO0;
DEFINE LABEL 16
eJyTZGBg6IndktoTq7fXK06vnysuxK8uabLv11RR/7l5jyJEivQSRYrM0u/meZetzrzVcCw+pokhSbJB
P+NWQ1xeZndkgdGkq4X2s6cWzl4/Oz9z56OcLQdXZzKc2pzWdq4xse3c6di9xxlGwSgYBYMWAABaZy2c
;
DEFINE LABEL 17
eJzjZ2Bg6CgT9IksmOybkhMRWJO8IelYvH1ueOTzztvh1jNiwr2XzAmfvf5GxIodp2P3Hm9MbDpdksZy
NqyQ5SzDKBgFo2DIAwD/xhsB;
DEFINE LABEL 18
eJzjZGBgYE2Y7MuQ9CjCsXLLwdqqg6eAQgw2yWrb5+a9799UV5rGMApGwSgYtgAA0gcNrA;
DEFINE LABEL 19
eJzjY2BgsEr5Y+OUuCKmL0ayQSh6w4SQqIi1QtGPt3TG5e5pSXi/1yold8/mNKUtQKUMbfHeZWnZJ0sY
RsEoGAXDAgAAxbwWfQ;
Van beide kun je waarschijnlijk nog wel wat af schaven (je zou voor #32 een binary search kunnen doen ipv een linear search, haalt het worst case aantal stappen naar beneden).