编辑:如果您正在使用Lisp,我在计数字节的底部给出了一些准则。
目标:做最短的函数,将一个字符串拆分为非数字,并返回每个字符串中仅包含数字的数组,而无需使用任何正则表达式。每个字符串中应包含前导零。
当前排名(按类别划分):
- C / C ++ / C#/ Java: 68(C)...。
- GolfScript / APL / J: 13(APL)
- 所有其他: 17(重击,使用
tr
),24(红宝石)
规则:
(冗长的道歉)
- 格式必须是带有单个字符串参数的函数。如果需要正确返回数组,最多可以添加两个附加参数(例如,sh / csh / DOS Batch需要一个额外的变量引用才能返回等)。
- 主要函数声明不计算在内,也不会导入其他标准库。“ #include”,“ import”和“ using”不计算在内。其他一切都做。这确实包括#define和辅助函数。对困惑感到抱歉。将此作为有用的指南,以了解哪些内容不算(用C样式语法编写)
//不计入总数,除非可以省略 //不明显,就像Java标准库的一半一样。 #include <stdio.h> import some.builtin.Class //不算,见上文 #define printf p //计入总数 / *任何其他预处理指令等。* / int i = 0; //计数 someFunction(); //计数 char [] [] myMainSplitFunction(char [] [] array){//不计算在内 //这里的一切都很重要 return returnArray; //即使这很重要。 } //不算在内 / *此处的所有内容都很重要,包括声明* / char [] [] someHelperFunction(char [] string){ // 东西 } //即使如此
- 输出必须是字符串数组或类似的字符串(可接受Java和类似的数组列表)。接受的输出的示例:
String[]
,char[][]
,Array
,List
,和Array
(对象)。 - 该数组必须仅包含可变长度的字符串基元或字符串对象。返回中不得包含空字符串,但以下情况除外。注意:字符串包含连续匹配的字符串,例如下面的示例输入和输出。
- 如果没有匹配项,则函数主体应返回
null
,空数组/列表或包含空字符串的数组/列表。 - 不允许外部库。
- DOS行尾计为一个字节,而不是两个字节(已经在meta中覆盖,但需要强调)
- 这是最大的规则:不允许使用正则表达式。
这是一个代码高尔夫球问题,因此以最小的大小为准。祝好运!
以下是一些示例输入和输出(带有C型转义符):
输入:“ abc123def456” 输出:[“ 123”,“ 456”] 输入:“ aitew034snk582:3c” 输出:[“ 034”,“ 582”,“ 3”] 输入:“ as5493tax54 \\ 430-52@g9.fc” 输出:[“ 5493”,“ 54”,“ 430”,“ 52”,“ 9”] 输入:“ sasprs] tore \“ re \\ forz” 输出:null,[],[“”]或类似内容
请输入答案使用的字节数,一如既往地快乐打高尔夫球!
Lisp准则
以下是Lisp方言中的计算和不计算的内容:
;;; 选项1 (defun extract-strings(ab);不算 (东西) ;;; 这里的一切都很重要 ); 不算 ;;; 选项2 (defun extract-strings(字符串&aux(开始0)(结束0));不计算 (东西) ;;; 这里的一切都很重要 ); 不算在内。所有其他lambda完全计入字节数。