受到命运多亏的不使用数组而对数字进行排序的启发,但我认为它比SO问题更好地编写了代码。
给定正整数,请对该整数排序。
最低分获胜!
- 从0分开始。
- 每个字符加一分。
- 为您使用的每个数组加20点。
- 为您的代码中的每个多字符字符串加10点。(除了初始输入,只要将其转换为整数而不对其进行任何其他操作即可。)
- 如果程序可以处理的最大位数受程序限制(与机器相反),则加32点。
- 如果您的代码可以根据给定的另一个参数更改排序的方向,则减去10分(无论您要使用什么,例如,降序排序为0,升序排序为1)。
每种语言都不尽相同,但其主旨是避免任何形式的可迭代数字黑客。
例:
输入:52146729
输出:97654221或12245679
笔记:
- 使用您的编程语言提供的任何内置排序功能,但是如果排序功能涉及字符串或数组,则要加分!
- 您可以将解决方案编写为直接接受整数的函数,也可以编写为接受argv,文件或流中的参数并将其转换为整数的程序。只要立即将其转换为整数并丢弃原始char *输入而无需对其进行任何进一步的操作,就不会受到任何惩罚。
- 处罚不仅适用于程序文本中的字符串文字,而且适用于程序功能的任何可能输入或输出字符串或可迭代的部分。例如,JavaScript
String.prototype.split
至少有一个字符串作为输入(this
)和一个数组作为输出,因此使用+30即可。 - 我试图使这些规则指导算法设计的原理,而不是初始/最终I / O(因此请注意#2)。我认为,
int(input())
即使input
的签名说它返回的是字符串,只要该表达式是程序的初始入口点,也不应适用该惩罚。同样,如果程序的最终输出是print(x)
并且x
必须是字符串,则惩罚不适用于最后一个字符串的强制转换操作。话虽如此,我从来没有明确地说过这必须是一个程序或I / O必须来自或离开的地方。接受int
并返回的函数将起作用int
,并且不会遭受这些歧义的困扰。
" "
算作多字符串?一个字符将不被视为“多个” ...