Палиндром Гольф

Если вы используете Eclipse, вы можете предупредить вас об этих утверждениях:

Java->Compiler->Errors/Warnings [/g0]

29
задан 5 revs, 5 users 100% 18 July 2009 в 01:51
поделиться

44 ответа

PHP:

function p($s){return $s==strrev($s);} // 38 chars

или, всего

$s==strrev($s); // 15 chars
4
ответ дан 2 revs, 2 users 93% 18 July 2009 в 01:51
поделиться
  • 1
    Я думаю ?adjustcolor в основе R (grDevices пакет), делает что-то очень как это, хотя это не могло бы быть векторизовано так же полностью как Ваш. – Ben Bolker 21 October 2012 в 22:29

К сожалению, я неспособен получить менее чем тысячу слов...

alt text

(LabVIEW. Да, они позволят примерно любому сообщению бродяги здесь;)

37
ответ дан 2 revs 18 July 2009 в 01:51
поделиться
  • 1
    это работало! я использовал безошибочный плагин знатока, 3.0.0-M3 с OpenJDK 11 и SpringBoot 2.1. X – Raymund Arthur 14 May 2019 в 07:21

Haskell, 28 символам, нужно Управление. Стрелка импортируется.

p=uncurry(==).(id&&&reverse)
2
ответ дан Jack 18 July 2009 в 01:51
поделиться

Я возьму его немного далее: полный код 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;}
5
ответ дан Figo 18 July 2009 в 01:51
поделиться
  • 1
    Кажется, что я могу только добавить rgb настройки к единственной группе точек. Как я могу применить это больше чем к 1 группе? – Steve 21 October 2012 в 07:34

Здесь является моим; это записано на проблемно-ориентированном языке, который я изобрел, названный 'палиндромом'.

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.

42
ответ дан 8 revs 18 July 2009 в 01:51
поделиться
  • 1
    Я попробовал это решение и here' s, что я получил: [WARNING] The project com.example:pom:0.0.2 uses prerequisites which is only intended for maven-plugin projects but not for non maven-plugin projects. For such purposes you should use the maven-enforcer-plugin. See https://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html – Raymund Arthur 14 May 2019 в 07:09

F# (много как пример C#)

let p s=let i=0;let l=s.Length;while(++i<l)if(s[i]!=[l-i-1]) 0; 1;;
4
ответ дан nyxtom 18 July 2009 в 01:51
поделиться
  • 1
    например: два различных цвета: points((1:10)+0.05, col=rgb(c(0, 0), c(1, 0), c(0, 1), rep(0.5, 2)), pch=16) (Вы могли использовать тот же подход для 6 различных цветов), – sgibb 21 October 2012 в 16:31

Haskell, 36 символов включая его собственную обратную функцию. (На самом деле при использовании точек с запятой, чтобы сделать его остротой и проигнорировать новую строку в конце, это было бы 35...)

r[]y=y
r(a:x)y=r x$a:y
p s=s==r s[]

, Поскольку с другими реализациями, "p" является предикатом палиндрома.

1
ответ дан 3 revscomingstorm 18 July 2009 в 01:51
поделиться
  • 1
    @Srneczek я добавил изображение перед маркировкой как флажок. Так, Вы знаете ширину изображения. Если так, добавьте < span> вокруг текстов < label> и набор это отображается: блок. Тогда добавьте ширину, как оставлено полю. Также добавьте float:left к: перед псевдо элементом. Надежда это помогает – Md. Rafee 29 June 2016 в 05:39

может был, хорошо дают пример C++, который пользуется стандартной библиотекой:

bool p(const std::string &s){std::string s2(s);std::reverse(s2);return s==s2;}

Благодаря Jon Для указания, что это могло быть короче, если мы делаем некоторые ненужные копии. В общей сложности 67 символов.

bool p(std::string s){std::string x=s;std::reverse(x);return s==x;}
0
ответ дан 2 revs 18 July 2009 в 01:51
поделиться
  • 1
    Я хочу удалить несловесные символы (или заменять их ' nothing'). Я хочу сохранить числа и нормальные буквы и хотеть заменить пробелы и подчеркивания с горизонтальной дорожкой. – Roel 23 January 2012 в 22:42

Не самое короткое, и очень после совершения, но я не мог сдержать предоставление его попытка в MATLAB:

R=@(s)all(s==fliplr(s));

24 символа.

3
ответ дан 2 revs 18 July 2009 в 01:51
поделиться

18-символьное регулярное выражение Perl

/^(.?|(.)(?1)\2)$/
3
ответ дан 28 November 2019 в 00:32
поделиться

52 символа в C, с оговоркой, что до половины строки будет перезаписано:

p(char*s){return!*s||!(s[strlen(s)-1]-=*s)&&p(++s);}

Без библиотечных вызовов это 64 символа:

p(char*s){char*e=s;while(*e)++e;return! *s||!(*--e-=*s)&&p(++s);}

3
ответ дан 28 November 2019 в 00:32
поделиться

58 символов в Python, без изменения строки:

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

Может быть, цикл for можно оптимизировать? Python для меня впервые ...

0
ответ дан 28 November 2019 в 00:32
поделиться

Perl (21 символ):

sub{"@_"eq reverse@_}

Эй, в вопросе не указана подпрограмма с именем !

1
ответ дан 28 November 2019 в 00:32
поделиться

рекурсивная версия javascript (без обратного мусора)

function p(s){l=s.length;return l<2||(s[0]==s[l-1]&&p(s.substr(1,l-2)))}

(72 символа)

или реализовать обратное внутри:

p=function(s,y){return y?(s==p(s)):s[1]?(p(s.substr(1))+s[0]):s[0]}

p("hannah",1);

(67 символов)

или без использования встроенных функций вообще ...

p=function(s,y,i){
return i?s[i]?s[i]+p(s,0,i+1):'':y?(s==p(s)):s[1]?(p(p(s,0,1))+s[0]):s[0]
}

p("hannah",1);

(92 символа)

самый короткий, который я мог придумать: (итеративно)

function p(s,l){for(c in s){if(s[c]!=s[l-1-c])s=0}return s}

p("hannah",6);// (is this cheating?)

(59 символов)

с нетерпением жду, когда вы сделаете это лучше в javascript!

(желательно без использования каких-либо встроенных функций, особенно reverse)

(не очень впечатлен ответами типа 'return s == s.reverse ()')

0
ответ дан 28 November 2019 в 00:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: