The Holy Trinity Of P

chaoticset on 2003-10-03T16:55:28

By which I mean Perl, Python, and PHP. I'm trying to convince myself lately that it would be a good thing to learn, someday, about 3/4 as much Python as I know Perl, and 1/2 as much PHP as I know Perl.

Been working on a brain-twisting palindrome problem, where I get a word list and need to generate palindromes from it, but I haven't managed to figure out how to handle it. It's just damn hard. I'm going to attempt meditation on the Wolf over the weekend and try to figure out what kind of problem just figuring out partial palindromes is. (As in, what kind of problem in big O notation.)


reverse?

djberg96 on 2003-10-03T18:06:31

Been working on a brain-twisting palindrome problem, where I get a word list and need to generate palindromes from it

I take it that it must be more complex than just doing reverse() on the string. Or did you mean anagram?

Re:reverse?

jmm on 2003-10-03T18:48:22

reverse is an easy way to test whether a provided value is a palindrome, but he asked about generating palindromes.

Taking the work list and making a reversed copy is only a small part of generation. For example, if you happen to choose the word "top" as a starting point, the reversed word list can be used to check possible tail ends for a palindrome ("t" doesn't work, "ot" doesn't work, "pot" is a candidate); but that is insufficient, since it doesn't find longer words that end in pot as additional candidates ("spot", "despot", "depot", "flowerpot", etc.). It also doesn't deal with the issues of deciding which words to try in the first place, ensuring that the resulting sentence is at least grammatically correct, if not meaningful, and so on.

Re:reverse?

chaoticset on 2003-10-05T13:48:41

It's the generation that's the hard part, yes.

I'm trying to focus on the "what word to start with" part (because I think that the right beginning is probably the trick here), and for some reason or other I figured it might be a good idea to start with the pivot point and move outward from there. I'm starting to think that a process where possible pivot points are identified, and possible end points are identified, and then guessing ensues from there would be better than trying to grow off the pivot point, but I keep feeling like there's got to be a better way to do it.

So far, the basic analysis stuff I'm doing will, by my estimates, take 10 hours to run on the actual full wordlist, so I'm starting to work with a much smaller subset of that, less than 1/10th, and figure once I've got interesting results from that I'll run it on the full data and leave it overnight.

Any hints/modules/insights available from anyone are welcome.

R is for...

koschei on 2003-10-05T09:06:29

How about Ruby? Doesn't start with a P, but I think if you know Ruby and Perl then there's nothing to be learned from the other two Ps (although PHP is wonderful if you ever want to learn about bad language design).