wordl-solver 0.2.3 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 56ce5f7a8f29124bd5053d1c3fa132c27ed5bca0afad0c7b9e08fd9a8b955426
4
- data.tar.gz: 96b0e2b206b9fbd70cca2f1173981b5ae4b00f21f22b18a3522a40cb06a71fcb
3
+ metadata.gz: 305e535ba00f1575dc37467e0470f5dbeaa09305d97249a32e424bd2e11ac681
4
+ data.tar.gz: fe0e636175eb643a90b505c6b61c95f2b9e5d981099a65621b1a51c966806191
5
5
  SHA512:
6
- metadata.gz: 1d79901c808526549dbdb936daac69306e8e13dac03bb349e0428ae49e4266bbcf1ac51ccdde73ba662513d9907d04a7b4881d3c1666a3d3a39db36640852339
7
- data.tar.gz: c3c86f6da385c609973fd5572f8237a981e57672b7a0e15fb6b660976c7da8e2f58cd4a68a9232196aca688e59870593522d9da7c5063b1832c082b2754bda48
6
+ metadata.gz: 0d1a26c4dd20265ddecb849c41abc24c09e5439d86723ff3626fb7866ca6e5e16d10742faa38b64b203bf70716390726d0989f4bc69cb553d9c92fde32a61f3a
7
+ data.tar.gz: b3f343941f8ed958327604f0c454d922adeb7f14a66eff876ca15a074e64aebf7d27073f84c70b1b33dea328e39861dce1fe65fad4ccd4d43fe34b28992b0ef5
data/Rakefile CHANGED
@@ -1,16 +1,14 @@
1
- # encoding: utf-8
2
-
3
- require 'rubygems'
4
- require 'bundler'
1
+ require "rubygems"
2
+ require "bundler"
5
3
  begin
6
4
  Bundler.setup(:default, :development)
7
5
  rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
6
+ warn e.message
7
+ warn "Run `bundle install` to install missing gems"
10
8
  exit e.status_code
11
9
  end
12
- require 'rake'
13
- require 'juwelier'
10
+ require "rake"
11
+ require "juwelier"
14
12
  Juwelier::Tasks.new do |gem|
15
13
  # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
16
14
  gem.name = "wordl-solver"
@@ -22,30 +20,30 @@ Juwelier::Tasks.new do |gem|
22
20
  gem.authors = ["george kosmopoulos"]
23
21
  gem.files.include "lib/*"
24
22
  # dependencies defined in Gemfile
25
- gem.executables = ['wordl-solver']
23
+ gem.executables = ["wordl-solver"]
26
24
  end
27
25
  Juwelier::RubygemsDotOrgTasks.new
28
- require 'rake/testtask'
26
+ require "rake/testtask"
29
27
  Rake::TestTask.new(:test) do |test|
30
- test.libs << 'lib' << 'test'
31
- test.pattern = 'test/**/test_*.rb'
28
+ test.libs << "lib" << "test"
29
+ test.pattern = "test/**/test_*.rb"
32
30
  test.verbose = true
33
31
  end
34
32
 
35
33
  desc "Code coverage detail"
36
34
  task :simplecov do
37
- ENV['COVERAGE'] = "true"
38
- Rake::Task['test'].execute
35
+ ENV["COVERAGE"] = "true"
36
+ Rake::Task["test"].execute
39
37
  end
40
38
 
41
- task :default => :test
39
+ task default: :test
42
40
 
43
- require 'rdoc/task'
41
+ require "rdoc/task"
44
42
  Rake::RDocTask.new do |rdoc|
45
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
43
+ version = File.exist?("VERSION") ? File.read("VERSION") : ""
46
44
 
47
- rdoc.rdoc_dir = 'rdoc'
45
+ rdoc.rdoc_dir = "rdoc"
48
46
  rdoc.title = "wordl-solver #{version}"
49
- rdoc.rdoc_files.include('README*')
50
- rdoc.rdoc_files.include('lib/**/*.rb')
47
+ rdoc.rdoc_files.include("README*")
48
+ rdoc.rdoc_files.include("lib/**/*.rb")
51
49
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.3
1
+ 0.2.6
data/bin/wordl-solver CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'wordl-solver'
3
+ require 'wordl_solver'
4
4
  WordlSolver.run
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'csv'
2
4
  require 'fileutils'
3
5
 
4
6
  FILE_PATH = File.join(File.dirname(__FILE__), '5_words.csv')
5
7
 
6
8
  LETTER_WORDS = []
7
- LETTER_FRENQUENCY = %w[e t a o i n s h r d l c u m f w y g p b v k j x q z].freeze
8
9
 
9
10
  CSV.foreach(FILE_PATH) do |row|
