受画一个时间线的启发。
给定事件的时间线,输出每个事件的日期。
时间线将在表格中给出。
2000
--AF-C-------E--D---B--其中第一行显示一个已知的时间点。已知年份总是低于已知年份的第一个数字的字符。
你可以假设:
A和最远的字符之间的每个字符都存在。您应该编写一个程序,该程序采用这种形式的时间线,并按顺序输出关键日期(A、B、C、D.)
您可以以方便的形式输出,但必须以给定的格式输入。
测试用例:
2000
--AF-C-------E--D---B--
[1998, 2016, 2001, 2012, 2009, 1999]
10
--C-AB--D
[9, 10, 7, 13]
0
--ABCDEFG--
[-3, -2, -1, 0, 1, 2, 3]
5
--ABCDEFG--
[-3, -2, -1, 0, 1, 2, 3]发布于 2016-02-29 07:57:26
将输入作为小写字母,而不是大写字母。
VS@GJw+-sz/zdxJN发布于 2016-02-22 21:33:03
(a,b,r=[])=>[...b].map((x,i)=>r[parseInt(x,36)-10]=+a+i-a.search`\\d`)&&r测试
f=(a,b,r=[])=>[...b].map((x,i)=>r[parseInt(x,36)-10]=+a+i-a.search`\\d`)&&r
console.log=x=>O.textContent+=x+'\n'
;[[' 2000','--AF-C-------E--D---B--'],
[' 10','--C-AB--D'],
[' 0','--ABCDEFG--'],
[' 5','--ABCDEFG--']]
.forEach(t=>{
var a=t[0],b=t[1],r=f(a,b)
console.log(a+'\n'+b+'\n'+r+'\n')
}) <pre id=O></pre>发布于 2016-02-22 20:52:21
V+r\AJeSKwJ+xKN-izT/zd不,我在发布挑战之前没有写过这篇文章。
解释:
- autoassign z = input()
+r\AJeSKwJ - create range of letters
Kw - autoassign K = input()
eS - sorted(K)[-1] (get the biggest character)
J - autoassign J = ^
r\A - range("A", ^)
+ J - ^ + J
V - for N in ^: V
-izT/zd - Get the number at the start
izT - int(z, 10)
- - ^-V
/zd - z.count(" ")
+ - V+^
xKN - K.index(N)在这里试试
https://codegolf.stackexchange.com/questions/73860
复制相似问题