首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >位置意识

位置意识
EN

Code Golf用户
提问于 2016-12-21 05:29:26
回答 2查看 869关注 0票数 10

位置感知

您的任务是生成一个程序,为其字符的每一个排列(包括原始程序)输出每个字符相对于原始程序的位置。

如果你的程序是

代码语言:javascript
复制
Derp

你必须输出

代码语言:javascript
复制
[0, 1, 2, 3]

(或类似的)。这是因为D处于0第四位,e位于1st,r为2nd,p3rd。

让我们来看看另一个程序,它是最初的程序,但是它的字符被置换了:

代码语言:javascript
复制
epDr

你必须输出

代码语言:javascript
复制
[1, 3, 0, 2]

因为e位于原始程序的1第一位,p处于3rd位置,D0th,r2nd。

如果原始程序有两个重复字符:

代码语言:javascript
复制
abcda -> [0, 1, 2, 3, 4]

然后,对于排列,数组中的04必须按升序排列:

代码语言:javascript
复制
baadc -> [1, 0, 4, 3, 2] (0 first, then 4)

规则:

  • 您的程序必须至少包含两个唯一字符。
  • 在大多数情况下,floor(n/2)字符是相同的。aabb (可接受) aaaabc (不可接受,只允许地板(6/2)=3a)
  • 程序的输出可以是数组(或类似的),按顺序包含所有字符的位置,也可以是带有任何分隔符的字符串,所以这些都很好:0,1,2,3 0,1,2,3 0 1 2 3
EN

回答 2

Code Golf用户

发布于 2016-12-21 05:35:10

实际上,2字节

代码语言:javascript
复制
10

在网上试试!

这个指纹

代码语言:javascript
复制
0
1

而(仅)其他排列

代码语言:javascript
复制
01

版画

代码语言:javascript
复制
1
0

是如何工作的

实际上,连续的数字是分开解析的,因此10在堆栈上推入1,然后在堆栈上推送0。

当程序完成时,堆栈是从上到下打印的,所以它首先打印0,然后打印linefeed,然后打印1。

derranged程序01按相反的顺序执行相同的操作。

票数 20
EN

Code Golf用户

发布于 2016-12-22 02:17:25

果冻,2字节

代码语言:javascript
复制
;J

在网上试试!

产出:[0, 1]

其他置换J;输出:[1, 0]

的工作方式:

代码语言:javascript
复制
;J
;          Concats 0 with...
 J         [1...len(z)], here just [1]

J;
J          [1...len(z)], here just [1]
 ;         ...Concatted with 0
票数 7
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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