Sha256: 1472a0afb813d716e61b73892523b6d5033394745a54febe9d7ba4cb8e7f635a

Contents?: true

Size: 649 Bytes

Versions: 148

Compression:

Stored size: 649 Bytes

Contents

module BookKeeping
  VERSION=2
end

class Anagram
  attr_reader :subject
  def initialize(word)
    @subject = AnagramSubject.new(word)
  end

  def match(candidates)
    candidates.select do |candidate|
      subject.anagram_of? candidate
    end
  end
end

class AnagramSubject
  attr_reader :subject
  def initialize(subject)
    @subject = subject
  end

  def anagram_of?(word)
    !duplicate?(word) && fingerprint == canonicalize(word)
  end

  def duplicate?(word)
    word.downcase == subject.downcase
  end

  def canonicalize(word)
    word.downcase.chars.sort
  end

  def fingerprint
    @fingerprint ||= canonicalize(subject)
  end
end

Version data entries

148 entries across 148 versions & 1 rubygems

Version Path
trackler-2.1.0.1 tracks/ruby/exercises/anagram/example.rb
trackler-2.1.0.0 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.55 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.54 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.53 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.52 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.51 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.50 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.49 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.48 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.47 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.46 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.45 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.44 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.43 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.42 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.41 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.40 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.39 tracks/ruby/exercises/anagram/example.rb
trackler-2.0.8.38 tracks/ruby/exercises/anagram/example.rb