我的货源井井有条,是您的吗?


14

您面临的挑战是编写一个程序,函数等,以计算所传递的字符串是否“按顺序”。这意味着字符串的字符具有从最小到最大的顺序的字符代码。最小的字符代码必须是第一个。我的意思是最低的unicode代码点到最高的。使用哪种代码页都没有关系。

如果输入是“按顺序”,则必须返回一个值,否则输入另一个值。这些值必须是不同的,但是对输出值没有其他限制。例如,你可以打印/返回/输出true!1AQaq¡±(按顺序),并falseaq!QA。这两个不同的值不必是真实的或虚假的或类似的东西,只需两个不同的值即可。重复的字符串(例如aa)是按顺序排列的。

您只需要支持unicode U+007E~)(ASCII 126)

但是,程序的字符本身必须是有序的。祝你好运,


您不需要真实/虚假的价值观吗?两个真理会起作用吗?
Rɪᴋᴇʀ

另外,最小的字符代码是否总是在第一个字符处?还是可以逆转?
Rɪᴋᴇʀ

12
老实说,对于这种受限来源而言,代码高尔夫似乎是一个糟糕的获胜条件。大多数独特字符的代码保龄球会更有趣。
fəˈnɛtɪk

1
@Pavel Pop缺点无法以特定方式完成特定任务。
丹尼斯

2
是按顺序重复字符串?例如,是"aa"为了秩序?
tsh

Answers:


14

Brachylog,2个字节

.o

在线尝试!

说明

.o
.   Assert that {the input} equals the output of the last command in the program
 o  Sort {the input}

作为一个完整的程序,断言失败给出false.,任何不违反任何断言的成功运行都会给出true.


9

果冻,2个字节

Ṣ⁼

在线尝试!

说明

Ṣ⁼
Ṣ    Sort {the input}
 ⁼   Compare that to {the input} for equality of the whole structure

⁼Ṣ 也具有正确的功能(“将输入与已排序的输入进行比较”),因此这只是一种情况,自己运行两个程序以确定顺序是正确的(我当然没有这部分的Unicode代码点记住果冻的怪异角色集)。


您提交的内容在Jelly编码中是错误的,必须⁼Ṣ改为。您可以在此处查看Jelly的代码页。
Erik the Outgolfer '17

@EriktheOutgolfer很容易解决;⁼Ṣ与完全相同Ṣ⁼
steenbergh

@steenbergh目前,此提交无效。尽管此修复程序很容易,但尚未应用,不鼓励其他人编辑代码。
Erik the Outgolfer '17

1
@EriktheOutgolfer关于此答案的讨论主要是关于使用哪个代码页:挑战引用了Unicode(尽管没有明确告诉我们使用它),而Jelly有自己的代码页。无论结果如何,解决这个问题都是微不足道的。因此,我最多不会将此答案称为“无效”-我什至不会在当前状态下对其投票。
steenbergh

@steenbergh我也没有投票,我只是通知了ais523 :)
Outgolfer的Erik

9

MATL,5个字节

GGS\a

0如果输入正确,则输出,1否则输入。

在线尝试!

说明

这将计算输入中每​​个字符(在其代码点处)的模数,并在已排序的输入中使用相同索引处的模数。当且仅当所有结果均为时,输入才是有序的0

例如,考虑输入字符串BCD!。排序得到'!BCD。代码点的数组分别是[66 67 68 33][33 66 67 68]。计算模量为[0 1 1 33],因此输入顺序不正确。请注意,0即使值不相同(此处发生在第一个位置),结果也可能是怎样的,但是除非输入顺序正确,否则不会在所有条目中发生。

G     % Push input string
GS    % Push input string and sort it
\     % Modulus, element-wise. This gives all zeros iff the input was in order
a     % Any: gives 1 if any entry is non-zero. Implicitly display

8

05AB1E3 2字节

感谢Kevin削减了我33%的源代码!

在线尝试!

说明:

      There used to be a D here for 'Duplicate stack' 
      but we now use the same input twice implicitly
 {    Sort the copy
  å   Check if the sorted copy is a substring of the original
      This will only return 1 if the original input is sorted, 0 otherwise.

D{Q也适用...
尼尔A.

1
@NeilA。它可能会执行相同的操作,但是字符顺序不正确。要求是您的源代码通过与数据相同的测试。这应该产生1
steenbergh

1
D可以为-1仅通过使用隐式输入两次除去。
凯文·克鲁伊森


5

2sable,2个字节

在线尝试!

说明

{    # sorted input
 Ê   # not equals (implicit input)

如果为order,则输出0,否则为1


1
@steenbergh:啊,错过了那部分挑战。
Emigna

1
@steenbergh:固定!幸运的是,我们可以输出任何不同的值:)
Emigna

2

Pyth,2个字节

<S

False表示已排序,True表示未排序。

测试套件

提出来这是相当不平凡的。在没有限制来源的情况下,此问题最明显的解决方案是SI排序不变。但这还没有排序。然后我想到了qS,它隐式地使用输入变量两次,检查它是否等于其排序后的self。但同时q < sq > S,所以这也不能工作。但是<先于S,排序后的版本不能小于原始版本的唯一方法是对原始版本进行排序,因为排序后的版本是元素在字典上的最小排列。


1

CGL(CGL高尔夫语言),4字节(非竞争)

-:Sc

说明:

- Decrement the stack counter so the current stack is where input is put
: Split the first element of the current stack (input) into an array of single strings, make that the next stack, and increment the stack counter
S Sort the current stack
c Compare the current stack and the one before, push that to the next stack and increment the stack counter
(implicit) Output the first element of the current stack, true if in order, false if not.

非竞争,因为:Sc创建这个挑战后实施。


是否有证据证明这种语言是在挑战之前创建的?
user41805 '17

@KritixiLithos是的,从技术上讲,它是一种有效的语言,但是我将使它不具有竞争力,因为完成此操作所需的功能是在挑战之后完成的。CGL仍在开发中,我正在使用挑战向我展示应该添加哪些新功能。
程序员
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.