[问题] 暂存器指令

楼主: buffalobill (水牛比尔)   2020-10-30 15:56:53
puzzleUp风味题 Vol.18
等待真puzzleUp出题中
【暂存器指令】
你有一个CPU
具有两个暂存器R1,R2,初始值为1,2
该CPU有三种指令:
op A: 令R1的值为R1+R2,同时令R2的值为R1-R2(取绝对值)
op B: 若R1的值为偶数,则令其为R1/2,否则,令其为R1*3+1
op C: 将R1与R2的值互换
你要用最简短的指令使R1成为99
问该指令为?
例:若要使R1成为39,指令为ABACBA
OP R1 R2
1 2
A 3 1
B 10 1
A 11 9
C 9 11
B 28 11
A 39 17
写了一个模拟器,欢迎大家使用
https://buffalobill.idv.tw/Public/Misc/registerOp/
感觉只要调整指令跟暂存器数目
题目可以千变万化~
作者: LPH66 (-6.2598534e+18f)   2020-10-31 15:03:00
不管怎样先凑一组出来: ACBBCBBACBCBBBBACBBBBCBA.....可恶, 程式跑出结果来之后才发现盲点 XD不过果然这条路线是对的, 很多中间过程都很恰巧是要的型式就先不破梗给其他人挑战好了
作者: EIORU   2020-11-02 12:39:00
不小心的 ABABABBBBAABBABACBABABA 99/65
楼主: buffalobill (水牛比尔)   2020-11-02 15:24:00
BACBABABA 正解不用C的话最短是ABABABBBBBBBA跟ABABBBBBBBABA
作者: DreamYeh (天使)   2020-11-03 00:13:00
这题好棒!
作者: LPH66 (-6.2598534e+18f)   2020-11-03 04:36:00
是说, 因为 CA = A 和 CC = nop, C 后面只有 B 有意义所以是可以利用 B 和 CB 只有作用参数不同来凑那我的盲点就是选的起始组没注意到是可以 BABA 结尾的 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com