codebreaker-engine 0.1.1 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 42d8821c88fc2ab4820059be7101549058025a06e516cad51f8dc61dabb88583
4
- data.tar.gz: 1d102b65878e90e07761d0dc01b3d0c60df98da9dcdec64c66cdf3a3c60c5697
3
+ metadata.gz: 4b040303bf8244420902874e719167aa986c3e86bb37d44b87346ffaa8abac82
4
+ data.tar.gz: 05f1923f53734b752d87ffe5bd5a4e3e8f974414509b5dea408240cc18a72256
5
5
  SHA512:
6
- metadata.gz: ec5698e8791cb7cea7c66b49cd6c6a7bb9205f449a7fc5a93d5a6a4312a6da3e407fd1aec1400c98d9441644d68aa7025022d30117af700269fb9c47b2215546
7
- data.tar.gz: 9178226c403b2a6464ec096b04f68b1a1b360dbf992bb472a7df501d24d0c71283698e4c6b09ea1e6111499b83bdd3f5678ccf64911aff1f7744efbe6df02929
6
+ metadata.gz: d6e85e51d12d4764a239d6ca582a4c0ad9d58af94016f28628c68a03ce7aff89537b67b6339b6c62d95b484c4e058898a3a3accc197ceb6388108c1b8e25492b
7
+ data.tar.gz: baa576556c759e4db793a3f21f2cc017a349cd5267a32fe60404bd8610b3a8aef1e72c00e245313b5cfc9f2d652a3de1d31f8c91263e13407b278a0fe0e52138
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- codebreaker-engine (0.1.0)
4
+ codebreaker-engine (0.1.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,4 +1,5 @@
1
1
  class CodeFormatter
2
+ attr_reader :result
2
3
  def self.call(*args)
3
4
  new(*args).call
4
5
  end
@@ -6,32 +7,46 @@ class CodeFormatter
6
7
  def initialize(maker_code = [], user_code = [])
7
8
  @maker_code = maker_code
8
9
  @user_code = user_code
10
+ @result = []
9
11
  end
10
12
 
11
13
  def call
12
- format(@maker_code, @user_code)
14
+ format_plus.format_minus
15
+ @result
13
16
  end
14
17
 
15
- def format(maker_code, user_code)
16
- user_code.each_with_index.map do |char, index|
17
- if maker_code[index] == user_code[index]
18
- maker_code[index] = nil
19
- '+'
20
- else
21
- char_index = maker_code.index(char)
22
- if char_index && minus?(char_index, maker_code, user_code)
23
- maker_code[char_index] = nil
24
- '-'
25
- end
26
- end
27
- end.compact.sort
18
+ def format_plus
19
+ @user_code.zip(@maker_code).each_with_index do |numbers, index|
20
+ next unless numbers.first == numbers.last
21
+
22
+ @result << '+'
23
+ clear_number(@maker_code, index)
24
+ clear_number(@user_code, index)
25
+ end
26
+ code_compact
27
+ self
28
+ end
29
+
30
+ def format_minus
31
+ @user_code.each do |number|
32
+ next unless @maker_code.include?(number)
33
+
34
+ @result << '-'
35
+ clear_number(@maker_code, @maker_code.index(number))
36
+ clear_number(@user_code, @user_code.index(number))
37
+ end
38
+ code_compact
39
+ self
28
40
  end
29
41
 
30
42
  private
31
43
 
32
- def minus?(char_index, maker_code, user_code)
33
- return unless maker_code[char_index]
44
+ def code_compact
45
+ @user_code.compact!
46
+ @maker_code.compact!
47
+ end
34
48
 
35
- maker_code[char_index] != user_code[char_index]
49
+ def clear_number(array, index)
50
+ array[index] = nil
36
51
  end
37
52
  end
@@ -1,3 +1,3 @@
1
1
  module Codebreaker
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '0.1.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codebreaker-engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danil Danilin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-24 00:00:00.000000000 Z
11
+ date: 2019-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler