On Fri, 2 Sep 2005, Berger, Daniel wrote:

>> -----Original Message-----
>> From: Josh Charles [mailto:josh.charles / gmail.com]
>> Sent: Thursday, September 01, 2005 9:06 AM
>> To: ruby-talk ML
>> Subject: palindrome finder
>>
>>
>> I've been working on this piece of code and it's starting to
>> drive me crazy.  I think it's a problem with reference vs
>> value type, but I'm not sure.  I'm just writing a simple
>> program to process a list of words and print out all the
>> palindromes (words that read the same forward and backward)
>>
>> Here is my code:
>>
>> file = File.open("testdict.txt", "r" ) do |file|
>>     file.each_line("\n") do |line|
>>         #filelist.push( line )
>>         line.downcase!
>>         if (line == line.reverse)
>>             puts line
>>         end
>>     end
>> end
>>
>> I've made sure each line is being read properly, and it is.
>> The if statement never returns true, however.  I'm new to
>> ruby, so I'm probably just doing something really stupid, but
>> I can't figure it out yet.
>
> That can be shortened to:
>
> IO.foreach("testdict.txt"){ |line|
>    line.downcase!.chomp!
>    puts line if line == line.reverse?
> }
>
> Note the chomp!

rule of thumb - never chain bang methods:

   harp:~ > irb
   irb(main):001:0> 'foobar'.downcase!
   => nil

so the code will throw like so:

   irb(main):002:0> 'foobar'.downcase!.chomp!
   NoMethodError: private method `chomp!' called for nil:NilClass
           from (irb):2

so maybe:


     harp:~ > cat a.rb
     palindrome = lambda{|s| s = s.strip and s == s.reverse}
     IO::foreach("words"){|w| puts w if palindrome[ w ]}


     harp:~ > ruby a.rb
     bib
     bob
     boob
     civic
     dad
     deed
     did
     dud
     eke
     ere
     ewe
     eye
     gag
     gig
     huh
     level
     madam
     non
     noon
     nun
     peep
     pep
     pip
     pop
     pup
     radar
     redder
     refer
     reviver
     rotator
     rotor
     sees
     sexes
     solos
     tit

cheers.

-a
-- 
===============================================================================
| email :: ara [dot] t [dot] howard [at] noaa [dot] gov
| phone :: 303.497.6469
| Your life dwells amoung the causes of death
| Like a lamp standing in a strong breeze.  --Nagarjuna
===============================================================================