Differing output for function moved from ruby 1.8 to 1.9

Discussion in 'Ruby' started by DJ Jazzy Linefeed, May 16, 2008.

  1. Sup, fools?

    This is the Levenshtein function I'm gankin' for my file comparison
    project (see "40 million comparison..." thread):

    # Levenshtein calculator
    # Author: Paul Battley ()
    # Modified slightly by John Perkins:
    # -- removed $KCODE call

    def distance(str1, str2)

    unpack_rule = 'C*'
    s = str1.unpack(unpack_rule)
    t = str2.unpack(unpack_rule)
    n = s.length
    m = t.length

    return m if (0 == n) # stop the madness if either string is empty
    return n if (0 == m)

    d = (0..m).to_a
    x = nil

    (0...n).each do |i|
    e = i + 1
    (0...m).each do |j|
    cost = (s == t[j]) ? 0 : 1
    x = [
    d[j + 1] + 1, # insertion
    e + 1, # deletion
    d[j] + cost # substitution
    ].min
    d[j] = e
    e = x
    end
    d[m] = x
    end

    return x
    end

    When I ran this with test data in ruby 1.8 the output was 969, but
    when I ran it on a 1.9 install the output was 1011. I'm aware that
    some of the rules have changed, especially with arrays. Does anyone
    see where the discrepancy lies, because I sure as heck don't. The
    files didn't change so the distance shouldn't either. Thanks for all
    your help in advance.
    DJ Jazzy Linefeed, May 16, 2008
    #1
    1. Advertising

  2. Here's an idea: a migration script that detects when and where a
    script will break after the big 1.9/2 move.

    I'm not that good of a rubyist, but I know there's about a dozen
    people reading these that could have it done by Friday night (I'm
    looking at YOU, _why).
    DJ Jazzy Linefeed, May 16, 2008
    #2
    1. Advertising

  3. -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    DJ Jazzy Linefeed wrote:
    | Here's an idea: a migration script that detects when and where a
    | script will break after the big 1.9/2 move.
    |
    | I'm not that good of a rubyist, but I know there's about a dozen
    | people reading these that could have it done by Friday night (I'm
    | looking at YOU, _why).

    Maybe *the* chance to get your 15 minutes of fame, and deepen your
    understanding of Ruby at the same time.

    - --
    Phillip Gawlowski
    Twitter: twitter.com/cynicalryan
    Blog: http://justarubyist.blogspot.com

    Use recursive procedures for recursively-defined data structures.
    ~ - The Elements of Programming Style (Kernighan & Plaugher)
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.8 (MingW32)
    Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

    iEYEARECAAYFAkgs/uMACgkQbtAgaoJTgL9c6gCdHNEyySRQx9kSdoAiO1gcy3T3
    WYQAnR3pbFzYV+ruMrxv2h8mag3J9OqX
    =+ICc
    -----END PGP SIGNATURE-----
    Phillip Gawlowski, May 16, 2008
    #3
  4. I think a no-brainer prerequisite to this script would be 2.0 actually
    being released.
    DJ Jazzy Linefeed, May 16, 2008
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Jo Blow

    documents on differing paradigms

    Jo Blow, Dec 25, 2004, in forum: ASP .Net
    Replies:
    0
    Views:
    325
    Jo Blow
    Dec 25, 2004
  2. Christopher Key

    Differing function prototypes and definitions

    Christopher Key, Sep 28, 2007, in forum: C Programming
    Replies:
    3
    Views:
    364
    CBFalconer
    Oct 3, 2007
  3. weafon
    Replies:
    1
    Views:
    303
    Diez B. Roggisch
    Jul 14, 2009
  4. Replies:
    0
    Views:
    212
  5. Ben Gribaudo
    Replies:
    0
    Views:
    212
    Ben Gribaudo
    Jan 9, 2006
Loading...

Share This Page