祕密握手

祕密握手

中等

簡介

你和幾個朋友,還有朋友的朋友,正要一起成立一個祕密的程式設計社團。 由於不是每個人都彼此認識,你和朋友們決定設計一套祕密握手暗號,用來辨認對方是不是社團的一員。 你不希望任何不知情的人有辦法破解這套暗號。

你們把暗號設計成這樣:其中一個人說出 1 到 31 之間的數字,另一個人再把它轉換成一連串的動作。

說明

你的任務是將 1 到 31 之間的數字轉換成祕密握手的一連串動作。

這串動作是根據數字轉成二進位後,最右邊的五個位數來決定。 從最右邊的位數開始,往左移動。

每個數字位置對應的動作如下:

00001 = wink
00010 = double blink
00100 = close your eyes
01000 = jump
10000 = Reverse the order of the operations in the secret handshake.

我們用數字9當例子:

  • 9 的二進位是1001。
  • 最右邊的位數是 1,所以第一個動作是wink。
  • 往左看,下一個位數是 0,所以沒有 double blink。
  • 再往左看,下一個位數是 0,所以眼睛保持張開。
  • 再往左看,下一個位數是 1,所以你要 jump。

那是剛才最後一個位數,所以最終的暗號是:

wink, jump

給定數字 26,其二進位是11010,我們會得到以下動作:

  • double blink
  • jump
  • 反轉動作

因此,數字 26 的祕密握手暗號是:

jump, double blink
Note

如果你不確定二進位是什麼,或它如何運作,請參考這個二進位教學。

輸出格式

將動作序列輸出成以 null 結尾的字串,並以逗號和空格作為分隔符號。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
ARM64 Assembly Exercism

準備好開始 祕密握手 了嗎?

註冊 Exercism,透過 78 個練習 和真人引導來學習並精通 ARM64 Assembly,全部免費。