首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >游程编码

游程编码
EN

Code Golf用户
提问于 2011-02-18 08:18:14
回答 12查看 2.7K关注 0票数 19

编写一个程序,使用游程编码来缩短它必须读取的非负整数的列表。

您可以假设非负整数可以适合32位有符号整数。

输入格式

第一行列表的长度( n )。

在第二行,表示整数列表的空格分隔的整数列表.

输出格式

空格分隔的整数列表。前两个整数代表第一次运行,接下来的两个整数表示第二次运行,依此类推。对于代表运行的每一对整数,第一个整数表示运行的长度,第二个表示运行中整数的值。

样本输入

1.

代码语言:javascript
运行
复制
5
1 1 3 2 2

2.

代码语言:javascript
运行
复制
3
1 1 1

样本输出

1.

代码语言:javascript
运行
复制
2 1 1 3 2 2

2.

代码语言:javascript
运行
复制
3 1

限制

代码语言:javascript
运行
复制
0<n<10000
EN

回答 12

Code Golf用户

发布于 2011-02-20 15:59:14

Python-92

这里是我的尝试,这主要是我在发布这个问题之前所做的,尽管出于某种原因,我使用的是文字空间,而不是逗号。

代码语言:javascript
运行
复制
from itertools import*
r=raw_input
r()
for k,g in groupby(r().split()):print len(list(g)),k,
票数 3
EN

Code Golf用户

发布于 2011-07-28 18:28:47

Scala-136

代码语言:javascript
运行
复制
def f(s:Seq[_]):String=if(s.isEmpty)""else{val(l,r)=s.span(s.head==);l.size+" "+s.head+" "+f(r)}
readLine
println(f(readLine split' '))
票数 3
EN

Code Golf用户

发布于 2011-07-29 13:03:47

Scala -101个字符

这是基于regex解决方案的。实际上,我不知道这在Java中是有效的正则表达式!(Scala的regex是基于Java的)

代码语言:javascript
运行
复制
print("(\\d+)( \\1)*".r.replaceAllIn({readLine;readLine},m=>(m.matched split' 'size)+" "+m.group(1)))
票数 3
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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