This solution's encoding was based upon a much faster design. The basic idea for the encoding starts with the idea of binary coded decimals. If the first atom is salt, the remaining four can be split into pairs, and each encodes one metal up to copper. The order of Lead->Iron->Tin->Copper just happened to be what was easiest for me to code. Importantly, this binary-coded metal requires minimal state. You don't have to worry about division or carry bits or any of that nonsense. How to encode the remaining 16 values, though? My breakthrough came when I realized the remaining 16 would all have either silver or gold. When the first atom is fire, the second pair encodes lead/iron/tin/copper as usual. However, the meaning of the first pair changes. One of them indicates whether to create silver or gold, and the other will invert the output if it is fire. These pieces of state get encoded on the output metal itself, allowing the output mechanism to perform the conditional logic. ===== 'NEW SOLUTION 5 (Copy)' ===== 0. salt-salt-salt-salt-salt => Lead-Lead 1. salt-salt-salt-salt-FIRE => Lead-Iron 2. salt-salt-salt-FIRE-salt => Lead-Tin 3. salt-salt-salt-FIRE-FIRE => Lead-Copper 4. salt-salt-FIRE-salt-salt => Iron-Lead 5. salt-salt-FIRE-salt-FIRE => Iron-Iron 6. salt-salt-FIRE-FIRE-salt => Iron-Tin 7. salt-salt-FIRE-FIRE-FIRE => Iron-Copper 8. salt-FIRE-salt-salt-salt => Tin-Lead 9. salt-FIRE-salt-salt-FIRE => Tin-Iron 10. salt-FIRE-salt-FIRE-salt => Tin-Tin 11. salt-FIRE-salt-FIRE-FIRE => Tin-Copper 12. salt-FIRE-FIRE-salt-salt => Copper-Lead 13. salt-FIRE-FIRE-salt-FIRE => Copper-Iron 14. salt-FIRE-FIRE-FIRE-salt => Copper-Tin 15. salt-FIRE-FIRE-FIRE-FIRE => Copper-Copper 16. FIRE-salt-salt-salt-salt => Silver-Lead 17. FIRE-salt-salt-salt-FIRE => Silver-Iron 18. FIRE-salt-salt-FIRE-salt => Silver-Tin 19. FIRE-salt-salt-FIRE-FIRE => Silver-Copper 20. FIRE-salt-FIRE-salt-salt => Lead-Silver 21. FIRE-salt-FIRE-salt-FIRE => Iron-Silver 22. FIRE-salt-FIRE-FIRE-salt => Tin-Silver 23. FIRE-salt-FIRE-FIRE-FIRE => Copper-Silver 24. FIRE-FIRE-salt-salt-salt => Gold-Lead 25. FIRE-FIRE-salt-salt-FIRE => Gold-Iron 26. FIRE-FIRE-salt-FIRE-salt => Gold-Tin 27. FIRE-FIRE-salt-FIRE-FIRE => Gold-Copper 28. FIRE-FIRE-FIRE-salt-salt => Lead-Gold 29. FIRE-FIRE-FIRE-salt-FIRE => Iron-Gold 30. FIRE-FIRE-FIRE-FIRE-salt => Tin-Gold 31. FIRE-FIRE-FIRE-FIRE-FIRE => Copper-Gold