Palindrome高尔夫球场

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)

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

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中.

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

Joe*_*e Z 37

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

替代文字

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

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

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)


mha*_*wke 28

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

R=lambda s:s==s[::-1]
Run Code Online (Sandbox Code Playgroud)


Hug*_*are 18

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

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


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)


Osc*_*Ryz 9

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

boolean p(String s){return s.equals(""+new StringBuffer(s).reverse());}
Run Code Online (Sandbox Code Playgroud)

和平:)

  • 我们在这里谈论代码高尔夫.可读性无关紧要. (8认同)

Ste*_*Dee 6

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

p=ap(==)reverse
Run Code Online (Sandbox Code Playgroud)


hel*_*dre 5

(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个字符.


Phi*_*Lho 5

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)


Fig*_*igo 5

我会更进一步:完整的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)