首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上下文中的标题关键字

上下文中的标题关键字
EN

Code Golf用户
提问于 2015-11-27 16:34:04
回答 2查看 252关注 0票数 10

此挑战基于D. Parnas,关于将系统分解为模块的标准中描述并在J. Morris,函数式语言的实程序设计中阐述的一个问题。

编写一个程序或函数,该程序或函数以合理、方便的格式为您的语言提供一个从stdin或作为参数的书名列表。例如,

代码语言:javascript
复制
Green Sleeves
Time Was Lost

代码语言:javascript
复制
("Green Sleeves";"Time Was Lost")

stdout返回或打印按字母顺序排列的关键字列表,通过在角大括号(<>)中封装每个关键字,在原始标题中显示它们的上下文。与输入一样,输出可以采用合理的格式,方便您的语言--换行符分隔行、字符串列表等:

代码语言:javascript
复制
<Green> Sleeves
Time Was <Lost>
Green <Sleeves>
<Time> Was Lost
Time <Was> Lost

标题将由一系列由单个空格分隔的关键字组成。关键字将只包含字母字符。关键字将被排序为词典学。标题将是唯一的,关键字将是唯一的在每个标题,但相同的关键字可能存在于几个标题。如果一个关键字存在于多个标题中,则输出应该以任意顺序列出每个外观。例如,考虑到这种输入:

代码语言:javascript
复制
A Dugong
A Proboscis

一个有效的输出是:

代码语言:javascript
复制
<A> Proboscis
<A> Dugong
A <Dugong>
A <Proboscis>

或者:

代码语言:javascript
复制
<A> Dugong
<A> Proboscis
A <Dugong>
A <Proboscis>

这是密码-高尔夫- -胜利者是以字节为单位的最短解。标准的漏洞是不允许的。

EN

回答 2

Code Golf用户

发布于 2015-11-27 18:19:16

杰夫特,55字节

也许可以缩短一些,但我不知道怎么.

代码语言:javascript
复制
P+UqR £XqS m_+S+X) q', n £Xs1+XbS)rXs0,XbS),@"<{X}>")qR

是如何工作的

代码语言:javascript
复制
P+UqR m@XqS m_+S+X) q', n m@Xs1+XbS)rXs0,XbS),@"<{X}>")qR
          // Implicit: U = input string, S = a space, P = empty string
UqR m@    // Split input at newlines, then map each item X to:
XqS m_    //  X split at spaces, with each item Z mapped to:
+S+X)     //   Z + a space + X.
P+   q',  // Parse the result as a string, and split at commas. Due to JS's default
          // array-to-string conversion (joining with commas), this flattens the array.
n         // Sort the result lexicographically.
m@Xs1+XbS // Map each item X to everything after the first space,
rXs0,XbS  // replacing the original keyword with
@"<{X}>"  // "<" + keyword + ">".
qR        // Join the result with newlines.
          // Implicit: output last expression
票数 2
EN

Code Golf用户

发布于 2015-11-27 18:37:50

Haskell,113个字节

代码语言:javascript
复制
import Data.List
g l=[(m,h++('<':m++['>']):t)|(h,m:t)<-zip(inits l)$tails l]
f=map(unwords.snd).sort.(>>=g.words)

用法示例:f ["Green Sleeves","Time Was Lost"] -> ["<Green> Sleeves","Time Was <Lost>","Green <Sleeves>","<Time> Was Lost","Time <Was> Lost"]

票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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