현에서 가장 긴 회문을 어떻게 찾습니까?


33

도전 과제 :

현 안에서 가장 긴 회문을 찾는 함수를 만드십시오.

참고 : 이것은 질문입니다. 질문 및 / 또는 답변을 진지하게 받아들이지 마십시오. 자세한 내용은 여기를 참조 하십시오 .


7
당신이 말할 수 없다면, 이것은 마지막보다 설명이 적지 만 또 다른 트롤링 문제입니다.
Joe Z.

19
안타깝게도 "현"에는 회문이 전혀 없습니다.
Mark Reed

17
code-trolling내가 좋아하는 새로운 태그도 마찬가지 입니다.

4
우리는있어 이제 핫 네트워크 질문 목록 코드 건지 질문!
Joe Z.

18
흠. 첫 번째 [코드 트롤링] 질문은 재미 있었지만 도움이 될 수는 없지만주의를 기울이지 않으면이 질문이이 사이트의 품질을 떨어 뜨릴 것이라고 생각합니다. 이 질문들은 쉽게 만들고 답이 잘 나오지 않으며, 아주 오래된 질문들을 아주 빨리 볼 수 있습니다. 그냥 내 2 센트.
리드

답변:


19

가기

Go의 다음 솔루션은 주어진 문자열 내에서 가장 긴 회문을 찾기 위해 동시성, 클로저 및 재귀의 숨겨진 기능을 사용합니다.

func lp(s string) string {
    for i, l := 0, len(s); i < l; i++ {
        if s[i] != s[l-i-1] {
            a, b := make(chan string), make(chan string)
            go func() {
                a <- lp(s[:l-1])
            }()
            go func() {
                b <- lp(s[1:])
            }()
            c, d := <-a, <-b
            if len(c) > len(d) {
                return c
            }
            return d
        }

    }
    return s
}

또한 표준 라이브러리가 아닌 언어 프리미티브 및 내장 유형에 전적으로 의존하므로 진정한 품질의 소프트웨어를 인식 할 수 있습니다.

더 큰 입력 문자열에 대해 스레드, 메모리 및 스택 크기 제한을 약간 높이고 싶을 수 있습니다. 이는이 솔루션이 너무 빠르기 때문에 OS가 모든 것을 질투하게되기 때문입니다.

편집 – 특전 :

  • 멀티 바이트 문자열에는 전혀 쓸모가 없습니다.
  • 문장 부호 또는 공백 문자는 생략하지 않습니다.
  • 대소 문자가 같지 않습니다.
  • 하지만 시간을 계산하기가 어렵습니다 – 매우 느립니다.
  • 입력에 따라 많은 고 루틴이 생성됩니다.
  • 입력을 위해 16000 2049186 goroutines가 생성 되어 내 컴퓨터에서 몇 초 후에 메모리 소모로 인해 죽습니다."345345ABCDEabcde edcbaDEABC12312123"

45

파이썬

def longest_palindrome(s):
    return 'racecar'

사용법 예 :

>>> print longest_palindrome('I like racecars!')
racecar

참고 : 이것은 특정 문자열에서만 작동 할 수 있습니다.


21
나는 "abcdedcba"로 시도했지만 방금 "racecar"를 반환했습니다 ... 내가 뭘 잘못하고 있습니까?
Joe Z.

22
@JoeZ. 잘못된 문자열을 사용하고 있습니다. 'abcde racecar'로 시도하십시오.
grc

10
좋아,하지만 지금은 "abcde racecar edcba"로 시도하고 있으며 훨씬 더 큰 회문이 있지만 여전히 "racecar"만 반환합니다.
Joe Z.

63
@JoeZ. 흠 ... 아마도 유니 코드 문제 일 것입니다.
grc

11
@JoeZ. 새 컴퓨터를 구입해야 할 것입니다.
emory

13

분명히, 회문을 확인하는 것은 어렵다.

따라서 솔루션은 매우 간단합니다. 테스트하는 문자열만큼 큰 가능한 모든 Palindrome 세트를 생성하고 문자열에 포함되어 있는지 확인하십시오.

기음#

