暫存器指令 - 拼圖

Table of Contents

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/
感覺只要調整指令跟暫存器數目
題目可以千變萬化~

--

All Comments

Callum avatarCallum2020-11-01
不管怎樣先湊一組出來: ACBBCBBACBCBBBBACBBBBCBA
Aaliyah avatarAaliyah2020-11-02
.....可惡, 程式跑出結果來之後才發現盲點 XD
David avatarDavid2020-11-03
不過果然這條路線是對的, 很多中間過程都很恰巧是要的型式
就先不破梗給其他人挑戰好了
Suhail Hany avatarSuhail Hany2020-11-05
不小心的 ABABABBBBAABBA
Barb Cronin avatarBarb Cronin2020-11-06
BACBABABA 99/65
Belly avatarBelly2020-11-08
BACBABABA 正解
Emily avatarEmily2020-11-09
不用C的話最短是ABABABBBBBBBA跟ABABBBBBBBABA
Xanthe avatarXanthe2020-11-10
這題好棒!
Xanthe avatarXanthe2020-11-12
是說, 因為 CA = A 和 CC = nop, C 後面只有 B 有意義
Suhail Hany avatarSuhail Hany2020-11-13
所以是可以利用 B 和 CB 只有作用參數不同來湊
Rae avatarRae2020-11-15
那我的盲點就是選的起始組沒注意到是可以 BABA 結尾的 XD