首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >爆炸后缀

爆炸后缀
EN

Code Golf用户
提问于 2016-10-15 00:46:53
回答 18查看 1.4K关注 0票数 20

给定一个ASCII字符串,输出它的爆炸后缀。例如,如果字符串是abcde,则有5个后缀,排序从最长到最短:

代码语言:javascript
复制
abcde
bcde
cde
de
e

然后每个后缀都会爆炸,这意味着每个字符被复制的次数与其在该后缀中的索引位置相同。例如,爆炸abcde的后缀,

代码语言:javascript
复制
abcde
12345
abbcccddddeeeee

bcde
1234
bccdddeeee

cde
123
cddeee

de
12
dee

e
1
e

总之,abcde的爆炸后缀是

代码语言:javascript
复制
abbcccddddeeeee
bccdddeeee
cddeee
dee
e

规则

  • 这是密码-高尔夫,所以最短的代码获胜。
  • 输入将由可打印的ASCII字符组成。(这不包括换行符,但包括空格。)
  • 输出将把每个字符串放在一个单独的行上。
  • 每一行都允许使用尾随空格,最后可能会有一个额外的换行符。

测试用例

代码语言:javascript
复制
''

'a'
a

'bc'
bcc
c

'xyz'
xyyzzz
yzz
z

'code-golf'
coodddeeee-----ggggggooooooollllllllfffffffff
oddeee----gggggoooooolllllllffffffff
dee---ggggooooollllllfffffff
e--gggoooolllllffffff
-ggooollllfffff
goolllffff
ollfff
lff
f

's p a c e'
s  ppp    aaaaa      ccccccc        eeeeeeeee
 pp   aaaa     cccccc       eeeeeeee
p  aaa    ccccc      eeeeeee
 aa   cccc     eeeeee
a  ccc    eeeee
 cc   eeee
c  eee
 ee
e
EN

回答 18

Code Golf用户

回答已采纳

发布于 2016-10-15 00:51:57

果冻,5 字节数

代码语言:javascript
复制
ṫJxJY

在网上试试!验证所有测试用例.

是如何工作的

代码语言:javascript
复制
ṫJxJY  Main link. Argument: s (string)

 J     Indices; yield I := [1, ..., len(s)].
ṫ      Tail; get the suffixes of s starting at indices [1, ..., len(s)].
   J   Indices; yield I again.
  x    Repeat. The atom 'x' vectorizes at depth 1 (1D arrays of numbers/characters)
       in its arguments. This way, each suffix t gets repeated I times, meaning
       that the first character of t is repeated once, the second twice, etc.
       If left and right argument have different lengths, the longer one is
       truncated, so I can safely be applied to all suffixes.
    Y  Join, separating by linefeeds.
票数 14
EN

Code Golf用户

发布于 2016-10-15 02:03:26

Python,61字节

代码语言:javascript
复制
f=lambda s,i=0:s[i:]and-~i*s[i]+f(s,i+1)or s and'\n'+f(s[1:])

备选案文63:

代码语言:javascript
复制
f=lambda s,b=1:s and f(s[:-1],0)+s[-1]*len(s)+b*('\n'+f(s[1:]))
票数 7
EN

Code Golf用户

发布于 2016-10-15 06:26:41

布氏对数,17字节

代码语言:javascript
复制
@]Elyk:Erz:jac@w\

在网上试试!

解释

代码语言:javascript
复制
@]E                 E is a suffix of the Input
   lyk              The list [0, ..., length(E) - 1]
      :Erz          The list [[0th char of E, 0], ..., [Last char of E, length(E) - 1]]
          :ja       For all elements of that list, concatenate the Ith char I times to itself
             c      Concatenate the list into a string
              @w    Write followed by a line break
                \   False: backtrack to another suffix of the Input
票数 6
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/96271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档