10
11
  LETTER_WORDS << row[0]
@@ -59,21 +60,26 @@ class WordlSolver
59
60
  puts "sorry, didn't catch that, try again:"
60
61
  letters = gets.chomp
61
62
  end
62
- if letters[0] == 's'
63
- @greys << letters[1]
64
- elsif letters[0] == 'y'
65
- @yellows[t] << letters[1]
66
- else
67
- @greens[t] = letters[1]
68
- end
63
+ sort_letter_upon_color(letters, t)
69
64
  else
70
65
  puts "for position #{t + 1} this #{@greens[t]}"
71
66
  end
72
67
  end
73
- [@greens, @yellows, @greys]
68
+ end
69
+
70
+ def sort_letter_upon_color(letters, t)
71
+ case letters[0]
72
+ when 's'
73
+ @greys << letters[1]
74
+ when 'y'
75
+ @yellows[t] << letters[1]
76
+ else
77
+ @greens[t] = letters[1]
78
+ end
74
79
  end
75
80
 
76
81
  def find_possible_words
82
+ @possible_words = @possible_words.empty? ? LETTER_WORDS : @possible_words
77
83
  filter_greens
78
84
  filter_yellows
79
85
  filter_greys
@@ -82,21 +88,22 @@ class WordlSolver
82
88
  def present_possible_words
83
89
  puts 'here are the existing words'
84
90
  hash_word_frequency = {}
91
+ set_letters_frequencies
85
92
  @possible_words.each do |word|
86
93
  count = 0
87
- word.chars.each do |char|
88
- count += LETTER_FRENQUENCY.index(char) + 2 * word.chars.count(char)
94
+ word.chars.uniq.each do |char|
95
+ count += @frenquencies[char]
89
96
  end
90
97
  hash_word_frequency[word] = count
91
98
  end
92
99
  hash_word_frequency = hash_word_frequency.sort_by { |_k, v| v }
93
- hash_word_frequency.first(30).each do |word, count|
100
+ hash_word_frequency.last(30).each do |word, count|
94
101
  p "#{word} : #{count}"
95
102
  end
96
103
  end
97
104
 
98
105
  def filter_greens
99
- @possible_words = (@possible_words.empty? ? LETTER_WORDS : @possible_words).select do |word|
106
+ @possible_words.select! do |word|
100
107
  put_in = true
101
108
  @greens.each do |key, value|
102
109
  next if value.nil?
@@ -128,4 +135,14 @@ class WordlSolver
128
135
  def check_word_correct(letters)
129
136
  letters.length != 2 || !%w[s y g].include?(letters[0])
130
137
  end
138
+
139
+ def set_letters_frequencies
140
+ @frenquencies = {}
141
+ @possible_words.each do |word|
142
+ word.chars.each do |letter|
143
+ @frenquencies[letter] = 0 if @frenquencies[letter].nil?
144
+ @frenquencies[letter] += 1
145
+ end
146
+ end
147
+ end
131
148
  end
data/wordl-solver.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: wordl-solver 0.2.3 ruby lib
5
+ # stub: wordl-solver 0.2.6 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "wordl-solver".freeze
9
- s.version = "0.2.3"
9
+ s.version = "0.2.6"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["george kosmopoulos".freeze]
14
- s.date = "2022-04-22"
14
+ s.date = "2022-05-19"
15
15
  s.description = "This gem helps you solve wordl puzzles. It does so by asking you for the letters position you know, the letters you know exists and the ones you know don't exists. It then proposes words depending on how good they are by weighting the letters by their frequency in the english language.".freeze
16
16
  s.email = "gkosmo1@hotmail.com".freeze
17
17
  s.executables = ["wordl-solver".freeze]
@@ -29,7 +29,7 @@ Gem::Specification.new do |s|
29
29
  "VERSION",
30
30
  "bin/wordl-solver",
31
31
  "lib/5_words.csv",
32
- "lib/wordl-solver.rb",
32
+ "lib/wordl_solver.rb",
33
33
  "wordl-solver.gemspec"
34
34
  ]
35
35
  s.homepage = "http://github.com/gkosmo/wordl-solver".freeze
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wordl-solver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - george kosmopoulos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-22 00:00:00.000000000 Z
11
+ date: 2022-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: shoulda
@@ -101,7 +101,7 @@ files:
101
101
  - VERSION
102
102
  - bin/wordl-solver
103
103
  - lib/5_words.csv
104
- - lib/wordl-solver.rb
104
+ - lib/wordl_solver.rb
105
105
  - wordl-solver.gemspec
106
106
  homepage: http://github.com/gkosmo/wordl-solver
107
107
  licenses: