秘密握手

秘密握手

简单

简介

你正和几个朋友以及朋友的朋友一起创办一个秘密编程俱乐部。大家并非都认识彼此,于是你和朋友们决定设计一套秘密握手暗号,用来确认对方是俱乐部成员。你不想让任何不知情的人破解这套代码。

你们设计的方案是:一个人说出 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

如果你不确定二进制是什么,或者它是如何工作的,可以看看[这篇二进制教程][intro-to-binary]。 [intro-to-binary]: https://medium.com/basecs/bits-bytes-building-with-binary-13cb4289aafa

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Delphi Pascal Exercism

准备好开始 秘密握手 了吗?

注册 Exercism,借助 76 个练习 和真人导师指导,学习并掌握 Delphi Pascal,全部免费。