guessword 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +15 -0
  2. data/bin/guessword +13 -0
  3. data/lib/guessword.rb +72 -0
  4. metadata +66 -0
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MmQ4ZTEzNTYzZDIwODNmM2RiM2MxM2EyNzhjNWU1ZmQyMGMyZjJlMw==
5
+ data.tar.gz: !binary |-
6
+ NmM4MTNhYjVhYmJkM2VkNmFiZDY1MzdjMmRlOGY1MmZhZDNlNWI0Mg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ OTRmOGM0NGVhOGQ5ZWUzODAzY2UxNjI5ZTg2OGJlZGIxZjQwMzlmYmEwNGZh
10
+ YTg5YmM3ODRhOWEyMmZlMDg4ZDdjMjhhZDg5MDZmZDczNjM3ZWIxZTM1MTEw
11
+ ODBiZjVhZmU1MjllNDZhZWU4NzE0YzRmYTRiZWFiZWFmMzE2ZmU=
12
+ data.tar.gz: !binary |-
13
+ YWMyOWE0MjZkMzYwYzQ0Y2Q3MWY4ODI5MmZlZDAwYTgwNmE2MTIwNzdhOTAw
14
+ MGE3ZmI1NmM0YTA2NjNjMDhlM2YwYzg0N2MwNTgzZTJkYTVkODZiOTMyZThj
15
+ OWM3MGQwMzFlY2U1OTZhM2IyNzA4OWJiNDNjNmMwNmVkNjRhYWY=
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'guessword'
4
+ if ARGV.length < 2
5
+ puts "Usage: guess.rb pattern ABCDE... (ex. guess.rb ****Y GERMARY) "
6
+ exit
7
+ end
8
+
9
+
10
+ args = ARGV.clone
11
+ pattern_str = args.shift
12
+ letters_str = args.shift
13
+ Guessword.guess(pattern_str,letters_str)
@@ -0,0 +1,72 @@
1
+ require 'ffi/aspell'
2
+
3
+
4
+ class Guessword
5
+ # Guess words by using patter and letters.
6
+ #
7
+ # Example:
8
+ # >> Guessword.guess("****o","hell")
9
+ # or
10
+ # Using excute command
11
+ # >> guessword ****o hell
12
+ #
13
+ # output: hello
14
+ #
15
+ # Arguments:
16
+ # pattern_str: (String)
17
+ # letters_str: (String)
18
+ # Return:
19
+ # words: (Array)
20
+ #
21
+ def self.guess(pattern_str, letters_str)
22
+ speller = FFI::Aspell::Speller.new('en_US')
23
+ pattern = pattern_str.upcase.split('').to_a
24
+ length = 0
25
+ pattern_flag = false
26
+ pattern.each do |x|
27
+ if x == '*'
28
+ length = length + 1
29
+ else
30
+ pattern_flag = true
31
+ end
32
+ end
33
+ letters = letters_str.upcase.split('').to_a
34
+ size = letters.length
35
+ total = size.downto(size - length + 1).inject(1) { |r,e| r * e }
36
+
37
+ puts "Input:"
38
+ puts "Pattern = #{pattern}"
39
+ puts "Length = #{length}"
40
+ puts "Letters = #{letters.join}"
41
+ puts "Size = #{size}"
42
+ puts "Total = #{total}"
43
+ puts "Expect time: #{total * 0.007} seconds"
44
+
45
+ puts
46
+ puts "Output:"
47
+ words = []
48
+ letters.permutation(length).entries.each do |y|
49
+ if pattern_flag
50
+ aword = []
51
+ pattern.each do |x|
52
+ if x == '*'
53
+ aword.push y.shift
54
+ else
55
+ aword.push x
56
+ end
57
+ end
58
+ word = aword.join
59
+ else
60
+ word = y.join
61
+ end
62
+ if not words.include?(word) and speller.correct?(word)
63
+ puts word
64
+ words << word
65
+ end
66
+ end
67
+
68
+ puts "Total: #{words.length}/#{total}"
69
+ words
70
+ end
71
+ end
72
+
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: guessword
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Chienyuan Eric Feng
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ffi-aspell
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '0.0'
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 0.0.3
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '0.0'
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 0.0.3
33
+ description: A simple gem for search words
34
+ email: chienyuan.feng@gmail.com
35
+ executables:
36
+ - guessword
37
+ extensions: []
38
+ extra_rdoc_files: []
39
+ files:
40
+ - bin/guessword
41
+ - lib/guessword.rb
42
+ homepage: http://rubygems.org/gems/guessword
43
+ licenses:
44
+ - MIT
45
+ metadata: {}
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ requirements: []
61
+ rubyforge_project:
62
+ rubygems_version: 2.2.0
63
+ signing_key:
64
+ specification_version: 4
65
+ summary: Guess Word!
66
+ test_files: []