chess_validator 0.2.21 → 0.2.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/move_logic.rb +34 -10
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 94df1700b50a798d45895b3d8b235fc6cd8abbe15736f36bbc97e1fe31da88e1
4
- data.tar.gz: 6e0eab463eee127e30e55effeef21466cf71e9ac08be5c8f2f6b258112e723cb
3
+ metadata.gz: bc464703452ec24fc25c8d122099e52b9788ef81df4d2a3acd2fca332d86c7b2
4
+ data.tar.gz: 11ca33717e5306eaf1538ecb65b55280bfd0c6f5f7b485cd78d540e36d72d726
5
5
  SHA512:
6
- metadata.gz: '098971e3e410d7f62ec4bf11fb62ae9a3397322add2a7a40a508c24149e19680460d7e5a659add721e17acb84473308c79fc55d5be3d7fba4b3f9c8bf159ce13'
7
- data.tar.gz: 7e0b9b6b18cbddbbc7fc25d2860a2830ea21c52d06254a2b3be28513ab391c8e7f10b0591b1a3c3471763d2c95e6d53940049e74e34d44a9c6870d445cb20ef1
6
+ metadata.gz: 4f4e734ca21f8022cf210effe194057edd9c4302574ce15dc3929858f0426d1992f32c0ab185bf38236ceb6b05fc380a1934589a575eb5278598e96c13826ec5
7
+ data.tar.gz: 2a60f66b946b0e8203c0c79cf8d772b483befbd82b1935ddfa959fe9c424d8056fba1aa5978dfcf6b9d0b7413840b0f85ddc58f22de7a90485b0c79f4e923c62
data/lib/move_logic.rb CHANGED
@@ -4,11 +4,12 @@ require 'pgn'
4
4
  module ChessValidator
5
5
  class MoveLogic
6
6
  class << self
7
+ MAX_CACHE_SIZE = 1000
8
+
7
9
  def next_moves(fen)
8
10
  fen_notation = fen.to_s
9
11
  return next_moves_for[fen_notation] if next_moves_for[fen_notation]
10
12
 
11
-
12
13
  board = get_board(fen.to_s)
13
14
  pieces = []
14
15
 
@@ -24,7 +25,35 @@ module ChessValidator
24
25
  end
25
26
 
26
27
  def boards
27
- @boards ||= {}
28
+ if @boards.nil? || @boards.size > MAX_CACHE_SIZE
29
+ @boards = {}
30
+ end
31
+
32
+ @boards
33
+ end
34
+
35
+ def next_moves_for
36
+ if @next_moves_for.nil? || @next_moves_for.size > MAX_CACHE_SIZE
37
+ @next_moves_for = {}
38
+ end
39
+
40
+ @next_moves_for
41
+ end
42
+
43
+ def occupied_square_sets
44
+ if @occupied_square_sets.nil? || @occupied_square_sets.size > MAX_CACHE_SIZE
45
+ @occupied_square_sets = {}
46
+ end
47
+
48
+ @occupied_square_sets
49
+ end
50
+
51
+ def defended_sets
52
+ if @defended_sets.nil? || @defended_sets.size > MAX_CACHE_SIZE
53
+ @defended_sets = {}
54
+ end
55
+
56
+ @defended_sets
28
57
  end
29
58
 
30
59
  def get_board(fen_string)
@@ -35,13 +64,6 @@ module ChessValidator
35
64
  board
36
65
  end
37
66
 
38
- def next_moves_for
39
- @next_moves_for ||= {}
40
- end
41
-
42
- def occupied_square_sets
43
- @occupied_square_sets ||= {}
44
- end
45
67
 
46
68
  def get_occupied_spaces(fen_string)
47
69
  return occupied_square_sets[fen_string] if occupied_square_sets[fen_string]
@@ -326,6 +348,8 @@ module ChessValidator
326
348
  end
327
349
 
328
350
  def defended_pieces_by_square(fen_notation)
351
+ return defended_sets[fen_notatioin] if defended_sets[fen_notatioin]
352
+
329
353
  board = get_board(fen_notation)
330
354
 
331
355
  fen = PGN::FEN.new(fen_notation)
@@ -342,11 +366,11 @@ module ChessValidator
342
366
  moves_for_piece(piece).each do |move|
343
367
  if space_index[move] && space_index[move][-1] == piece.color && can_defend?(piece, board, move, fen)
344
368
  defended[move] += [piece]
345
- puts 'hi'
346
369
  end
347
370
  end
348
371
  end
349
372
 
373
+ defended_sets[fen_notatioin] = defended
350
374
  defended
351
375
  end
352
376
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chess_validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.21
4
+ version: 0.2.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Ellison