dk_codebreaker 0.1.7 → 0.1.8
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.
- checksums.yaml +4 -4
- data/.travis.yml +4 -0
- data/README.md +2 -0
- data/dk_codebreaker.gemspec +7 -7
- data/lib/dk_codebreaker.rb +2 -86
- data/lib/dk_codebreaker/game.rb +88 -0
- data/lib/dk_codebreaker/version.rb +1 -1
- metadata +23 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc2afcb93e6c08f37cfcb2447e2e86d3a7846eef
|
4
|
+
data.tar.gz: f940380c07868986cf0a99ddcbff59d2bea8ea24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 924b0fe8349bee5526e8842ad76dbc61394da498957ebd0bc870086429d90ffa9d9d32688c5a3c136ea164e894f0f33d0b55a398c1ef389bfa2652be56e22b90
|
7
|
+
data.tar.gz: d3460be48b204437162ddd7dc076e71454d9f136aacc2cd261891df8db2b571cd2d92939ed3d0df47af15a9fe99630f440fa2318a15acbe346f647d1525e8ae1
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# DkCodebreaker
|
2
2
|
|
3
3
|
[](https://badge.fury.io/rb/dk_codebreaker)
|
4
|
+
[](https://travis-ci.org/DenKey/dk_codebreaker)
|
5
|
+
|
4
6
|
|
5
7
|
Codebreaker is a logic game in which a code-breaker tries to break a secret code created by a code-maker.The code-maker, which will be played by the application we’re going to write, creates a secret code of four numbers between 1 and 6.
|
6
8
|
|
data/dk_codebreaker.gemspec
CHANGED
@@ -7,13 +7,13 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "dk_codebreaker"
|
8
8
|
spec.version = DkCodebreaker::VERSION
|
9
9
|
spec.authors = ["Den Key"]
|
10
|
-
spec.email = ["denis.
|
10
|
+
spec.email = ["denis.kryukov@aol.com"]
|
11
11
|
|
12
|
-
spec.summary = %q{
|
13
|
-
spec.description = %q{
|
12
|
+
spec.summary = %q{Codebreaker is a logic game.}
|
13
|
+
spec.description = %q{Codebreaker is a logic game in which a code-breaker tries to break a secret code created by a code-maker.
|
14
14
|
The code-maker, which will be played by the application we’re going to write,
|
15
15
|
creates a secret code of four numbers between 1 and 6.}
|
16
|
-
spec.homepage = "https://github.com/
|
16
|
+
spec.homepage = "https://github.com/DenKey/dk_codebreaker"
|
17
17
|
spec.license = "MIT"
|
18
18
|
|
19
19
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
@@ -21,8 +21,8 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
|
-
spec.add_development_dependency "bundler", "~> 1.
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.8.4"
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
-
spec.add_development_dependency "rspec"
|
27
|
-
spec.add_development_dependency "rspec-collection_matchers"
|
26
|
+
spec.add_development_dependency "rspec", "~> 3.4"
|
27
|
+
spec.add_development_dependency "rspec-collection_matchers", "~> 1.1", ">= 1.1.2"
|
28
28
|
end
|
data/lib/dk_codebreaker.rb
CHANGED
@@ -1,90 +1,6 @@
|
|
1
1
|
require "dk_codebreaker/version"
|
2
|
+
require "dk_codebreaker/game"
|
2
3
|
|
3
4
|
module DkCodebreaker
|
4
|
-
|
5
|
-
attr_reader :hint_status
|
6
|
-
attr_reader :attempt
|
7
|
-
|
8
|
-
def initialize player = nil, attempts = 10
|
9
|
-
@submit_code = nil
|
10
|
-
@secret_code = ""
|
11
|
-
@player = player
|
12
|
-
@attempt = 1
|
13
|
-
@hint_status = false
|
14
|
-
@limit = attempts
|
15
|
-
end
|
16
|
-
|
17
|
-
def start
|
18
|
-
1.upto(4) { @secret_code << "#{rand(1..6)}" }
|
19
|
-
end
|
20
|
-
|
21
|
-
def restart
|
22
|
-
@attempt = 1
|
23
|
-
@submit_code = nil
|
24
|
-
@secret_code = ""
|
25
|
-
@hint_status = false
|
26
|
-
start
|
27
|
-
end
|
28
|
-
|
29
|
-
def guess submit_code
|
30
|
-
if @attempt <= @limit
|
31
|
-
if submit_code.is_a? String
|
32
|
-
return :less_then_four if submit_code.size < 4
|
33
|
-
submit_code = submit_code[0,4] if submit_code.size > 4
|
34
|
-
submit_code.each_char { |x| return :guess_has_symbol if numeric?(x) != 0 }
|
35
|
-
@submit_code = submit_code
|
36
|
-
@attempt += 1
|
37
|
-
numbers_eq(position_eq)
|
38
|
-
else
|
39
|
-
:code_not_string
|
40
|
-
end
|
41
|
-
else
|
42
|
-
:you_lose
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def hint
|
47
|
-
unless @hint
|
48
|
-
send = "****"
|
49
|
-
num = rand(0..3)
|
50
|
-
send[num] = @secret_code[num]
|
51
|
-
@hint_status = true
|
52
|
-
send
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def user_data
|
57
|
-
[@player, @attempt, @limit, Time.new.strftime("%m/%d/%Y/%H/%M")]
|
58
|
-
end
|
59
|
-
|
60
|
-
private
|
61
|
-
|
62
|
-
def position_eq
|
63
|
-
submits = @submit_code.split("")
|
64
|
-
secrets = @secret_code.split("")
|
65
|
-
answer = ""
|
66
|
-
|
67
|
-
submits.each_with_index do |submit,index|
|
68
|
-
if submit == secrets[index]
|
69
|
-
answer << "+"
|
70
|
-
submits[index] = nil
|
71
|
-
secrets[index] = nil
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
[answer, submits, secrets]
|
76
|
-
end
|
77
|
-
|
78
|
-
def numbers_eq array
|
79
|
-
array[1].each do |submit| #submits
|
80
|
-
next if submit == nil
|
81
|
-
array[0] << "-" if array[2].include?(submit)
|
82
|
-
end
|
83
|
-
array[0]
|
84
|
-
end
|
85
|
-
|
86
|
-
def numeric?(lookAhead)
|
87
|
-
lookAhead =~ /[[:digit:]]/
|
88
|
-
end
|
89
|
-
end
|
5
|
+
# Nothing yet
|
90
6
|
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
module DkCodebreaker
|
2
|
+
class Game
|
3
|
+
attr_reader :hint_status
|
4
|
+
attr_reader :attempt
|
5
|
+
|
6
|
+
def initialize player = nil, attempts = 10
|
7
|
+
@submit_code = nil
|
8
|
+
@secret_code = ""
|
9
|
+
@player = player
|
10
|
+
@attempt = 1
|
11
|
+
@hint_status = false
|
12
|
+
@limit = attempts
|
13
|
+
end
|
14
|
+
|
15
|
+
def start
|
16
|
+
1.upto(4) { @secret_code << "#{rand(1..6)}" }
|
17
|
+
end
|
18
|
+
|
19
|
+
def restart
|
20
|
+
@attempt = 1
|
21
|
+
@submit_code = nil
|
22
|
+
@secret_code = ""
|
23
|
+
@hint_status = false
|
24
|
+
start
|
25
|
+
end
|
26
|
+
|
27
|
+
def guess submit_code
|
28
|
+
if @attempt <= @limit
|
29
|
+
if submit_code.is_a? String
|
30
|
+
return :less_then_four if submit_code.size < 4
|
31
|
+
submit_code = submit_code[0,4] if submit_code.size > 4
|
32
|
+
submit_code.each_char { |x| return :guess_has_symbol if numeric?(x) != 0 }
|
33
|
+
@submit_code = submit_code
|
34
|
+
@attempt += 1
|
35
|
+
numbers_eq(position_eq)
|
36
|
+
else
|
37
|
+
:code_not_string
|
38
|
+
end
|
39
|
+
else
|
40
|
+
:you_lose
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def hint
|
45
|
+
unless @hint
|
46
|
+
send = "****"
|
47
|
+
num = rand(0..3)
|
48
|
+
send[num] = @secret_code[num]
|
49
|
+
@hint_status = true
|
50
|
+
send
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def user_data
|
55
|
+
[@player, @attempt, @limit, Time.new.strftime("%m/%d/%Y/%H/%M")]
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def position_eq
|
61
|
+
submits = @submit_code.split("")
|
62
|
+
secrets = @secret_code.split("")
|
63
|
+
answer = ""
|
64
|
+
|
65
|
+
submits.each_with_index do |submit,index|
|
66
|
+
if submit == secrets[index]
|
67
|
+
answer << "+"
|
68
|
+
submits[index] = nil
|
69
|
+
secrets[index] = nil
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
[answer, submits, secrets]
|
74
|
+
end
|
75
|
+
|
76
|
+
def numbers_eq array
|
77
|
+
array[1].each do |submit| #submits
|
78
|
+
next if submit == nil
|
79
|
+
array[0] << "-" if array[2].include?(submit)
|
80
|
+
end
|
81
|
+
array[0]
|
82
|
+
end
|
83
|
+
|
84
|
+
def numeric?(lookAhead)
|
85
|
+
lookAhead =~ /[[:digit:]]/
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dk_codebreaker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Den Key
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.8.4
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.8.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -42,42 +42,49 @@ dependencies:
|
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '3.4'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '3.4'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec-collection_matchers
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.1'
|
59
62
|
- - ">="
|
60
63
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
64
|
+
version: 1.1.2
|
62
65
|
type: :development
|
63
66
|
prerelease: false
|
64
67
|
version_requirements: !ruby/object:Gem::Requirement
|
65
68
|
requirements:
|
69
|
+
- - "~>"
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '1.1'
|
66
72
|
- - ">="
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
69
|
-
description: "
|
70
|
-
|
74
|
+
version: 1.1.2
|
75
|
+
description: "Codebreaker is a logic game in which a code-breaker tries to break a
|
76
|
+
secret code created by a code-maker.\n The code-maker,
|
71
77
|
which will be played by the application we’re going to write, \n creates
|
72
78
|
a secret code of four numbers between 1 and 6."
|
73
79
|
email:
|
74
|
-
- denis.
|
80
|
+
- denis.kryukov@aol.com
|
75
81
|
executables: []
|
76
82
|
extensions: []
|
77
83
|
extra_rdoc_files: []
|
78
84
|
files:
|
79
85
|
- ".gitignore"
|
80
86
|
- ".rspec"
|
87
|
+
- ".travis.yml"
|
81
88
|
- Gemfile
|
82
89
|
- LICENSE.txt
|
83
90
|
- README.md
|
@@ -86,8 +93,9 @@ files:
|
|
86
93
|
- bin/setup
|
87
94
|
- dk_codebreaker.gemspec
|
88
95
|
- lib/dk_codebreaker.rb
|
96
|
+
- lib/dk_codebreaker/game.rb
|
89
97
|
- lib/dk_codebreaker/version.rb
|
90
|
-
homepage: https://github.com/
|
98
|
+
homepage: https://github.com/DenKey/dk_codebreaker
|
91
99
|
licenses:
|
92
100
|
- MIT
|
93
101
|
metadata: {}
|
@@ -110,5 +118,5 @@ rubyforge_project:
|
|
110
118
|
rubygems_version: 2.4.8
|
111
119
|
signing_key:
|
112
120
|
specification_version: 4
|
113
|
-
summary:
|
121
|
+
summary: Codebreaker is a logic game.
|
114
122
|
test_files: []
|