On Fri, 03 Aug 2007 13:46:16 +0000, Paul Novak wrote: > There is no end of numerological[0,1] variations that could be used by > anyone who feels the need for an additional challenge this week. Well then, along those lines I have a Hebrew gematria counter. Give it words on the commandline, and it will tell you what the gematria is of those words, and what the total gematria. I use this to check when converting Hebrew citations of Jewish books into English for the benefit of those reading English newsgroups. #!/usr/bin/env ruby $KCODE = "u" require "jcode" require 'generator' class String def u_reverse; split(//).reverse.join; end end 窶ュLETTERVALUES=Hash.new(0).merge \ Hash['' => 1, '' => 2, '' => 3, '' => 4, '' => 5, '' => 6, '' => 7, '' => 8, '' => 9, '' => 10, '' => 20 '' => 30, '' => 40, '' => 50, '' => 60, '' => 70, '' => 80, 窶ュ 'ラヲ' => 90, 'ラァ' => 100, 'ラィ' => 200, 'ラゥ' => 300, 'ラェ' => 400, '' => 40, '' => 20 , '' => 50, '' => 80, '' => 90] gematrias=ARGV.collect do |word| word.split(//).inject(0) do |t,l| t+LETTERVALUES[l] end end SyncEnumerator.new(ARGV, gematrias).each do |word,value| #reverse the word to print it RTL if all of the characters in it #are hebrew letters #note that this doesn't find nikudot, but then we don't care #anyway because the terminal mangles nikudot -- the result will be #so mangled anyway that we don't care whether it's reversed word=word.u_reverse if word.split(//)-LETTERVALUES.keys==[] printf "%s %d\n", word, value end printf "Total %d\n", gematrias.inject {|t,l| t+l} -- Ken Bloom. PhD candidate. Linguistic Cognition Laboratory. Department of Computer Science. Illinois Institute of Technology. http://www.iit.edu/~kbloom1/