[#335632] SOAP - issue with openssl verification failure — Venkat Alla <spinhoo2000@...>

I have the following code in a script that I am trying to use at work -

10 messages 2009/05/01

[#335755] Should I upgrade Ruby from 1.8.5 to 1.8.7? — Cali Wildman <caliwildman2004-info@...>

I just upgraded to Rails 2.3.2 but my Ruby is still 1.8.5. Rails 2.3.2

23 messages 2009/05/04

[#335777] my logroll code, please critique — Derek Smith <derekbellnersmith@...>

My goal is to keep 10 files each at 100Mb. Please critique and suggest

12 messages 2009/05/05

[#335842] '=||' — James Byrne <byrnejb@...>

Can someone point out to me where exactly in the API I find a discussion

18 messages 2009/05/05
[#335843] Re: '=||' — Eleanor McHugh <eleanor@...> 2009/05/05

On 5 May 2009, at 20:51, James Byrne wrote:

[#336031] Superclass of eigenclass — Danny O cuiv <danny.ocuiv@...>

On page 261 of The Ruby Programming Language, they state:

30 messages 2009/05/07
[#336052] Re: Superclass of eigenclass — Rick DeNatale <rick.denatale@...> 2009/05/07

On Thu, May 7, 2009 at 8:35 AM, Danny O cuiv <danny.ocuiv@gmail.com> wrote:

[#336056] Re: Superclass of eigenclass — Rick DeNatale <rick.denatale@...> 2009/05/07

On Thu, May 7, 2009 at 11:50 AM, Rick DeNatale <rick.denatale@gmail.com> wrote:

[#336061] Ruby memory usage — Pete Hodgson <ruby-forum@...>

Hi Folks,

23 messages 2009/05/07

[#336087] File over tcp? with out using net/ftp — Bigmac Turdsplash <i8igmac@...>

Im trying to send a file back and forth between a client.rb and

12 messages 2009/05/07

[#336160] CGI help — Jeff Leggett <hikerguy@...>

So, I am trying ot read the contents of a file and format the contents

19 messages 2009/05/08

[#336168] ruby string slice/[] w/ range, weird end behavior — Gary Yngve <gary.yngve@...>

First the docs:

17 messages 2009/05/08
[#336169] Re: ruby string slice/[] w/ range, weird end behavior — Eleanor McHugh <eleanor@...> 2009/05/08

On 9 May 2009, at 00:26, Gary Yngve wrote:

[#336205] converting UTF-8 to entities like &#x525B; — Jian Lin <winterheat@...>

15 messages 2009/05/09

[#336385] Any current preprocessor/Ruby language add-ons? — "C. Dagnon" <c-soc-rubyforum@...>

This is kind of a wide-ranging question but for some fairly specific

16 messages 2009/05/12

[#336411] Whaaaaat? — Tom Cloyd <tomcloyd@...>

p [0..5].include? 0

26 messages 2009/05/12

[#336458] what could be improved in Ruby for Science? — Diego Virasoro <Diego.Virasoro@...>

Hello,

20 messages 2009/05/13

[#336505] Syntactic sugar idea — Daniel DeLorme <dan-ml@...42.com>

It seems that often an object will be passed into a block only to invoke

26 messages 2009/05/14
[#336508] Re: [bikeshed] Syntactic sugar idea — Jan <jan.h.xie@...> 2009/05/14

* Daniel DeLorme <dan-ml@dan42.com> [2009-05-14 11:42:31 +0900]:

[#336766] Berkeley DB or Store equivalent? — Mk 27 <halfcountplus@...>

I have never used mySQL because perl's Storable or BerkeleyDB modules

16 messages 2009/05/17

[#336783] permute each element of a ragged array? — Phlip <phlip2005@...>

Rubies:

19 messages 2009/05/17

[#336821] Sorting numbers as strings — Jack Bauer <realmadrid2727@...>

I'm trying to sort some strings containing numbers. The strings

14 messages 2009/05/18

[#336850] Introducing RubyScience on GitHub! — Joshua Ballanco <jballanc@...>

In the tradition of actions vs. words, I present to you:

14 messages 2009/05/18

[#336930] Create an exe with Ruby 1.9.1 — Marc-antoine Kruzik <kadelfek@...>

Hello !

23 messages 2009/05/19

[#336939] Pythonic indentation (or: beating a dead horse) — J Haas <Myrdred@...>

Greetings, folks. First time poster, so if I breach

235 messages 2009/05/19
[#337016] Re: Pythonic indentation (or: beating a dead horse) — Roger Pack <rogerpack2005@...> 2009/05/20

> ...maybe something like this:

[#337699] Re: Pythonic indentation (or: beating a dead horse) — J Haas <Myrdred@...> 2009/05/28

On May 27, 10:21=A0pm, James Britt <james.br...@gmail.com> wrote:

[#337734] Re: Pythonic indentation (or: beating a dead horse) — James Britt <james.britt@...> 2009/05/28

J Haas wrote:

[#337740] Re: Pythonic indentation (or: beating a dead horse) — Juan Zanos <juan_zanos@...> 2009/05/28

On May 28, 2009, at 2:33 PM, James Britt wrote:

[#337745] Re: Pythonic indentation (or: beating a dead horse) — J Haas <Myrdred@...> 2009/05/28

On May 28, 11:15=A0am, Eleanor McHugh <elea...@games-with-brains.com>

[#337954] Re: Pythonic indentation (or: beating a dead horse) — Steven Arnold <stevena@...> 2009/05/30

After listening to this debate for some time, the position of allowing

[#338133] Re: Pythonic indentation (or: beating a dead horse) — Andy F <andchafow-ruby@...> 2009/06/02

[#338172] Re: Pythonic indentation (or: beating a dead horse) — Eleanor McHugh <eleanor@...> 2009/06/02

On 2 Jun 2009, at 06:20, Andy F wrote:

[#337023] Re: Pythonic indentation (or: beating a dead horse) — J Haas <Myrdred@...> 2009/05/20

On May 20, 8:51=A0am, Rick DeNatale <rick.denat...@gmail.com> wrote:

[#337025] Re: Pythonic indentation (or: beating a dead horse) — Rick DeNatale <rick.denatale@...> 2009/05/20

On Wed, May 20, 2009 at 2:35 PM, J Haas <Myrdred@gmail.com> wrote:

[#337045] Re: Pythonic indentation (or: beating a dead horse) — J Haas <Myrdred@...> 2009/05/20

On May 20, 12:25=A0pm, Tony Arcieri <t...@medioh.com> wrote:

[#337581] Re: Pythonic indentation (or: beating a dead horse) — J Haas <Myrdred@...> 2009/05/27

On May 22, 9:01=A0am, Roger Pack <rogerpack2...@gmail.com> wrote:

[#337673] Re: Pythonic indentation (or: beating a dead horse) — Juan Zanos <juan_zanos@...> 2009/05/28

[#337686] Re: Pythonic indentation (or: beating a dead horse) — Eleanor McHugh <eleanor@...> 2009/05/28

On 28 May 2009, at 15:06, Juan Zanos wrote:

[#337002] Ruby 1.8 vs. Ruby 1.9 — Calvin <cstephens4@...>

Hi,

17 messages 2009/05/20

[#337094] snailgun-1.0.2 — Brian Candler <b.candler@...>

New experimental project:

18 messages 2009/05/21

[#337115] w00t! Party for Gregory! — pat eyler <pat.eyler@...>

> On May 20, 2009, Gregory Brown wrote:

12 messages 2009/05/21

[#337221] Cryptogram II (#206) — Daniel Moore <yahivin@...>

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

17 messages 2009/05/22

[#337323] String concatenation in Ruby — Jagadeesh <mnjagadeesh@...>

Hi,

18 messages 2009/05/25

[#337340] Do you nest classes inside classes? — Mike Stephens <rubfor@...>

Object Orientation is conceptually about a sea of objects interacting

11 messages 2009/05/25

[#337366] Runnin code at a certain time? — Tom Ricks <carrottop123@...>

Hello all,

20 messages 2009/05/25
[#337392] Re: Runnin code at a certain time? — Caleb Clausen <vikkous@...> 2009/05/25

On 5/25/09, Tom Ricks <carrottop123@gmail.com> wrote:

[#337413] Other languages to try? — Adam Gardner <adam.oddfellow@...>

So, I've been programming in Ruby for a good while now. Not an expert,

20 messages 2009/05/26

[#337421] Newbie on Threads — Nabs Kahn <nabusman@...>

I'm creating a screen scraping software and I want to have X (let's say

13 messages 2009/05/26
[#337424] Re: Newbie on Threads — Robert Klemme <shortcutter@...> 2009/05/26

2009/5/26 Nabs Kahn <nabusman@gmail.com>:

[#337507] Something Not going with my LDAP using SSL — Xeno Campanoli <xeno.campanoli@...>

I have the following working with cleartext LDAP:

20 messages 2009/05/26
[#337539] Re: Something Not going with my LDAP using SSL — Brian Candler <b.candler@...> 2009/05/27

Xeno Campanoli wrote:

[#338073] Re: Something Not going with my LDAP using SSL — Xeno Campanoli <xeno.campanoli@...> 2009/06/01

Brian Candler wrote:

[#338082] Re: Something Not going with my LDAP using SSL — Brian Candler <b.candler@...> 2009/06/01

Xeno Campanoli wrote:

[#338084] Re: Something Not going with my LDAP using SSL — Xeno Campanoli <xeno.campanoli@...> 2009/06/01

Brian Candler wrote:

[#338094] Re: Something Not going with my LDAP using SSL — Brian Candler <b.candler@...> 2009/06/01

Xeno Campanoli wrote:

[#338095] Re: Something Not going with my LDAP using SSL — Xeno Campanoli <xeno.campanoli@...> 2009/06/01

Brian Candler wrote:

[#338096] Re: Something Not going with my LDAP using SSL — Xeno Campanoli <xeno.campanoli@...> 2009/06/01

Xeno Campanoli wrote:

[#337574] Installing Ruby 1.9.1 Binary on Windows Vista — Joel Dezenzio <jdezenzio@...>

I've searched and only found one topic which did not have an answer or

27 messages 2009/05/27

[#337671] death toll — deka <rocha.deka@...>

Hi, I am a Brazilian girl and I have a doubt abour numbers in English.

13 messages 2009/05/28

[#337823] Endless Ruby 0.0.2 — Caleb Clausen <vikkous@...>

endless.rb is a pre-processor for ruby which allows you to use python-ish

22 messages 2009/05/29

[#337841] Regular expression — Harry Kakueki <list.push@...>

I want to write a regular expression to do the following.

13 messages 2009/05/29

[#337869] Quine (#207) — Daniel Moore <yahivin@...>

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

46 messages 2009/05/29
[#338000] Re: [QUIZ] Quine (#207) — pjb@... (Pascal J. Bourguignon) 2009/05/31

Robert Dober <robert.dober@gmail.com> writes:

[#338018] Re: [QUIZ] Quine (#207) — Aureliano Calvo <aurelianocalvo@...> 2009/06/01

I did something like that, but with parenthesis.

[#337899] Requesting Japanese Translation — James Gray <james@...>

I'm adding a little Japanese to a Ruby presentation I am giving. I

13 messages 2009/05/30

[#337961] nokogiri 1.3.0 Released — Aaron Patterson <aaron@...>

nokogiri version 1.3.0 has been released!

32 messages 2009/05/30
[#337962] Re: nokogiri 1.3.0 Released — Roger Pack <rogerpack2005@...> 2009/05/30

Aaron Patterson wrote:

[#337966] Re: nokogiri 1.3.0 Released — Aaron Patterson <aaron@...> 2009/05/30

On Sun, May 31, 2009 at 06:43:05AM +0900, Roger Pack wrote:

[#337968] Re: nokogiri 1.3.0 Released — Iii Iii <bqotatjyujepur@...> 2009/05/30

> gem install nokogiri

[#337985] Re: nokogiri 1.3.0 Released — Aaron Patterson <aaron@...> 2009/05/31

On Sun, May 31, 2009 at 08:37:54AM +0900, Iii Iii wrote:

[#338049] Re: nokogiri 1.3.0 Released — Roger Pack <rogerpack2005@...> 2009/06/01

Re: [QUIZ] Encyclopedia Construction (#205)

From: Frank Fischer <frank-fischer@...>
Date: 2009-05-18 15:40:09 UTC
List: ruby-talk #336831
Hi,

here's my solution.  It's based on classic dynamic programming over the
number of words for each letter.  

I used different objective functions to get good book sizes:

  1. Maximize the minimal number of words in one book,
  2. minimize the maximal number of words in one book,
  3. minimize the absolute deviation of the number of words in one 
     book to the average number of words in one book ,
  4. minimize the quadratic deviation of the number of words in one
     book to the average number of words in one book.

For the given word list, objective function 4 seems to yield the best
results with good distributed word counts.

The program is called with three arguments:

  1. The name of the word-list file (one word per line), 
  2. the number of books in which the words should be distributed,
  3. a number 1,2,3 or 4 selecting the objective function.

The programm prints 

  1. the number of words per letter,
  2. the words per book,
  3. the number of words per book.

The current implementation is quite inelegant and could be improved
and be more rubyish.


---
require 'facets/enumerable'
require 'enumerator'
require 'pp'

word_file = ARGV.shift      || "words.txt"
nbooks = ARGV.shift.to_i    || 10
algorithm = ARGV.shift.to_i || 3

# ruby 1.8
class Integer
    def ord; self; end
end


class Wordlist

    attr_reader :books

    def initialize( words )
        # sort them
        @words = words.sort {|w1, w2| w1.downcase <=> w2.downcase }
        
        # get number of words per letter
        @nletters = Array.new(26, 0)
        @words.each do |w|
            @nletters[w.downcase[0].ord - ?a.ord] += 1
        end

    end

    
    # Returns the number of words per character
    def letter_counts
        (?A .. ?Z).mash{|c| [c.chr, @nletters[c.ord - ?A.ord]]}
    end

    
    # Returns number of words in each book
    def counts
        @books.mash{|range, words| [range, words.size]}
    end

    
    # divide into +nbooks+ books by minimizing the maximal number
    # of words in one book
    def min_maximum( nbooks )
        dyn_min( nbooks ) { |*s| s.max }
    end

    
    # divide into +nbooks+ books by maximizing the minmal number
    # of words in one book
    def max_minimum( nbooks )
        dyn_min( nbooks ) { |*s| -s.min }
    end


    # divide into +nbooks+ books by minimizing the deviation from the
    # average number of words in one book
    def min_deviat( nbooks )
        mean = sum( 0...@nletters.size ).to_f / nbooks
        dyn_min( nbooks ) { |*s| s.inject(0){|sum,x| sum + (x - mean).abs} }
    end

    
    # divide into +nbooks+ books by minimizing the quadratic deviation
    # from the average number of words in one book
    def min_deviat2( nbooks )
        mean = sum( 0...@nletters.size ).to_f / nbooks
        dyn_min( nbooks ) { |*s| s.inject(0){|sum,x| sum + (x - mean) ** 2 } }
    end

private

    # computes
    #   sum_{i\in range} @nletters[i]
    def sum( range )
        range.inject(0) {|s,i| @nletters[i] + s}
    end

    
    # A range of letters in the same book.
    class Book
        def initialize( range, n_words )
            @range = range
            @n_words = n_words
        end

        # The first letter in this book
        def min; @range.min; end

        # The last letter in this book
        def max; @range.max; end

        # Is letter x in this book?
        def include?(x); @range.include?(x); end

        # returns the number of all words in this book
        attr_reader :n_words
    end


    # Computes a solution where
    #   max{ func(part_sum) }
    # is minimized
    def dyn_min( nbooks, &func )
        mean = sum( 0...@nletters.size ).to_f / nbooks
        
        books = Array.new( @nletters.size )
        s = 0
        (@nletters.size - 1).downto(0) do |i|
            s += @nletters[i]
            range = i ... @nletters.size
            books[i] = [Book.new( range, sum(range) )]
        end

        nbooks.times do 

            new_books = Array.new( @nletters.size )
            
            for s in 0 ... @nletters.size
                best_value = nil
                best_end = nil
                sum = @nletters[s] # value of the current part
                for e in (s + 1) ... @nletters.size
                    # stop if no further subdivisions are possible
                    break unless books[e]
                    
                    value = func.call(sum, *books[e].map{|r| r.n_words})
                    if best_value.nil? || value < best_value
                        best_value = value
                        best_end = e
                    end
                    
                    sum += @nletters[e] || 0
                end

                if best_value
                    new_books[s] = [Book.new(s ... best_end, 
		                             sum(s ... best_end))] + 
				    books[best_end]
                end
            end

            books = new_books
        end

        @books = Hash.new 
        books[0].each do |book|
            words = @words.find_all{|w| 
	        book.include?(w.downcase[0].ord - ?a.ord)
	    }
            if book.min == book.max
	        key = (?A.ord + book.min).chr
            else
	        key = "#{(?A.ord + book.min).chr}-#{(?A.ord + book.max).chr}"
            end
            @books[key] = words
        end

        @books
    end
end

# read word list
words = []
File.open( word_file, "r" ) do |f|
    f.each_line do |line|
        line.strip!
        words << line unless line.empty?
    end
end



list = Wordlist.new( words )
p list.letter_counts

case algorithm
when 1
    list.min_maximum( nbooks )
when 2
    list.max_minimum( nbooks )
when 3
    list.min_deviat( nbooks )
when 4
    list.min_deviat2( nbooks )
else
    raise "Unknown algorithm: #{algorithm} (should be in {0,1,2,3})"
end

pp list.books
p list.counts
---

Bye,
Frank


In This Thread