鉴于以下投入:
n
,其中n > 0
。s
,其中s
不为空,s~=[0-9A-Z]+
(仅为α-数字大写)。使用标准、简化的QWERTY键盘(如下所示):
1234567890
QWERTYUIOP
ASDFGHJKL
ZXCVBNM
执行以下操作:
n
的原始位置+ n. ,用正确的移位等价替换该字母。s="AB"
和n=2
:A
会变成D
,B
会变成M
。keyboard_row[position + n] > keyboard_row.length
,请回到起点。s="0P"
和n=2
:0
会变成2
,P
会变成W
。f("0PLM",1) = 1QAZ
f("ZXCVB",2) = CVBNM
f("HELLO",3) = LYDDW
f("0PLM",11) = 1QSV
f("0PLM",2130) = 0PHX
这比乍一看要困难一些。
发布于 2018-02-05 14:01:33
ØQØDṭ,ṙ€¥⁸F€y
ØQØDṭ,ṙ€¥⁸F€y Main link. Left argument: n (integer). Right argument: s (string)
ØQ Qwerty; set the return value to
["QWERTYUIOP", "ASDFGHJKL", "ZXCVBNM"].
ØD Digits; yield "0123456789".
ṭ Tack, yielding ["QWERTYUIOP", "ASDFGHJKL", "ZXCVBNM", "0123456789"].
¥⁸ Call the two links to the left as a dyadic chain, with right
argument n.
ṙ€ Rotate each string in the array n units to the left.
, Yield the pair of the unmodified and the rotated string array.
F€ Flatten each, mapping, e.g., ["QWERTYUIOP", ..., "0123456789"] to
"QWERTYUIOPASDFGHJKLZXCVBNM0123456789".
y Translate s according to the mapping we've built.
发布于 2018-02-05 14:43:31
https://codegolf.stackexchange.com/questions/154922
复制相似问题