位置意识


10

位置意识

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

如果您的程序是

Derp

你必须输出

[0, 1, 2, 3]

(或一些等效)。这是因为D是在0个位置,e是在1第一,R是2Nd和p所述3次。

让我们采用另一个程序,它是原始程序,但其字符已排列:

epDr

您必须输出

[1, 3, 0, 2]

因为e是在1原始程序的第一位置,p3第三位置,D所述0th,并且r所述2第二。

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

abcda -> [0, 1, 2, 3, 4]

然后为了进行排列,数组中的04必须按升序排列:

baadc -> [1, 0, 4, 3, 2] (0 first, then 4)

规则:

  • 您的程序必须至少包含两个唯一字符。
  • 最多floor(n/2)字符应相同。

     aabb (acceptable)
     aaaabc (not acceptable, only floor(6/2) = 3 a's allowed)
    
  • 程序的输出可以是按顺序包含所有字符位置的数组(或类似的东西),也可以是带有任何定界符的字符串,因此,它们非常好:

    [0, 1, 2, 3]
    0,1,2,3
    0 1 2 3
    

7
我不认为此挑战会提供任何非平凡的解决方案,因为几乎任何长度> =〜5的语言的任何答案都不会成为每种排列的有效程序,更不用说解决当前挑战的程序了。
orlp 2016年

1
@ Qwerp-Derp在沙盒上几乎没人说什么。前一段时间,我在沙盒中待了大约一个月(或大约一个小时)后发布了一个问题。只有当我发布它时,人们才会指出错误,而反对票却下雨了。在我看来,沙盒是没有用的。
伊斯梅尔·米格尔

1
一次,我觉得在这个挑战中,更长的答案会比简短的答案更令人印象深刻。
Wojowu

1
@Wojowu如果可以的话,我可以进行代码保龄球 -最长的程序获胜。
clismique 2016年

1
12R中的程序有效吗?它会简单地打印12,如果排列的话;21
Billywob '16

Answers:


21

实际上,2个字节

10

在线尝试!

此打印

0
1

而(仅)其他排列

01

版画

1
0

怎么运行的

实际上,连续数字是分别解析的,因此101压入堆栈,然后将0压入堆栈顶部。

程序完成时,堆栈从上到下打印,因此先打印0,然后换行,再打印1

重新排列的程序01以相反的顺序执行相同的操作。


1
可以使用的其他语言;严重的是05ab1e,///,2sable。
蓝绿色鹈鹕

规范说数字必须分开。它确实可以在认真地工作,但实际上实际上只是认真地2.0。
丹尼斯

7

果冻,2个字节

;J

在线尝试!

输出: [0, 1]

其他排列J;输出:[1, 0]

怎么运行的:

;J
;          Concats 0 with...
 J         [1...len(z)], here just [1]

J;
J          [1...len(z)], here just [1]
 ;         ...Concatted with 0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.