我父母有一个家庭影院设备。遥控器坏了,所以很难在菜单中向右导航。大多数情况下,它不起作用,但一旦起作用,它就会以惊人的速度向右移动。
这显然是令人沮丧的,但最令人沮丧的是,当您想要输入一个电影标题时,需要导航一个如下所示的键盘:
a b c d e f
g h i j k l
m n o p q r
s t u v w x
y z 1 2 3 4
5 6 7 8 9 0
你的任务是以一个电影标题作为输入,并计算输入那个电影标题是多么“令人沮丧”。特定字符串的受挫数是要求从其前面的字母中直接移动的字母数。我们不关心他们有多远,因为如果我们开始向右移动,我们就会立即走到终点,我们不关心上、下、左的运动,因为他们很容易。
例如,如果我们想输入
keyboard
k
免费开始。e
刚好高于k
,所以我们不需要向右移动。y
一直向左,所以不需要向右移动。b
在下一栏的右边,所以我们需要移动到正确的位置。o
在下一篇专栏文章中,所以我们必须向右移动才能到达它。a
回到了第一列,所以我们向左移动到它。r
一直在右边,所以我们就往前走。d
是r
's列左边的两列。需要向右移动的字符是bor
,这意味着这是挫折3。
这是一个密码-高尔夫挑战,因此您的答案将以字节为单位得分,而更少的字节将更好。输入将始终由字母数字字符组成,您可以支持大写字母或小写字母,您只需要支持一个字母。输入永远不会是空的。
keyboard -> 3
2001aspaceodyssey -> 6
sorrytobotheryou -> 8
thinblueline -> 5
blast2 -> 3
发布于 2018-11-24 17:21:15
⁾04yO‘%6<ƝS
一种接受(大写)字符列表的一元链接。
首先,将任何'0'
s替换为'4'
s (因此其余代码将它们视为位于最右边的列中)。然后转换为序数,通过6
添加一个和模块,以获得基于0的列索引。然后比较邻居和is-小于-并总结结果。
⁾04yO‘%6<ƝS - Link: list of characters e.g. "BLAST20"
⁾04 - list of characters = ['0', '4']
y - translate "BLAST24"
O - ordinals [66,76,65,83,84,50,52]
‘ - increment [67,77,66,84,85,51,53]
6 - literal six
% - modulo [ 1, 5, 0, 0, 1, 3, 5]
Ɲ - neighbourly:
< - less than? [ 1, 0, 0, 1, 1, 1 ]
S - sum 4
发布于 2018-11-25 19:36:16
https://codegolf.stackexchange.com/questions/176492
复制相似问题