祕密握手

祕密握手

簡單

簡介

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

你們把暗號設計成這樣:其中一個人說出 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,所以跳一下。

這樣就到最後一個位數了,所以最後的動作組合是:

wink, jump

以數字 26 為例,它的二進位是 11010,我們會得到以下動作:

  • double blink
  • jump
  • reverse actions

所以 26 的秘密握手是:

jump, double blink
Note

如果你不確定二進位是什麼、或它是怎麼運作的,可以看看[這篇二進位教學][intro-to-binary]。 [intro-to-binary]: https://medium.com/basecs/bits-bytes-building-with-binary-13cb4289aafa

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

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

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