首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将一组数字重新排列成顺序

将一组数字重新排列成顺序
EN

Code Golf用户
提问于 2015-05-10 18:31:04
回答 8查看 1.1K关注 0票数 8

问题

给定一组9个数字,m[]以随机顺序只包含数字1到9,没有两个数字是相同的,它用任何一种语言创建一个程序,该程序将数字顺序(1、2、3等)重新排列。只需交换两个相邻的数字(如。1,3,2→1,2,3)。

规则

  • 您只能通过切换彼此相邻的两个数字来修改集合。
  • 结束号(按顺序从1到9)应包含在m[]中。
  • 你可以用任何你想用的语言
  • 最小字节数的答案获胜。

编辑:

您的代码不必打印输出,但是重新排列的数组必须在m[]中。

EN

回答 8

Code Golf用户

发布于 2015-05-10 19:02:49

Mathematica,38个字节

代码语言:javascript
复制
#//.{a___,b_,c_,d___}/;b>c:>{a,c,b,d}&

这是一个未命名的函数,它接受一个数组,它应用一个替换规则,直到无法再找到模式。该模式是一个列表,其中包含两个连续的元素bc,其中有b > c,并且规则要求交换bc,但在其他情况下保持数组不动。

这里有很多语法糖,但是如果您知道一点Mathematica的话,代码实际上是非常可读的:

代码语言:javascript
复制
# //. {a___,b_,c_,d___} /; b>c :> {a,c,b,d} &
^  ^     ^   ^          ^      ^            ^
|  |     |   |          |      |            |
|  |     |   | Declares an unnamed function |
|  |     |   |          |      |
| The function's argument      |
   |     |   |          |      |
   | Replace while possible... |
         |   |          |      |
         | Zero or more list elements.
             |          |      |
             | A single list element
                        |      |
                        | A condition for the pattern
                               |
                               | What to replace the pattern with
票数 9
EN

Code Golf用户

发布于 2015-05-10 19:22:27

Python 3,72字节

代码语言:javascript
复制
from random import*
while m!=sorted(m):p=randrange(8);m[p:p]=m.pop(p+1),

博戈肖特 (也就是愚蠢的排序)方法:随机交换邻居元素,直到数组被排序。通常不到一秒。

2字节,这要归功于@xnor。

票数 9
EN

Code Golf用户

发布于 2015-05-11 08:15:23

Python 2,45

代码语言:javascript
复制
for i in range(8)*8:m[i:i+2]=sorted(m[i:i+2])

在列表周围循环,对连续的元素对进行排序。索引i通过0,1,2,3,4,5,6,7循环8次,这保证了所有元素都会冒泡并对列表进行排序。

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

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

复制
相关文章

相似问题

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