回文高尔夫

29
目标:任何语言。返回一个字符串是否为回文的最小函数。这是我用Python写的代码:
R=lambda s:all(a==b for a,b in zip(s,reversed(s)))

50个字符。

被接受的答案将是当前最小的 - 随着发现更小的答案,这将会改变。请指定您的代码所使用的编程语言。


第一个发布PDA的人将获得额外积分。 - Kyle Cronin
请将其设为社区维基可编辑。 - aku
这不是完全的重复!另一个问题并没有要求最小实现。密切相关?是的。重复 - 不是!!! - Jonathan Leffler
我们是否关心回文中标点和空格的变化通常是允许的?这里的一些解决方案似乎忽略了这一点。 - bmb
http://codegolf.stackexchange.com/ - Marek Grzenkowicz
显示剩余3条评论
50个回答

0

JavaScript: 55个字符

p=function(x){return (x==x.split('').reverse().join())}

上述代码无法正常工作,因为你需要使用""调用join函数。

JavaScript: 55个字符

function p(s){return s==s.split("").reverse().join("")}

0

标准 ML(34个字符且乏味):

fun p s=s=implode(rev(explode(s)))

0

C语言,68个字符,无库:

p(char *s){char *e=s;while(*++e);for(;*s==*--e&&s++<e;);return s>e;}

0

F#: 29个字符

let p(s:string)=s=s.Reverse()

(假设已导入System.Linq)


0

不可能的语言,假设字符串使用普通参数传递:

;~=

3个字符


0

在Python中有58个字符,而不需要反转字符串:

r="y"
for i in range(len(s)):
 if(s[i]!=s[-i-1]):
  r="n"

也许可以优化for循环?我对Python还不熟悉...


0

使用递归lambda函数而不使用Reverse函数的C#代码(115个字符):

Func<string,bool>p=null;p=w=>{if(w.Length<2)return true;return w[0]==w[w.Length-1]&&p(w.Substring(1,w.Length-2));};

0

虽然不是最小的,但我仍然想添加一个条目:

sub p{return @_==reverse split//;}

我对Perl有点生疏,而且这还没有经过测试。


不起作用:== 强制标量上下文,将 @_ 转换为其长度。更不用说 split 操作 $,而非 @. - ephemient

0

Java,不使用反转:

boolean p(String s){int i=0,l=s.length();while(i<l){if(s.charAt(i++)!=s.charAt(--l))l=-1;}return l>=0;

-1

乔希的Java片段将每次返回true。


4
这些评论并没有回答原始请求,最好放在评论中。额外的好处是可以通知相关人员... :-) - PhiLho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接