您和一些朋友以及朋友的朋友成立了一个秘密编码俱乐部。并不是每个人都互相认识,所以你和你的朋友们决定创建一个秘密握手方式,用来识别某个人是否是会员。你们不想让不了解情况的人破解这个密码。
你们设计了这样一个密码:一个人说出 1 到 31 之间的数字,另一个人将其转换成一系列动作。
指令
你的任务是将 1 到 31 之间的数字转换成秘密握手中的一系列动作。在将数字转换成二进制后,通过查看数字最右边的五位数来选择动作序列。从最右边的数字开始向左移动。
每个数字位的操作如下
00001 = wink
00010 = double blink
00100 = close your eyes
01000 = jump
10000 = 反向排列秘密握手的操作顺序。
例子
- 我们以数字 9 为例:
9 的二进制数是 1001。
最右边的数字是 1,所以第一个动作是眨眼。
再向左,下一个数字是 0,所以没有双眨眼(wink)。
再向左,下一位数字是 0,所以睁眼。
再向左,下一位数是 1,所以你要跳(jump)。
这是最后一位数,所以最终输出的动作顺序是:
wink, jump
- 给定数字 26,二进制为 11010,我们可以得到以下动作:
双闪
跳转
反向动作
因此,26 的秘密握手动作的最终输出的动作顺序是
jump, double blink代码
Julia代码
function secret_handshake(code)
# 检查输入参数。如果在设计范围之外,抛出异常
if code > 31 || code < 1
throw(BoundsError())
end
# 设置掩码组
masks = [0b0001, 0b00010, 0b00100, 0b01000, 0b10000]
# 设置握手动作组
expressions = ["wink", "double blink", "close your eyes", "jump"]
# 按照题意决定动作顺序存入变量结果变量
result = []
for i in 1:5
if code & masks[i] !== 0
if i === 5
reverse!(result)
else
push!(result, expressions[i])
end
end
end
return result
end知识点
- 定义函数
- 异常抛出
- 定义变量和赋值
- 数组定义
- 数组操作:逆序;增加元素
- 循环语句
- 判断语句
- Julia的“范围”类型
- 数的逻辑与操作
,

















