De grap is dan wel weer dat als je alle instructies hebt uitgevoerd in de initiële run, het mogelijk is om met 1 iteratie door de instructies vast te stellen welke wijziging er voor zorgt dat het programma eindigt. Je hebt dan 2 gevallen:bakkerjangert schreef op dinsdag 8 december 2020 @ 13:07:
In de opdracht staat duidelijk aangegeven dat je uit de loop moet ontsnappen door een enkel instructie te wijzigen. Als je een instructie wijzigt buiten je originele loop zal dat geen effect hebben (want die roep je nooit aan) en kun je dus direct overslaan. Wel mee eens dat de optimalisatie niet groot en zelfs 0 zou kunnen zijn.
- De laatste instructie in de lijst is een jmp, en moet een nop worden
- Een nop veranderen in een jmp springt uit het programma
Het meest efficiënte wat ik nu kan bedenken:
- Neem alle uitgevoerde instructies
- Check voor alle uitgevoerde instructies of wisselen leidt naar een onuitgevoerde instructie. Indien niet zo, negeer deze
- Voer de programma's met de resterende wissels uit. Dat zijn er hooguit ½n vanwege de check hiervoor.