Cla*_*diu 29 code-golf palindrome rosetta-stone
目标:任何语言.最小的函数,它将返回一个字符串是一个回文.这是我的Python:
R=lambda s:all(a==b for a,b in zip(s,reversed(s)))
Run Code Online (Sandbox Code Playgroud)
50个字符.
接受的答案将是当前最小的答案 - 当发现较小的答案时,这将会改变.请指定您的代码所在的语言.
Jim*_*mmy 49
J中有7个字符:不确定这是不是最好的方式,我对J有点新:)
p=:-:|.
Run Code Online (Sandbox Code Playgroud)
解释:|.反转输入. - :比较.操作数是隐含的.
p 'radar'
1
p 'moose'
0
Run Code Online (Sandbox Code Playgroud)
Men*_*boy 42
这是我的; 它是用我发明的特定领域语言编写的,叫做'回文'.
p
Run Code Online (Sandbox Code Playgroud)
编辑:不太轻浮的版本(i386 asm,AT&T语法)
xor %eax, %eax
mov %esi, %edi
#cld not necessary, assume DF=0 as per x86 ABI
repne scasb
scan:
dec %edi
cmpsb
.byte 0x75, 6 #jnz (short) done
dec %edi
cmp %esi, %edi
.byte 0x72, -9 #jb (short) scan
inc %eax
done:
Run Code Online (Sandbox Code Playgroud)
16个字节,字符串指针在ESI中,结果在EAX中.
Joe*_*e Z 37
可悲的是,我无法理解千言万语......
(LabVIEW.是的,他们会在这里发布任何流浪汉帖子;)
ADE*_*Ept 29
Haskell,15个字符:
p=ap(==)reverse
Run Code Online (Sandbox Code Playgroud)
更易读的版本,16个字符:
p x=x==reverse x
Run Code Online (Sandbox Code Playgroud)
Ode*_*ode 12
使用C#和LINQ运算符:
public bool IsPalindrome(string s)
{
return s.Reverse().SequenceEqual(s);
}
Run Code Online (Sandbox Code Playgroud)
如果你把Reverse视为作弊,你可以通过减少来完成整个事情:
public bool IsPalindrome(string s)
{
return s.Aggregate(new StringBuilder(),
(sb, c) => sb.Insert(0, c),
(sb) => sb.ToString() == s);
}
Run Code Online (Sandbox Code Playgroud)
Rob*_*ble 10
Perl(27个字符):
sub p{$_[0]eq reverse$_[0]}
Run Code Online (Sandbox Code Playgroud)
Ruby(24个字符):
def p(a)a==a.reverse end
Run Code Online (Sandbox Code Playgroud)
73清洁,可读,用java编写的字符
boolean p(String s){return s.equals(""+new StringBuffer(s).reverse());}
Run Code Online (Sandbox Code Playgroud)
和平:)
无意义的Haskell版本(15个字符,但是除非你包含Control.Arrow和Control.Monad并忽略单态限制,否则它不会真正起作用):
p=ap(==)reverse
Run Code Online (Sandbox Code Playgroud)
(equal p (reverse p))
Run Code Online (Sandbox Code Playgroud)
口齿不清.18个字符.
好的,这是一个特例.如果直接输入到lisp解释器并且已经定义了p,这将起作用.
否则,这是必要的:
(defun g () (equal p (reverse p)))
Run Code Online (Sandbox Code Playgroud)
28个字符.
Lua的目标更多是可读性而不是简洁性,但却是一个诚实的37个字符:
function p(s)return s==s:reverse()end
Run Code Online (Sandbox Code Playgroud)
变体,只是为了好玩(相同的大小):
p=function(s)return s==s:reverse''end
Run Code Online (Sandbox Code Playgroud)
JavaScript版本更冗长(55个字符),因为它没有字符串反转功能:
function p(s){return s==s.split('').reverse().join('')}
Run Code Online (Sandbox Code Playgroud)
我会更进一步:完整的c代码,编译和去.
90个字符
main(int n,char**v){char*b,*e;b=e=v[1];while(*++e);for(e--;*b==*e&&b++<e--;);return b>e;}
Run Code Online (Sandbox Code Playgroud)