当前位置:  开发笔记 > 编程语言 > 正文

Palindrome高尔夫球场

如何解决《Palindrome高尔夫球场》经验,为你挑选了13个好方法。

目标:任何语言.最小的函数,它将返回一个字符串是一个回文.这是我的Python:

R=lambda s:all(a==b for a,b in zip(s,reversed(s)))

50个字符.

接受的答案将是当前最小的答案 - 当发现较小的答案时,这将会改变.请指定您的代码所在的语言.



1> Jimmy..:

J中有7个字符:不确定这是不是最好的方式,我对J有点新:)

p=:-:|.

解释:|.反转输入. - :比较.操作数是隐含的.

p 'radar'
1

p 'moose'
0


哇,这很神秘.实际上我不能说我亲眼看到了一种更加神秘的语言.
@Thomas写作J实际上很有趣.读它(即使你写它)是困难的部分

2> Menkboy..:

这是我的; 它是用我发明的特定领域语言编写的,叫做'回文'.

p

编辑:不太轻浮的版本(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:

16个字节,字符串指针在ESI中,结果在EAX中.


你必须将回文混淆与回文++,这是一种相关但不同的语言.
为什么p,那么?你应该以字符串作为参数运行解释器

3> Joe Z..:

可悲的是,我无法理解千言万语......

替代文字

(LabVIEW.是的,他们会在这里发布任何流浪汉帖子;)


哈哈哈到底是什么意思?也许我不应该在喝酒的时候看SOF ...... +1大声笑
LabView只是让非程序员更容易访问编程的另一种尝试.它有其用途,可能作为教学工具,但我不会将它用于严肃的目的......(这不是编写乐高的唯一方法.)

4> ADEpt..:

Haskell,15个字符:

p=ap(==)reverse

更易读的版本,16个字符:

p x=x==reverse x



5> mhawke..:

另一个相当短的python版本(21个字符):

R=lambda s:s==s[::-1]



6> Hugoware..:

有可能获得投票,大多数所有这些只是调用一种隐藏所有真正的编程逻辑的命令反转.

我想知道在这些语言中,最短的手动方式是什么.



7> OdeToCode..:

使用C#和LINQ运算符:

public bool IsPalindrome(string s)
{
    return s.Reverse().SequenceEqual(s);
}

如果你把Reverse视为作弊,你可以通过减少来完成整个事情:

public bool IsPalindrome(string s)
{
    return s.Aggregate(new StringBuilder(),
                       (sb, c) => sb.Insert(0, c),
                       (sb) => sb.ToString() == s);
}



8> Robert Gambl..:

Perl(27个字符):

sub p{$_[0]eq reverse$_[0]}

Ruby(24个字符):

def p(a)a==a.reverse end



9> OscarRyz..:

73清洁,可读,用java编写的字符

boolean p(String s){return s.equals(""+new StringBuffer(s).reverse());}

和平:)


我们在这里谈论代码高尔夫.可读性无关紧要.

10> Steven Dee..:

无意义的Haskell版本(15个字符,但是除非你包含Control.Arrow和Control.Monad并忽略单态限制,否则它不会真正起作用):

p=ap(==)reverse



11> helloandre..:
(equal p (reverse p))

口齿不清.18个字符.

好的,这是一个特例.如果直接输入到lisp解释器并且已经定义了p,这将起作用.

否则,这是必要的:

(defun g () (equal p (reverse p)))

28个字符.



12> PhiLho..:

Lua的目标更多是可读性而不是简洁性,但却是一个诚实的37个字符:

function p(s)return s==s:reverse()end

变体,只是为了好玩(相同的大小):

p=function(s)return s==s:reverse''end

JavaScript版本更冗长(55个字符),因为它没有字符串反转功能:

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



13> Figo..:

我会更进一步:完整的c代码,编译和去.

90个字符

main(int n,char**v){char*b,*e;b=e=v[1];while(*++e);for(e--;*b==*e&&b++e;}

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有