string largest = String.Empty;

    for(int i=0; i < myString.lenght; i++)
    {

//Don't use the newfangled stringbuilder. Strings are awesome
char[] testString = new char[i];

    for (int charPosition=0; charPosition < i/2; charPosition++)
    {
    for (char c = 'A'; c <= 'Z'; c++)
    {
       if ((charPosition/i) == i/2)
{
//middle one
testString[i] = c;
} 
else 
{
//do one for that position, and the lenght-position
testString[i] = c;
testString[testString.length - i] = c;
}

if (myString.Contains(testString.ToString())
{
//yaay
largest = testString.ToString();
}


{

}
    } 

}


}

(코드의 정확성을 확인해야 할 수도 있지만 그렇지 않으면 회문을 확인하는 매우 비효율적 인 방법입니다)


그들은 계산하기가 어렵 기 때문에 분명히 긴 문자열에서 프로그램을 실행하지 않을 것입니다. 그래서 이것은 괜찮습니다. 엔터프라이즈 설정에서 실행중인 경우 더 나은 VPS 또는 데이터 센터에서 실행하여 확장 할 수 있습니다. 숙제는 3-4 자로 만 충분합니다.
Emil Vikström

12

모든 것이 요구됩니다. 가능한 모든 하위 시퀀스 를 고려하기 때문에 실제로 더 좋습니다 . 캐치는 무엇입니까? 지수 시간으로 작동하므로 문자열의 각 추가 문자는 실행 시간을 두 배로 늘립니다. 20자를 초과하면 하루 종일 걸립니다.

$inputstring = <>;
@arrayofcharacters = split("",$inputstring);
for(0..2**length($inputstring)-1){
 $currentsubsequence = "";
 @choice=split("",sprintf("%b",$_));
 for(0..$#arrayofcharacters){
  $currentsubsequence .= "$arrayofcharacters[$_]" x $choice[$_];
  if($currentsubsequence eq reverse($currentsubsequence)){
   $palindromes{length($currentsubsequence)} = $currentsubsequence;
   $palindromes[~~@palindromes] = length($currentsubsequence);
  }
 }
}
print($palindromes{@{[sort(@palindromes)]}[$#palindromes]})

입력 : iybutrvubiuynug. 출력 : ibutubi.

입력 : abcdefghijklmnopqrstuvwxyzzyxwvutsrqponmlkjihgfedcba. 출력 : 발생하지 않습니다


이것은 말 그대로 내 대답이지만 Perl입니다. 또한 Monekmized가 아닙니다. 편집 : 내 VM의 더 효율적인

답변을 게시하기 전에 복사하지 않았습니다.
PhiNotPi

2
나는 먼저 아이디어가 있었다! 방금 작성하는 데 시간이 더 걸렸습니다 (C 및 원숭이 농담을 생각해야했습니다. 또한 최적화는 추가 개발 시간이 가치가 있습니다)

6
괜찮아. 나는 비효율적임을 자랑스럽게 생각합니다.
PhiNotPi

10

아래 그림과 같이 정규 표현식으로 문제를 쉽게 해결할 수 있습니다 (그러나 대신 java를 사용하기로 결정했습니다). 이것은 정규식이 항상 텍스트 추출 또는 분석과 관련된 모든 것에 사용될 수있는 최상의 도구이기 때문에 발생합니다.

나는 정규식을 안다

package palindrome;

import java.util.regex.Pattern;
import javax.swing.JOptionPane;

public class RegexPalindrome {

    private static String next(String now) {
        if (now.isEmpty()) return "a";
        String prefix =  now.length() == 1 ? "" : now.substring(0, now.length() - 1);
        if (now.endsWith("z")) return next(prefix) + "a";
        return prefix + String.valueOf((char) (now.charAt(now.length() - 1) + 1));
    }

    public static void main(String[] args) {
        String text = JOptionPane.showInputDialog(null, "Type some text:");

        String bestPalindromeFound = "";

        for (String searchText = "a"; searchText.length() <= (text.length() + 1) / 2; searchText = next(searchText)) {
            String reverse = new StringBuilder(searchText).reverse().toString();
            if (searchText.length() * 2 - 1 > bestPalindromeFound.length()) {
                Pattern p = Pattern.compile(".*" + searchText + reverse.substring(1) + ".*");
                if (p.matcher(text).matches()) bestPalindromeFound = searchText + reverse.substring(1);
            }
            if (searchText.length() * 2 > bestPalindromeFound.length()) {
                Pattern p = Pattern.compile(".*" + searchText + reverse + ".*");
                if (p.matcher(text).matches()) bestPalindromeFound = searchText + reverse;
            }
        }
        JOptionPane.showMessageDialog(null, "The longest palindrome is \"" + bestPalindromeFound + "\".");
    }
}

이 코드는 다음과 같은 이유로 악합니다.

  • 주어진 텍스트의 크기에 기하 급수적으로 실행됩니다. az 형식의 모든 문자열을 열거하고 생성 된 각 문자열에 대해 두 개의 정규식을 만들고 각 정규식에 대해 입력을 테스트하여 실행됩니다.
  • 또한 회문에 대문자, 숫자, ASCII가 아닌 텍스트, 문장 부호 등이 포함되어 있으면 실패합니다.
  • 물론 정규 표현식은 분명히 올바른 도구가 아닙니다.

물론 GUI 부분은 산만하게하기 위해서만 있습니다 :>
Emil Vikström

@ EmilVikström 네, 코드 트롤링의 부작용은 MVC 패턴을 행복하게 파괴 할 수 있다는 것입니다. 또한 게으른 OP는 아마도 MVC가 무엇인지 알지 못하고 모든 GUI가 결합되어 있고 이전 프롬프트 / 콘솔 / DOS 스타일 보링보다 더 아름답고 진보 된 프로그램에 훨씬 더 감명을 줄 것입니다 창문 (그러나 그의 선생님은 그렇게 생각하지 않을 수도 있습니다). OTOH, 게으른 OP가 연결된 GUI를 좋아하지 않는다면, 그 목표는 어쨌든 그를 좌절시키는 것이 었습니다.
Victor Stafusa

전주곡조차도 잘못되었습니다. 기술적으로 말하면 회문은 정규 문법 클래스에 속하지 않으므로 정규 표현식으로 인식 할 수 없습니다. 운 좋게 우리는 Context-Sensitive Grammars의 클래스를 포함하는 PCRE를 가지고 있습니다.
recursion.ninja

7

파이썬

이것은 현을 취해 가능한 가장 긴 회문으로 재구성합니다.

예를 들면 다음과 같습니다.

입력 : 안녕하세요

출력 : lol

def get_palindrome(string):
    if len(string) == 0:
        return "I didn't catch that"
    list_of_characters = []
    occurances = []
    for character in string:
        if not character in list_of_characters:
            list_of_characters.append(character)
            occurances.append(1)
        else :
            occurances[list_of_characters.index(character)] +=1
    #check if a palindrome is possible
    if sum(occurances) == len(occurances): #no double letters, so only a one character palindrome
        return list_of_characters[0]
    first_half = ''
    second_half = ''
    middle_character = ''
    for index, character in enumerate(list_of_characters):
        number_of_occurances = occurances[index]/2
        first_half += character * number_of_occurances
        second_half = (character * number_of_occurances)+ second_half
        if (occurances[index]%2 != 0):#if there are an odd number, there will be one spare,
            #so put it in the middle
            middle_character = character
    return first_half + middle_character + second_half


print(get_palindrome(raw_input("String containing palindrome:")))

3
그것은 꽤 건방진 XD입니다
숀 알 레드에게

7

생물 정보학 해석

아주 멋진 질문 친구!

공백이 허용되는지 여부와 같이 일반 언어의 회문은 완전히 명확하게 지정되지 않았습니다. 따라서 회문으로 허용해야하는지 확실하지 않습니다.

  • 거위는 하나님을 봅니까?
  • 사람, 계획, 운하-파나마!

어쨌든, 나는 당신이 회 문의 더 나은 과학적 의미를 언급하고 있다고 생각합니다 : 뉴클레오타이드 서열이 회문으로 간주되기 위해서는 상보 적 가닥이 반대 방향으로 동일하게 읽혀 져야합니다. 두 가닥, 즉 5 '에서 3'으로가는 가닥과 3 '에서 5'로가는 그 가닥은 상보 적이어야합니다 ( 여기 참조 ).

회문 서열 인식에 대한 몇 가지 연구가 있으며 나는 적어도 이것을 읽어야한다고 생각합니다 . 문제를 해결하기 위해 접근 방식을 거의 복사 할 수 있습니다! 교수는 당신이 그에게 요청하면 소스 코드를 보냅니다.

글쎄, 지금 당면한 문제에. 문자열로 주어진 뉴클레오티드 서열이 있다고 가정하십시오. 이러한 순서에서 회문을 찾는 가장 좋은 방법은 표준 알고리즘을 사용하는 것입니다. 가장 좋은 방법은 아마도이 온라인 도구를 사용하는 것 같습니다 : http://www.alagu-molbio.net/palin.html

작업을 수행하는 기능을 제공해야하므로 문자열을이 앱으로 가져 오는 방법에 대해 생각해야합니까? 재미가 시작됩니다. 나는 당신이 셀레늄 을 사용할 수 있다고 생각합니다 . 숙제를하고 싶지 않기 때문에 기본적인 아이디어 만 제공합니다. Java에서는 다음과 같이 시작합니다.

package testing;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;

public class PalindromeService {


    public static void main(String[] args) {
        WebDriver d1 = new PhantomJSDriver();

        d1.get("http://www.alagu-molbio.net/palin.html");

        String sequence = "AAGTCTCGCGAGATCTCGCGAGATCTCGCGAGATCTCGCGAGAAA";

        WebElement txtArea = d1.findElement(By.tagName("textarea"));

        txtArea.sendKeys(sequence);

        WebElement send = d1.findElement(By.cssSelector("input[type=submit]"));
        send.click();

        String result = d1.findElement(By.tagName("body")).getText();

        Pattern p = Pattern.compile(".*capitalized\\.[^agctACGT]*([agctACGT]+).*");
        Matcher m = p.matcher(result);
        if (m.find()){
            result = m.group(1);
        }

        //now you have all palindromes in upper case! 
        //I think you can take it from here, right?

        System.out.println(result);

        d1.quit();
    }
}

언어 회문에 관심이있는 경우 http://www.jimsabo.com/palindrome.html 또는 http://calculator.tutorvista.com/math/492/palindrome-checker 와 같은 다른 웹 서비스에서 동일한 기술을 사용할 수 있습니다 .html

코드 트롤링 기술

  • http://rosettacode.org/wiki/Palindrome_detection 과 같은 유용한 소스를 생략하십시오.

  • 생물 정보학에 대한 흥미롭지 만 도움이되지 않는 blah

  • 생물 정보학 과제로 고의적으로 오해

  • 부정 행위-웹 서비스가 사용되는 문제를 해결하기 위해


6

파이썬

def get_substrings(a_string):
    """Get all possible substrings, including single character substrings"""
    for start_index in range(len(a_string)):
        for end_index in range(start_index + 1, len(a_string) + 1):
            yield a_string[start_index:end_index]

def get_longest_palindrome(a_string):
    """Find the longest palindrome in a string and return its index or -1"""

    # Initialise variables
    longest_palindrome = get_longest_palindrome.__doc__[5:27]
    palindromes_list = []

    # Search string for all palindromes
    for substring in get_substrings(a_string):
        if reversed(substring) == substring:
            palindromes_list.append(substring)

    # There should always be palindromes in non-empty strings (single characters),
    # but it's good practice to check anyway
    if len(palindromes_list) > 0:
        longest_palindrome = max(palindromes_list, key=len)

    return a_string.find(longest_palindrome)

"가장 긴 회문"문자열이 docstring에서로 추출됩니다 longest_palindrome.

reversed()함수는 반복자를 반환하므로 reversed(substring) == substring절대 적용 longest_palindrome되지 않으며 덮어 쓰지 않습니다.

따라서이 함수는 말 그대로 문자열에서 "가장 긴 회문"을 찾습니다.


그러나 "가장 긴 회문"은 회문이 아니며 다른 누군가가 이미 이것을 게시했습니다.
Joe Z.

4
이와 같은 솔루션의 문제점은 너무 명백하다는 것입니다. 초보자 프로그래머조차도 당신이 그들을 이끌고 있음을 알 것입니다.
Joe Z.

1
@JoeZ. 훨씬 덜 분명한 버전을 추가했습니다.
grc

1
덜 분명한 버전이 표시에 부딪칩니다. 그래도 명백한 버전을 제거하면 좋을 것입니다.
Joe Z.

5

자바 스크립트

아, 그것은 쉽다;). 여기에 간다 :

function () {
    var palidrome = "Star? Not I! Movie – it too has a star in or a cameo who wore mask – cast are livewires.

Soda-pop straws are sold, as part-encased a hot tin, I saw it in mad dog I met. Is dog rosy? Tie-dye booths in rocks.

All ewes lessen ill. I see sheep in Syria? He, not I, deep in Syria, has done. No one radio drew old one.

Many moths – I fondle his; no lemons are sold. Loot delis, yob, moths in a deli bundle his tin. Pins to net a ball I won – pins burst input. I loot to get a looter a spot paler. Arm a damsel – doom a dam. Not a base camera was in a frost, first on knees on top spot. Now a camera was a widened dam.

Ask: Cold, do we dye? No, hot – push tap, set on to hosepipe. Nuts in a pod liven.

A chasm regrets a motto of a fine veto of wars. Too bad – I all won. A sadist sent cadets – a war reign a hero derides. A bad loser, a seer, tossed a cradle – he begat to cosset – a minaret for Carole, Beryl, Nora. We’re not as poor to self.

I risk cold as main is tidal. As not one to delay burden, I don’t set it on “hot”. A foot made free pie race losses runnier. As draw won pull, eye won nose. Vile hero saw order it was in – even a moron saw it – no, witnessed it: Llama drops – ark riots. Evil P.M. in a sorer opus enacts all laws but worst arose. Grab a nosey llama – nil lesser good, same nicer omen.

In pins? No, it is open. If a top spins, dip in soot.

Madam, as I desire, dictates: Pull aside, damsels, I set a rag not for a state bastion. A test I won e.g. a contest I won.

Kidnap, in part, an idle hero. Megastars, red, rosy, tied no tie. Blast! A hero! We do risk a yeti’s opposition!

He too has a wee bagel still up to here held.

Demigods pack no mask, cap nor a bonnet, for at last a case is open – I left a tip – it wets. A dog wets too. Radios to help pay my tip, pull a tip.

Ale, zoo beer, frets yon animal. Can it? New sex arose but, we sots, not to panic – it’s ale – did I barrel? Did I lose diadem, rare carrot in a jar of mine? Droop as tops sag – unseen knots.

A cat ate straw as buck risk cud; evil foe, nil a red nag ate? Bah! Plan it – silage. Model foot in arboreta.

I, dark Satanist, set fire – voodoo – to slat. I design a metal as parrot, I deem it now. One vast sum is no ten in set – amen! Indeed, nine drag a yam, nine drag a tie. Dame nabs flower; can we help man? Woman is worse nob.

Mud level rose, so refill a rut. A nag of iron I made to trot I defied – I risk leg and its ulnae. Can a pen I felt to bid dollar or recite open a crate, open a cradle, his garret?

Sample hot Edam in a pan. I’m a rotten digger – often garden I plan, I agreed; All agreed? Aye, bore ensign; I’d a veto – I did lose us site. Wool to hem us? No, cotton. Site pen in acacias or petals a last angel bee frets in.

I met a gorilla (simian); a mate got top snug Noel fire-lit role. Manet, Pagnol, both girdle his reed bogs.

Flan I reviled, a vet nods to order it, Bob, and assign it. Totem users go help mates pull as eye meets eye. Son – mine – pots a free pie, yes? No. Left a tip? Order a dish to get. A ring is worn – it is gold. Log no Latin in a monsignor, wet or wise. Many a menu to note carrot.

Cat in a boot loots; As I live, do not tell! A bare pussy, as flat on fire, I know loots guns, fires a baton, nets a hero my ale drop made too lax.

If it is to rain, a man is a sign; I wore macs, no melons rot. I use moths if rats relive, sir, or retire.

Vendor pays: I admire vendee, his pots net roe. Nine dames order an opal fan; I’ll ask cold log fire vendor to log igloo frost. Under Flat Six exist no devils.

Marxist nods to Lenin. To Lenin I say: “Mama is a deb, besides a bad dosser.”

Gen it up to get “ova” for “egg”. I recall a tarot code: yell at a dessert side-dish sale. Yes/nos a task cartel put correlate: E.S.P. rocks a man. I am a man, am no cad, I’m aware where it’s at!

Fire! Its an ogre-god to help, man, as I go. Do not swap; draw, pull a troll!

It’s not a cat I milk – calf, for a fee, sews a button – knit or tie damsel over us. Mined gold lode I fill until red nudes I met in a moor-top bar can. I sit, I fill a diary – trap nine men in ten-part net – oh, sir, I ask, cod nose? No, damp eel.

So, to get a name! I say, Al! I am Al! Last, I felt, to breed, deer begat.

To can I tie tissue – damp – or deliver Omani artist – a man of Islam.

In a den mad dogs lived on minis a signor who lived afore targets in at. As eremites pull, I, we, surf, fantasise, mend a bad eye. No hero met satyr; Tony, as I stressed, won’t, so cosset satyr.

A vet on isles made us sign it, a name. Foe man one sub.

Aside no dell I fret a wallaby; metal ferrets yodel, like so. On a wall I ate rye. Bored? No, was I rapt! One more calf? O.K., calf, one more, bossy! No! Lock cabin, rob yam, sip martini. Megastar was in a risk.

Cat? No, I’m a dog; I’m a sad loyal pet. A design I wore – kilts (a clan); if net drawn, I put it up. Royal spots snag – royal prevents rift.

Composer, good diet, are both super, God – label it a love of art, lustre. Video bored, no wise tale e.g. a mini tale – no sagas seen. Knack: cede no foes a canal.

Pay – as I sign I lie; clear sin it is; e.g. “Amadeus” sign I – lira for ecu, decimal – sin as liar.

Trad artistes pull a doom, a drawer won’t.

Is it sold loot? No, I suffered loss. A man is god; Amen! I came nice Tahiti (sic).

It’s ale for a ban if for a fast – is role to help mash turnip? Use zoo? No – grasp order – use no zoos. Warts on time did sag.

No grade “X” “A” Level? Oh, “A”! I’d a “B” or a “C”. So – pot? No, we lop. Date? Take no date! Bah! Play L.P.

Miss (a lass, all right?) flew to space in NASA era. Rose no (zero) cadets ate raw. As a wise tart I fined rags red Lenin, we help pay bet – a risk – cash to Brian. I put a clam in a pool – a pool wets.

Mahdi puts a stop to harem – miss it in one vote, lost in one, veto of none. Post-op, no tonsil; I ate; no tastier, eh? We sleep at noon time so I dare not at one; no time stops as I time tides. A bed: under it, roll; in a mania, panic!

In a pond I did as Eros as Lee felt tenrec. “Ink” – list it under “I”. Termites put pen in a way. Democrats wonder, I too. To slay moths a dog did.

I saw elf; elf, far now, is a devilish taboo, rag-naked. I hid a bootleg disc. I, saboteur, toss it in. Oops! No legs! Laminated, a cask, conker in it, negates all if it is simple.

Hot pages are in a mag, nor will I peer, familiar tat, so lewd, native rot. Toner, ewe wore no trace; vagabond ewes do. Oh, Ada! Have pity! A pitiable eel – “Oh wet am I!” – to save, note: bite gill as I do.

Call a matador minor, eh? As I live, don’t! Is torero no rigid animal debaser if tipsy? Ale drew esteem in a matador. A bolero, monks I rate play or go dig rocks; a can I step on.

Go! Gas – it evades a bedsit – set a roost on fire. Boss sent a faded eclair to green imp or dog, I’d don a belt to boot it; if Ada hid a boot, panic.

I mock comic in a mask, comedian is a wit if for eventide. Vole no emu loved is not a ferret, so pet or witness a weasel if not. I hired less, am not so bossy, as yet amateur.

To stir evil, Edna can impugn a hotel: bad loos, hot on Elba: I may melt. Tart solicits it rawer, gets it rare. Push crate open; I ram buses, use no trams.

Did I say, not to idiot nor a bare ferret, to trap rat, strap loops rat? Stewpot was on. Hot? I was red! Lessen it! Fine man on pot? No, pen inside by a bad law. So I made rips – nine delays.

Some Roman items in a.m. ordered “Is room for a ban?” “It is,” I voted: I sat pews in aisle. Beryl, no tiro to my burden, made off for a contest, I won kiss. I may raid fine dales. I raid lochs if I to help am.

Forecast for Clare v. Essex: If no rain, a man is ref. Fusspots net foxes.

Senor is a gnome, latinos’ bad eyesore. Help misses run to border, Casanova, now, or drab hotel.

Ma has a heron; I sleep, pet’s on nose, sir! Rev. I rag loved art live – fine poser. Ultra-plan: I feign, I lie: cedar to disperse – last one? No, last six. Enamel bonnet for a dark car to toss a snail at. In it all, Eve lost; Seth’s a hero slain on a trap – Rise, Sir Ogre Tamer.

Upon Siamese box I draw design. I, knight able to help, missed an alp seen in Tangier of fine metal pots. Tin I mined rages – order nine, melt ten. Tone radios; tones are not to concur. Ten-tone radar I bomb – best fire-lit so hostel side meets eerie mini red domicile. A gulf to get is not a rare tale; no time to nod.

Row on, evil yobs, tug, pull. If dogs drowse, fill a rut. An era’s drawers draw. Put in mid-field in a band I dig a tub deep. Staff on a remit did refill a minaret.

Sam’s a name held in a flat, or, sir, bedsit. I wonder, is it illicit ore? No ties? A bit under? Retarded? Is ‘owt amiss? I’m on pot; not so Cecil, a posh guy a hero met. A red date was not to last so Cecil sat.

Tip? An iota to pay, a dot; sad, I drop item. I’d ask, call, Odin, a Norseman’s god: “Pay payee we owe radio dosh o.n.o.” I to me? No, I to media.

Peril in golf – is ball a “fore”? K.O.!

Vexed I am re my raw desires. Alto has eye on nose but tone-muser pianist is level-eyed. I lost a tie. Blast! In uni no grades are musts. Avast! Never port! Sea may be rut.

Part on rose? – It’s a petal. Define metal:

Tin is . (I gulp!) can!

I am a fine posse man, I pull a ton. Ron, a man I put on, I made suffer of evil emu’s sadism. Leo’s never a baron – a bad loss but evil – topple him, Leo’s lad. Assign a pen, can I? A pal is note decoding.

Is damp mule tail-less? No, ill; I breed for its tone. Radio speed, to grower, grew. Open a lot? No, stamp it; if for a free peso – not ecu -deign it. Times ago stone rates, e.g. at Scilly, display a wont.

No wish to get a design I, Sir Des, I’ve let? No bus sees Xmas fir. O.K. – cab – tart it up; tie lots – diamond, log or tinsel; first end errata edit. So “le vin (A.C.)”, Martini, Pils lager, one tonic.

I pegged a ball up to here when I got a top star role, Beryl. Gun is too big – won’t I menace? Yes? No?

Ill? A cold? Abet icecap’s nip. U.S.A. meets E.E.C. inside tacit sale – see! Beg a cotton tie, ma! No trial, so dodo traps exist. Arabs under-admire card label good hood stole.

In rage erupted Etna. Will a rotunda, bare villa, to tyro. Lack car? Non-U! Get a mini! My, my, Ella, more drums per gong; get a frog – nil less. Rod, never ever sneer. Got to?

I disperse last pair of devils (ah!) here today or else order cash to breed emus. Said I: “Are both superlative?” C.I.D. assign it lemon peel still. I wore halo of one bottle from a ref (football) – a tip; so hit last ego slap a mate got.

Late p.m. I saw gnu here (non-a.m.) or an idea got a dog to nod – I made felt to boot.

Fill in a lad? Nay, not all, Edna – lash to buoy. Did you biff one Venus? Not I! “Broth, girl!” ladies ordered – “No, with gin!” – a fine plate, maybe suet; no carton I made rots in it.

Med: a hill, Etna, clears in it. Ali, Emir, to slap in/slam in. All in all I made bad losers sign it – alibi. Set a lap for a level bat.

A bed, sir, eh? To put cat now? Drat! Such an idyll of a dog’s lair! That`s it, open it – a cage! Big nit sent rat! Some day (A.D.) send ewe. No, draw a pot now, do! Of wary rat in a six ton tub.

Edna, ask satyr: “Tel. a.m.?” No, tel. p.m.; Israeli tuner is damp. Use item: “Anna Regina”. No! Dye main room (“salle”) red!

Nice caps for a sea cadet in U.S.A. – Now I, space cadet, am it, sea vessel rep. Pin it on Maria, help Maria fondle her fine hotpot. No! Meet; set up to net, avoid a lesion. Set acid arena: Bruno one, Reg nil. Like it to sign in? Even I am nine-toed! I vote votes.

Oh, can a nose-rut annoy? No, best is Dorset. I know, as liar, to snoop, malign. “I’ll order it to get a bedroom door,” began a miser I fed.

Am I to peer, fan? Is a door by metal? Ere sun-up, drowse, nod, lose magnet. Food? Buns? I’ll ask. Corn? I’ll ask. Corn – I snack. Cats snack (cold rat). Sum for a bag: nil. First, is remit “traps in net”? Yes, on a par. Coots yell over a dam I made. Bared nudist went a foot, I made roots. I tip a canon: “Row, sir, at same tide; man one: row tug.”

Sewer of denim axes a wide tail – a terror recipe to hero made manic. I, to resign? I ? Never!

“OFT I FELT ITS SENSUOUSNESS” – title fit for evening is erotic; I named a more hot epic – error retaliated – I was examined for ewe’s gut, wore no named item.

A star is worn on a cap, it is too red. Am I too fat? Newts I’d under a bed. Am I mad? Are volleys too crap? A nosey tennis part-timer sits rifling a bar of mustard.

Lock cans, stack cans in rocks, all in rocks, all I snub. Do often games, old ones, word-pun use; relate, my brood, as in a free pot I made fires, I manage brood. Moor debate got tired rolling, I lampoon, so trail saw on kites.

Rod sits, ebony on nature, so Nana chose to veto video. Ten in main evening is O.T.T. i.e. killing; Ere noon, urban eradicates noise, lad, I ovate not. Put esteem on top (to hen, if reheld).

No fair ample hair – am not I nipper-less? Eva estimated ace caps I won as united. A Caesar of space, Cinderella’s moor, Niamey Don (a Niger-an name), ties up mad sire, nut! I, Lear, simpleton male, try tasks “A” and “E”

but not “XI”. Sanitary raw food won top award one Wednesday – a demo.

Start nesting, I beg a cat. I? Nepotist? Ah, trials, God! A folly, Dinah, custard won’t act up; other is debatable. Velar: of palate; sibilating is “s”.

Resold: a bed, a mill, an ill animal – snip, also trim. Eilat in Israel can tell I had ‘em. Tin I stored (am I not raconteuse?) by a metal pen. If a night, I wondered, rose, I’d all right orbit on sun, even off.

I buoy, did you? Both Sal and Ella, Tony and Alan (“Ill if too bottle-fed, am I?”) do not. God! A toga! Ed in a Roman one, rehung! Was I, M.P. et al., to get a map? Also get salt? I, hospital lab to offer, am, or felt to be, no fool – a hero.

Will it sleep? No, melting is sad ice. Vital re-push to be raid, I assume. Deer, both sacred roes, Leroy (a doter, eh?) has lived for. I, apt sales rep’s idiot to greens, revere vendors selling or fat egg-nog reps.

Murder O’Malley, my mini mate – gun on rack. Calory total: liver, a bad nut or all I wanted (“et puree garnie”): lots. “Do, oh do, ogle bald racer,” I’m dared – N.U.S. bar at six.

Esparto, dodo’s lair to name it, not to cage bees, elasticated, is nice. Esteem, as up in space, cite bad local lions, eye can emit now. G.I. boots in ugly rebel or rat’s potato gin (eh?) were hot. Pull a bad egg – epic, I note, no regal slip in it. Ram can . (I’ve lost idea!)

Tarred nets, rifles, nitro, gold – no maid stole it. Put it, rat, back or if Sam (“X”) sees sub on televised rising, I sedate Goths. I won’t – no way.

Alps, idyllic stage set, are not so gas-emitting, I educe. To nose, peer, far off, I tip mats onto lane. Power grew or got deep so I dare not stir. Of deer, billions sell. I ate lump – mad sign, I do cede – tonsil a pain, acne pang is sad also. Elm I help pot, live – tub’s sold; a ban or a bar, even so, elms, I’d assume, live for. Effused am I not, up in a manor, not all up in a mess.

Open if a main A.C. plug is in it.

Late men I fed late – pasties or not. “Rapture” by a maestro prevents a vast sum erased.

Argon in units, albeit at solid eye level, sits in a . (I presume not) . tube, son. No eyes: a hot laser – is Ed wary?

Mermaid, ex- evoker of all A.B.s, I flog. Nil I repaid. Emotion! Emotion, oh so do I dare, woe!

Wee yap-yap dog’s name’s Ron. An idol lacks a dime tip, or did, as today a potato in a pitta slice costs a lot – tons. A wet adder ate more hay. Ugh! So, pal, ice cost on top? No, miss, I’m a two-sided rat, erred nut, I base it on erotic ill; It is I, red now; it is debris, rot.

Alf, an idle he-man as “master animal lifer” did time, ran off at speed, but a G.I. did nab an idle if dim nit. Upwards rewards are natural life’s words, God. Fill up guts, boy, live now or do not emit one later. A rat on site got flu.

Gaelic, I’m odd Erin, I’m Eire, esteemed islet. So hostile rifts ebb. Mob, I.R.A., dare not net R.U.C. – no cotton. Erase not, so I dare not nettle men in red rose garden – I’m in it.

Stop late men if foreign at nine. Esplanades, simple hotel, bath, gin – king is Edward IX; obese; Ma is no pure mater. Go! Rise, sir; part anon.

I also rehash tests – ‘O’ Level Latin, Italian. S.A.S., so, to track radar. Often nobleman exists alone – not sales reps – I do. Trade ceiling, i.e. final part, lures open if evil trade.

Volga River rises on no steppe. Elsinore has a hamlet – Oh, Bard, row on Avon!

A sacred robot nurses simple hero’s eye; dabs on it a lemon. Gas, iron, Essex often stops, suffers in a mania. Ron fixes several crofts, acer of maple. Hot, I fish; cold, I arise laden; if diary amiss, I know it set no car off. Foe-damned ruby motor, it only rebels.

Ian I swept aside to visit, in a bar of moorside red, Romanis met in a more mossy ale den. Inspired am I, Oswald. A bay bed is nine p on top. No name, niftiness- elder saw it. Oh no! Saw top wet star’s pool – part star, part otter. Refer a baron to idiot, Tony, as I did.

Smart ones use submarine.

Poet, arch-super-artiste, grew artistic. I lost rattle; my amiable, not oh so old, able to hang up, mina, can deliver it, so true. “Ta, matey!” – says so Boston (Mass.) elder I hit.

On file S.A.E. was sent – I wrote poster re fat on side, volume one – loved it, never off it, I was in. Aide mocks a manic; I mock comic, I nap: too bad I had a fit, I too. Bottle ban odd, I go drop mine, ergo trial ceded a fatness, sober if not so, or a test is debased.

A vet is agog – no pet’s in a cask – corgi dog, royal pet, a risk no more.

Lob a rod at a man I meet. Sewer delays pit fires – a bedlam in a dig – iron ore rots it. No devil is a hero – Nimrod.

At a mall a cod is all I get. I bet on Eva, so Tim ate whole eel bait, I pay tip, Eva had a hood sewed. No B.A. gave car to Nero, we were not to rev it and we lost a trail; I’m a free pill, I wrong a man. I erase gap; to help miss it, I fill a set. A gent in ire knocks a cadet.

Animals’ gel on spoon – it is so true to basics – I’d gel; too bad I hide kangaroo baths – I lived as I won raffle, flew as I did go, dash, to my, also too tired now, star comedy: A wan, inept, upset I’m retired, nut; its ilk, nicer. Nettle feels a sore; sad, I did no panic in a pain, am an ill or tired, nude, based item; it is a spot.

Semitone, not a tone, radios emit; no, on tape; elsewhere it’s a tone.

Tail is not on; pots open on foot, even on it, so let oven (on, it is) simmer – a hotpot’s a stupid ham stew.

Loop a loop, animal – cat up in air.

Both sacks I rate by apple hewn in elder’s garden if it rates, I was aware – tasted a core.

Zones or areas, Annie, cap, so twelfth girl, lass, alas, simply (alpha beta) done, Kate. Tadpole won top Oscar, Obadiah, “O” Level axed.

Argon gas did emit no straw, so ozone sure drops argon, oozes up in Ruth’s ample hotel or sits afar off in a bar – of elastic, is it?

I hate cinema; cinema dogs in a mass. Older effusion to old – lost, is it now? Reward: a mood.

All upsets it.

Radar trails an Islamic educer of a riling issue, damages it in Israel. Ceiling is, I say, a plan, a case of one deck. Can knees sag as one Latin image elates, I wonder?

Oboe diverts ultra foe, volatile bald ogre – push to berate; I’d do, ogre. So, p.m., Oct. first, never play organ’s stops – lay or put it up in ward ten.

Final cast like rowing – I sedate play, old as am I, God! Am I! On tacks I ran; I saw rats. A Gemini tramp is May born.

I back colony’s sober omen of lack of lace. Rome, not Paris, a wonder.

Obey retail law – a noose killed oyster. Reflate my ball, a water-filled one. Disabuse no name of emanating issue.

Damsels, I note, vary tastes so cost now desserts. I say no! Try taste more honeyed. A bad nemesis at naff ruse will upset. I, mere Satanist, e.g. rater of a devil – (Oh wrong is a sin!) – I’m no devil’s god, damned.

Animals, if on a mat, sit. Rain, a more vile drop, made us site it in a cottage. Breed deer – bottle fits a llama.

I lay, as I emanate, go to sleep, mad ones on docks – air is hot. Entrap, net, nine men in party raid – all if it is in a crab-pot room, an itemised, under-lit, nullified old log den – I’m sure voles made it rot in knot.

Tubas we see far off lack limit. A cat on still or tall upward paws to no dog is an ample hot-dog, ergo nastier if tastier, eh? We, raw amid a conman, a mama in a mask, corpse et al., err.

Octuple tracks at a son’s eyelash side distressed a tall eye doctor, a tall ace, rigger of a vote: got put in egress; odd, abased, is ebbed, as I am, Amy, asinine lot! Nine lots! Don’t six rams live? Don’t six exist?

Alfred, nuts or fool gigolo, trod never if gold locks all in a flap on a red rose; made nine or ten stops.

I heed never, I’m Daisy, a prod never, I terrorise viler starfish. To me suitors, no lemons, came rowing. Is a sin a mania? Rot!

Sit! I fix a looted amp or delay more, hasten not. A baser if snug stool, wonkier, if not – Alf says – super, a ballet to no devil, is a stool too. Ban it, actor, race to no tune.

May names I wrote wrong (Is no man in it, a long old log?) sit in row, sign irate Goths; I dare drop it. At felon’s eye I peer, fast open – I’m nosey, esteem eyes. All upset, ample hogs resume totting. Is sad nabob tired? Roots don’t evade liver in Alf’s gob.

Deers I held right; oblong, apt enamel or tile rifle on gun spot to get a man – aim is all. I rogate, minister. Feeble gnats, alas late, prosaic, a canine pet is not to consume hot.

Loo, wet, issues old idiot; evading, I sneer, obey a deer, gall a deer, gain alpine dragnet for egg I’d net to ram in a pan I made to help master. Rags I held, arcane poet, arcane poetic error, all odd; I bottle fine panacean lust. I’d nag elks I ride if editor toted a minor. I fog a natural life.

Roses, or level dumb ones – rows in a mown, ample, hewn acre. Wolfsbane made it a garden in May, a garden indeed.

Nine mates, nine tons I must save now on time – editor raps a late man. G.I.s edit also, too. Do over if tests in a task radiate. Rob ran; I, too, fled.

“Omega” – list in alphabet.

A gander, a line of live ducks, irk cubs. A wart, set at a cast on knee, snug as spots.

A poor denim for a janitor, racer, armed aide, solid idler – rabid; I’d elastic in a pot, tons to sew.

Tubes or axes went in a clam, in an oyster. Free booze – lap it all up. Pity, my apple hot, so I’d a root stew. God, a stew! Tip it at feline! Posies, a cat’s altar often, no baron packs. A monk caps dog – I meddle here – hot? Pull its leg! A bee was a hoot, eh?

No, it is opposite. Yaks I rode wore hats, albeit on deity’s orders. Rats age more held in a trap, nip and I know it – set no cage now.

It’s eta; no, it’s a beta – Tsar of Tonga rates isles. Mad Ed is all upset at cider, is Ed? Is a madam too? Snip? I’d snip, spot a fine position, snip nine more cinemas.

Do ogres sell in a mall? Yes, on a barge so rats row tubs.

Wall last canes up or Eros, an imp, lives to irk, rasp or dam all tides sent. I won’t – I was no Roman – even I saw tired row – a sore. He lives on. “No!” we yell.

Up, now! Wards are in nurses’ sole care. I, peer, fed, am too fat? Oh, not I, test no dined ruby ale; dote not on salad it’s in – I am sad.

Locks I rifle so troops atone re war. Only rebel or a crofter animates so cottage beheld arcades, so trees are sold, abased. I redo, rehang, I err – a wasted act; nests I’d – as an owl – laid. A boot’s raw foot, even if a foot to master, germs (ah!) can evil do.

Pan is tune-pipe – so hot notes, paths up to honeydew.

Odd locks, a maddened (I was aware) macaw on top, spot no seen knots, rifts or fan, I saw. Are maces a baton, madam? Oodles, madam? Rare laptops are too late – got too lit up.

Nits rub – snip now, I’ll abate, not snip, nits I held.

Nubile Danish tomboys I led to old loser as no melons I held; no fish to my name. Nod lower, do I dare? No, one nods a hairy snipe. (Edit: one hairy snipe, eh?) See silliness, else we’ll ask cornish to obey deity’s or god’s item. I, God, damn it! I was in it! To Hades, acne trap, sad loser! As warts pop, a dosser I – we – vile rat, sack! Same row, oh woe! Macaroni, rats, as a hoot, tie. I vomit on rats.";
return '$system> KERNEL ERROR (DOES. NOT. EXCIST)'
}

:)


즉 이길합니까 이 하나 ?
Joe Z.

1
@JoeZ. 그것은 실제로 그렇습니다;) 광산의 단어 수는 24,122입니다!
C1D

2
대박! 선생님, 당신은 :) 요들송 2 internets 5 금속 흰 족제비 승리
aditsu

4

루비-(최적화 및 원숭이 화!) 무차별 대결

이 작업을 수행하는 가장 좋은 방법은 잘 알려진 원숭이 알고리즘을 사용하는 것입니다. 아마 BOOST에서 찾을 수 있습니다. 그들은 항상 당신이 이야기 할 수있는 방법을 가지고 있었다 ...

def palindrome?(in)#IMPORTANT
  if in.reverse == in
    return true
  else
    return false
end

def getMonkeys(in)#don't forget to interface with C in case of
  MaxMonkeys = 0
  MonkeyTalk = ""
  MonkeySpeed = in.length
  (0..MonkeySpeed).each do |monkeyA|
    (monkeyA..MonkeySpeed).each do |monkeyB|#optimized!
      if palindrome?(in[monkeyA..monkeyB]) do
        if in[monkeyA..monkeyB].length > MaxMonkeys do
          MonkeyTalk = in[monkeyA..monkeyB]
        end
      end
    end
  end
  MonkeyTalk
end

모든 것을 원래 이름으로 바꾸면 매우 비효율적이지만 오히려 귀엽고 루비와 같습니다. MaxMonkeys = len; MonkeyTalk = 결과, MonkeySpeed ​​= strlen; monkeyA : a; monkeyB : b; getMonkeys : getMaxPalindrome.
이것은 OP에 가치가 없으며 실제로 C와 인터페이스하기로 결정할 위험이 있으며, 우리는 그것이 어떻게 끝나는지를 알고 있습니다 ...


4

파이썬 2.7

비효율적이므로 표준 기능 사용을 거부합니다. 모든 사람은 길이를 찾는 가장 좋은 방법은 참조 할 테이블을 갖는 것이므로 가능한 모든 회 문의 테이블을 만들고 파이썬 gosort를 사용하여 정렬하지만 효율성을 높이기 위해 중복을 먼저 제거합니다. . 이 시점에서 나는 회 문인 모든 항목을 계산하고 길이별로 정렬합니다. 그런 다음 목록에서 마지막 길이를 가져 오면 목록을 반복하여 O (n) 조회를 갖습니다.

암호:

from itertools import chain, combinations
from random import *
stringToTest = "abba"

#Don't forget to reference code taken from stackoverflow. (http://stackoverflow.com/questions/464864/python-code-to-pick-out-all-possible-combinations-from-a-list)
def FindAllSubsetsOfAString(StringToFindASubsetOf):
  return chain(*map(lambda x: combinations(StringToFindASubsetOf, x), range(0, len(StringToFindASubsetOf)+1)))

listOfPermutations = []

#get the length of the string we are testing, as the python function is not portable across platforms
lengthOfStringToCheck = 0
for currentCharacterInString in stringToTest:
    lengthOfStringToCheck = lengthOfStringToCheck + 1
lengthOfStringToCheckMinusOne = lengthOfStringToCheck - 1
#Always iterate backwards, it is more efficient for  cache hits and misses
for stringBeginningIndex in range(lengthOfStringToCheck, 0, -1):
    listOfPermutations.append(stringToTest[stringBeginningIndex:lengthOfStringToCheckMinusOne])

#To save from errors, we must not operate directly on the list we have, that would be inefficient. We must copy the original list manually.
# The built in functions again aren't portable, so we must do this manually, with a deep copy.
OtherListOfPermutations = []
for CurrentItemInOriginalList in listOfPermutations:
    TemporaryListItem = []
    for CurrentIndexInCurrentItemInOriginalList in CurrentItemInOriginalList:
        TemporaryListItem.append(CurrentIndexInCurrentItemInOriginalList)
    OtherListOfPermutations.append(''.join(TemporaryListItem))

#Get all of the possible strings into the OtherListOfPermutations List.
# Use Generators, and itertools. It's more efficient and more pythonic
for OriginalString in listOfPermutations:
    for CurrentPermutationInCurrentString in FindAllSubsetsOfAString(OriginalString):
      OtherListOfPermutations.append(''.join(list(CurrentPermutationInCurrentString)))

#Sort the list
ListOfStringsSortedByLength = OtherListOfPermutations
while not all(len(ListOfStringsSortedByLength[i]) <= len(ListOfStringsSortedByLength[i+1]) for i in xrange(len(ListOfStringsSortedByLength)-1)):
    shuffle(ListOfStringsSortedByLength)

#Remove all of the duplicates in the sorted list
ListOfStringsSortedByLengthWithoutDuplicates = []
for CurrentStringWorkingWith in OtherListOfPermutations:
    HaveFoundStringInList = False
    for CurrentTemporaryString in OtherListOfPermutations:
        if CurrentStringWorkingWith == CurrentTemporaryString:
            HaveFoundStringInList = True
            if(HaveFoundStringInList == True):
                ListOfStringsSortedByLengthWithoutDuplicates.append(CurrentStringWorkingWith)

#Use the ListOfStringsSortedByLengthWithoutDuplicates and check if any of the strings are palindromes
ListOfPotentialPalindromes = []
for TemporaryStringToUseForPalindromes in ListOfStringsSortedByLengthWithoutDuplicates:
    lengthOfStringToCheck = 0
    for currentCharacterInString in TemporaryStringToUseForPalindromes:
        lengthOfStringToCheck = lengthOfStringToCheck + 1
    if lengthOfStringToCheck != 0:
        TemporaryStringToUseForPalindromesReversed = TemporaryStringToUseForPalindromes[::-1]
        if TemporaryStringToUseForPalindromesReversed == TemporaryStringToUseForPalindromes:
            ListOfPotentialPalindromes.append(TemporaryStringToUseForPalindromes)

#Remove any duplicates that might have snuck in there
ListOfPotentialPalindromesWithoutDuplicates = []
for CurrentPotentialPalindrome in ListOfPotentialPalindromes:
    HaveFoundStringInList = False
    for CurrentTemporaryPalindrome in ListOfPotentialPalindromes:
        if CurrentPotentialPalindrome == CurrentTemporaryPalindrome:
            HaveFoundStringInList = True
            if(HaveFoundStringInList == True):
                ListOfPotentialPalindromesWithoutDuplicates.append(CurrentStringWorkingWith)

lengthOfPalindromes = []

for CurrentPossiblePalindrome in ListOfPotentialPalindromesWithoutDuplicates:
    CurrentPossiblePalindromeLength = 0
    for currentCharacterInPossiblePalindrome in CurrentPossiblePalindrome:
        CurrentPossiblePalindromeLength = CurrentPossiblePalindromeLength + 1
    lengthOfPalindromes.append(CurrentPossiblePalindromeLength)


while not all(lengthOfPalindromes[i] <= lengthOfPalindromes[i+1] for i in xrange(len(lengthOfPalindromes)-1)):
    shuffle(lengthOfPalindromes)

#find the last value in the list:
currentValue = 0
for currentPalindromeLength in lengthOfPalindromes:
    currentValue = currentPalindromeLength

print currentValue

노트

4 자보다 긴 문자열에는 실제로 적합하지 않습니다. "abba"는 괜찮지 만 abcba를하기 전에 커피를 사서 점심을 요리했습니다.

이슈 :

미묘한 변수 이름 지정 (일관되지 않음)
Ludicrous 알고리즘 선택 (주어진 문자열의 모든 하위 문자열에 대해 가능한 모든 순열을 계산하고, 그것이 회문인지 확인하고, 길이를 기준으로 정렬하고 마지막 값을 찾습니다)
실제로 문제에 대한 솔루션을 포함합니다

    TemporaryStringToUseForPalindromesReversed = TemporaryStringToUseForPalindromes[::-1] 

바보 정렬 알고리즘 (bogosort)과 목록 정렬을위한 nutjob 방법.

또한 복제 검사에 들여 쓰기 오류가 실제로 전혀 수행하지 않으므로 시간 낭비입니다.


4

기음

회문을 찾는 것은 PNP * 어려운 작업이므로 고도로 최적화 된 코드로 수행해야합니다. 솔루션을 더 빨리 찾는 데 도움이되는 5 가지 최적화 방법이 있습니다.

  1. 올바른 언어로 시작하십시오. 모두가 알듯이 'C'가 가장 빠릅니다.
  2. 빠른 알고리즘을 사용하십시오. BoyerMoore 는 문자열 검색을위한 세계 기록 보유자이므로이를 사용할 것입니다. 또한 가장 긴 부분 문자열을 먼저 검색하므로 긴 일치 항목을 찾을 가능성이 가장 높습니다.
  3. 프로세서를 알고 있어야합니다. 현대 컴퓨터는 if this else that형태의 지점에서 엄청나게 느립니다 . (직업을 계속 진행할 때 진정한 코드 닌자가 되려면 분기 예측을 마스터해야합니다.)이 코드는 대신 문 if을 사용하여 분기 문제를 방지하므로 for하나의 가격에 대한 세 가지 지침을 제공합니다.
  4. "Big-O"에주의하십시오. 이 알고리즘은 함수 본문 내부에 중괄호를 사용하지 않으므로 중첩 루프가 방지됩니다. 따라서 런타임은 O (N)이어야합니다.
  5. 미세 최적화를 잊지 마십시오. 모든 문간 공백을 제거하는 잘 알려진 기술을 사용하여 컴파일러의 작업 부하를 줄이고 10 % 더 빠른 속도를 얻을 수있었습니다.

그러나 변수 이름을 사용하지 마십시오. 가독성이 중요합니다.

* 회문-비 회문

#define OFFSET 0XFF
#define ln(s) strlen(s) //macro to avoid runtime overhead

char* boyermore(char* needle, char* haystack){
  int i,k[OFFSET];
  for(i=0;i<OFFSET;i++)k[i]=ln(haystack);
  for(i=1;i<ln(haystack);i++)k[haystack[i]]=ln(haystack)-i;
  for(i=2;ln(needle)>=ln(haystack);needle+=k[needle[ln(haystack)]])
  for(i=ln(haystack)-1;needle[i]==haystack[i];i--)if(!i)return needle;
  return 0xFF-OFFSET;
}

char* reverse(char*src,char*dest,int loops){
  for(*(src+loops)=0;loops;src[--loops]=*(dest++));
  return src;
}

#define imax(a,b) ((a>b)?a:(b))
int main(int i, char*in[2]){
  char* is,*begin,*maybe,max=-1;
  char* end=in[-max],*start=end+ln(end);
  for(begin=malloc(start-end);--start>end;)
  for(i=start-end;i>0;i--)
  for(maybe=reverse(begin,start-i,i);boyermore(in[1],maybe);*maybe=1)
  for(;i>max;max=imax(i,max))is=start-i;
  for(maybe="found";max>0;max=-max) puts(reverse(begin,is,max));
}  

해설에서 명백한 트롤링 외에도 몇 가지 다른 문제가 있습니다. 검색 알고리즘은 Boyer-Moore-Horspool의 유효한 구현이지만 문자열 길이를 저장하지 않고 대신 N * M 번과 같은 strlen을 호출하여 간단한 검색보다 훨씬 느립니다. "가장 긴 문자열을 먼저 검색"하는 것이 사실이지만, 그 후에는 길이 순서로 검색하지 않으므로 조기 종료시 구현 된 경우 잘못된 답변을 제공합니다. 그러나 그렇지 않으므로 N을 모두 검색합니다! 어쨌든 가능성. 그리고 거의 모든 매개 변수 이름 (needle / haystack; src / dest)은 표준 의미와 반대입니다.


3

이것이 VB6에서 지금까지 얻은 것입니다.

Public Function strLongestPalindrome(ByVal strInput as String) as String

    strLongestPalindrome = ""
    Dim a as Integer
    Dim b as Integer

    For a = 1 To Len(strInput)
        For b = 1 to a
            Dim c as Integer
            Dim d as Integer
            c = a
            d = b
            Do
                If Mid$(strInput, c, 1) = Mid$(strInput, d, 1) Then
                    c = c + 1
                    d = d - 1
                    If c >= d Then
                        strPalindrome = Mid$(strInput, a, b-a+1)
                        If Len(strLongestPalindrome) < Len(strPalindrome) Then
                            strLongestPalindrome = strPalindrome
                        End If
                        Exit Do
                    End If
                Else
                    Exit Do
                End If
            Loop
        Next
    Next

End Function

그러나 나는 그것이 효과가 있다고 생각하지 않으며 더 나아질 수 있다고 생각합니다.


2
이것은 VB6으로 코딩 한 적이없는 사람들에게는 트롤이 아니라는 것을 알지 못할 수도 있지만 마지막으로 트롤링이 아닌 대답입니다.
Joe Z.

3

Java 솔루션은 다음과 같습니다.

public String findLongestPalindrome(String s){
   if(s.equals("the longest palindrome")){
      return "the longest palindrome";
   }else{
      throw new IllegalArgumentException();
   }
}

3
그러나 "가장 긴 회문"은 회문이 아닙니다.
Joe Z.

2

오토 핫키

;msgbox % longest_palindrome_in_string("racecar abcdedcba alkdf")

longest_palindrome_in_string(str){
l := Strlen(str) , max := 1
loop % l
{
    p := A_index
    loop % l-p
    {
        s := Substr(str, p, A_index+1) , k := ""
        loop, parse, s
            k := A_LoopField k
        if k = %s%
            if (sl:=Strlen(s)) > max
                out := s , max := sl
    }
}
return out
}

이 함수는 문자열에서 회문 시퀀스의 일부이므로 공백도 반환합니다. 따라서 위는를 반환합니다 <space>abcdedcba<space>.


1

폴리 글롯

이것은 "줄에서 가장 긴 회문을 찾기"를 요구하기 때문에 트롤링이므로, "줄"에서 가장 긴 회문을 찾습니다.

String palindrome(){
    return null; //There are no palindromes in "a string"
}

"abcba"를 넣었을 때 아무 것도 반환되지 않습니다.
Joe Z.

@JoeZ. 왜 트롤링을했는지 말을 잊었습니다.
scrblnrd3

5
나는 그것을 이해하지만 다른 많은 사람들에게 말했듯이 너무 분명합니다. 이런 종류의 단어 놀이는 좋은 트롤을 만들 수 없습니다.
Joe Z.

1
“문자열”에 여러 회문 (한 문자 길이)이 있습니다. 위 코드는 올바르지 않습니다.
Ben

2
@Ben "문자열"- "", "a", "", "s", "t", "r", "i", "n", "g"에는 9 개의 회문이 있습니다. 질문은 분명히 가장 긴 회문을 요구합니다. 내가 보는 것처럼 8 웨이 타이가 있기 때문에 대답은 정의되지 않았습니다. 따라서 null은 적절한 반환 값입니다.
emory


1

문자열의 각 문자를 반복하십시오. 그런 다음 해당 문자 전후의 문자를 확인하십시오. 그런 다음 그 문자 앞과 뒤에 두 문자가 있습니다. 동일하지 않은 문자가 나올 때까지 계속 반복하십시오. 이를 통해 단어에서 각 회 문의 길이를 식별 할 수 있습니다. 그러나이 방법은 홀수 길이의 회문에만 적용됩니다. 짝수 길이의 회문을 확인하려면 위치 i 및 i-1, i + 1 및 i-2, i + 2 및 i-3 등의 문자를 확인하십시오. 이것이 도움이 되길 바랍니다.


1

명백한 대답은 문자열을 자신의 역수와 비교하고 가장 긴 공통 시퀀스를 계산하는 것입니다.

다음 Perl 프로그램이 바로 그 일을합니다. Acme :: DonMartin 모듈을 다운로드해야 할 수도 있습니다. 일반적으로 기본적으로 설치되지는 않습니다.

use Acme::DonMartin;

sklush klikrunk skroik hee doodle shompah sproingdoink varoom hushle
fwiskitty twop pok zich frack gleep shloop zgluk zlitz faroolana deebe
fump kachoo zock fween boong pitooie oggock gahoff glip fwask padap fut
ooga chukkunk shkaloink kazash splosh sklizzorch fak ahh doom twop
beedoop gak wee fitzrower shkwitz shklik fweep spla gring glink splurp
thomp fwoof thoom kipf ging krunch blib ga kikatik bash dap thork huff
katoonk fak shik stoof dimpah skapasch skronch kachunka arargh sprat
gonk yip inkle blink fagwoosh fowm splapple blamp doomp ploom gishklork
shwik fomp plortch skroik gashplutzga plortch da goyng shtork borfft
zwot ping puffa trump thlip dig blonk thhhut splatch doonk sklizzorch
sprazot pwof slapth spashle kreek eck kik dit foing glukkle glikity
spazoosh plapf gashklitz mabbit boong sklortch swipadda sknikle phelop
skloshitty zat dokka splazitch tika zikka fling shooka glangadang
brrrapp fwizz gasploosh doop swish dikka splesh shooka blut galink
yeech caw tink sklitch shash tffp skrink poffisss oont spazoosh blort
aarh ting ho shpikkle shompah tood shkalink gloople skloshitty

다음 모듈을 찾을 수 있습니다 : metacpan.org/pod/Acme::DonMartin
dland

1

루아 / 파이썬

루아 (Lua)는 매우 빠른 언어입니다 (확인해야 할 하위 문자열이 많기 때문에 필요합니다!).하지만 파이썬은 문자열 처리에 더 좋습니다. 왜 둘 다 사용하지 않습니까?

지역 변수를 갖는 것이 좋다고 들었습니다. 또한 함수 호출을 인수에서 분리했습니다. 너무 많은 인수는 표현식을 어수선하게 만들고 읽을 수 없기 때문입니다.

또한, 이것은 시도하려는 문자열에서 작동한다고 생각합니다. 이상한 입력에는 아무런 문제가 없을 것입니다.

function is_palindrome()
    if os.execute("python -c 'exit(\"" .. is_palindrome_argument .. "\"==\"" .. is_palindrome_argument .. "\"[::-1])'") == true then
        return false
    else
        return true
    end
end

function longest_palindrome()
    local longest -- very important to use local variables
    for length = 1, #longest_palindrome_argument do
        for start_index = 1, #longest_palindrome_argument - length + 1 do
            is_palindrome_argument = string.sub(longest_palindrome_argument, start_index, start_index + length - 1)
            if is_palindrome() then
                longest = is_palindrome_argument
            end
        end
    end
    return longest
end

longest_palindrome_argument = "foo racecar"
print(longest_palindrome())

(BTW, 이것이 작동하는 데 얼마나 오래 걸 렸는지 믿지 않을 것입니다.)


1

파이썬 원 라이너 :

s = "here goes your string"
print max(p for p in [s.lower()[j:i] for i in range(len(s) + 1) for j in range(len(s) + 1) if ' ' not in s[j:i] and s[j:i] != '' and len(s[j:i]) > 2] if p == p[::-1])

1

파이썬-126 자

다음은 이것입니다.

k=[]
for i in range(len(p)):
 for j in range(i,len(p)):
  if p[i:j]==p[j:i:-1]:
   k.append(p[i:j+1])
k.sort(key=len)
k=k[-1]

이것은 Python 2.x와 3.x에서 모두 작동한다고 생각합니다. 변수 k에 답이 있습니다.

편집 : 나는 변수 p가 회문을 확인하기 위해 문자열을 보유해야한다는 것을 잊어 버렸습니다.

이것은 합법적 인 구현이므로 모든 문자열에서 작동합니다.


Btw, 이것은 나의 첫 번째 코드 골프입니다! 우후! : P
cjfaure

여기에는 실제로 코드 트롤링 태그가 있으므로 코드 트롤링 컨테스트입니다.
Pierre Arlaud

1
@ArlaudPierre Yup은 내가 게시 한 후 깨달았습니다. 한숨. xD
cjfaure

따라서 인기 * 경연 대회라는 의미였습니다. 좋아 xD 신경 쓰지
마라

0

자바

분명히 aString그 자체가 회문이라면 aString내부에서 가장 긴 회문 aString입니다. 어설 션 문으로 작동한다고 알 수 있습니다. 첫 번째 실행 코드 줄에 대해 너무 많이 생각하지 마십시오. 그것은 단지 표준 자바 상용구입니다.

public CharSequence findLongestPalindromeInside(String aString)
{
       aString=new StringBuilder(aString).append(new StringBuilder(aString).reverse());
       assert isPalindrome(aString);
       return aString;
}

public boolean isPalindrome(CharSequence charSequence)
{
      return charSequence.toString().equals(new StringBuilder(charSequence).reverse().toString());
}

0

게임 메이커 언어

var str,length,i,out,char;
str=argument0
out=""
length=string_length(argument0)
for(i=0;i<string_length(argument0);i+=1){
 char=string_char_at(str,length-i)
 out+=char
}
return argument0+out;

무슨 일인지 설명하고 싶습니까?
Joe Z.

0

포트란

Fortran에서 문자열을 다루기가 너무 어려워서 iachar모두 정수로 변환하는 데 사용 했습니다.

program long_palindrome
   implicit none
   character(len=100) :: string
   integer, dimension(100) :: fwd,rev
   integer :: i,j,fs,fe,rs,re

   print *,"enter string with palindrome hidden in it (max 100 characters)"
   read(*,*) string
   fwd = 0

! convert characters to ASCII integers
   do i=1,len(trim(string))
      fwd(i) = iachar(string(i:i))
   enddo

! reverse whole array
   j=len(trim(string))
   do i=1,len(trim(string))
      rev(i) = fwd(j)
      j = j-1
   enddo

! match strings of fwd and rev
   rs = 1; re = len(trim(string))
   fs = 1; fe = len(trim(string))

! test to see if whole thing is a palindrome
   if(all(fwd(fs:fe)==rev(rs:re))) then
      print *,"longest palindrome is "//string(fs:fe)//" with length",fe-fs+1
      stop
   endif

! nope? oh well, guess we have to loop through and find it
   fs = 0
   do
      fs = fs+ 1
      do fe = len(trim(string)),fs+1,-1
         do rs=1,fs
            re = fe-rs+1
            if(all(fwd(fs:fe)==rev(rs:re))) then
               print *,"longest palindrome is "//string(fs:fe)//" with length",fe-fs+1
               stop
            endif
         enddo
      enddo
      if(fs==len(trim(string))-1) exit
   enddo

   print *,"hmm, doesn't look like there was a palindrome of length > 1..."
end program long_palindrome

정확히 작동하지 않습니다. aabbaac가장 긴 문자열 이라고 말하면, 가장 긴 aa문자열 acasdabbbaabb이라고합니다 abbba. 충분히 가까이


실제로 bbaabb두 번째는 더 깁니다.
Joe Z.

@JoeZ .: 내가 말했듯이 충분히 닫습니다. : D
Kyle Kanos

0

요청 된 내용 만 수행하면 오늘날 시장에서 경쟁 할 수 없습니다. 이 코드는 가장 짧은 회문을 찾을 수 있으며 대소 문자를 구분하지 않습니다.

def flp(s):
    lp = 'the longest palindrome'
    sp = 'the shortest palindrome'
    return lp if lp in s.lower() else sp if sp in s.lower() else ''

>>> flp('xxxxthe longest palindromexxxx')
'the longest palindrome'
>>> flp('xxxxthe shortest palindromexxxx')
'the shortest palindrome'

0

루아

function findPalendromes(str)
    str=str.." "
    ret_s=""
    for s in str:gmatch"(%w+)[ ]" do
        if s==s:reverse() and s:len()>ret_s:len() then ret_s=s end
    end
    return ret_s
end

0

다른 모든 노력보다 우선하는 가장 효율적인 Python 구현 :

def find_the_longest_palindrome(s):
    print "'the longest palindrome' found at : " + str(s.find("the longest palindrome"))

노트:

이것은 항상 "가장 긴 회문"을 찾을 것입니다

대소 문자를 구분합니다.

약간의 수정으로 다른 문자열을 찾을 수도 있습니다. 그러나 클래스를 작성하고 적절한 메소드를 추가 한 후 각 문자열을 찾을 수 있도록 서브 클래스를 작성해야합니다.

이 기능은 FORTRAN 77로 포팅하거나 인텔 8008 머신 코드로 하드 ​​코딩함으로써 개선 될 수 있습니다.


0

이것은 첫 번째 코드 트롤링 답변입니다. 그것은 특히 잔인한 트롤이 아니며, 단지 질문에 대답하는 바보 같은 방법으로 나를 때렸습니다.

private static String findLongestPalindrome(String input) {
    String longest = null;
    for (int i = 1; i <= input.length(); i++) {
        Matcher m = pattern(i).matcher(input);
        if (m.find()) {
            longest = m.group();
        }
    }
    return longest;
}

private static Pattern pattern(int len) {
    int size = len / 2;
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < size; i++) {
        sb.append("(.)");
    }

    if (len != size * 2) {
        sb.append(".");
    }

    for (int i = size; i > 0; i--) {
        sb.append("\\").append(i);
    }
    return Pattern.compile(sb.toString());
}

트롤은 다음과 같습니다.

  • 매번 같은 패턴을 수동으로 생성
  • 회문을 찾기 위해 고가의 역 참조 사용
  • 1에서 input.length ()까지 반복 (역순으로하면 가장 먼저 찾은 것이 가장 길다는 것을 보장 할 수 있습니다. 위의 방법은 멍청합니다)

0

파이썬 3

from itertools import takewhile

def common_part(s1, s2):
    return sum(takewhile(bool, (a==b for a, b in zip(s1, s2)))) 

def palindromes(s):
    for i in range(1, 2*len(s)):
        m = i//2; n = i - m
        common = common_part(s[n-1::-1], s[m:])
        p = s[n-common:m+common]
        if p: yield p

string = input('> ')

print('Longest palindrome is', repr(max(palindromes(string), key=len)))

매우 효율적인 프로그램. 그것은 중심 위치가 순차적 인 위치 (문자와 사이)로 긴 회문을 검색하고 가장 긴 선택

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.