qi 9.0.0.beta2 → 9.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -5
- data/lib/qi.rb +12 -7
- metadata +4 -5
- data/lib/qi/move.rb +0 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52024f72e11787560aa6fc8bed990c359e49d3e995f2d3cfea875de5febaeba5
|
4
|
+
data.tar.gz: d04a6301684f284f29aa1b67c811ca596006a6aa0f33e22d1c67790da55418ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9afd43466c2ea7b6608d0f94996bffd40622fa2ff98bc008098c78375074c4ae8c6e12235520053a35619fca22b3588ccc120d06910f9b8af10cf349273af6c
|
7
|
+
data.tar.gz: 4264fd4ff0e12bc86b1451b1a411bea1e700cb58581f87e0216a0b601bd26c2443e144c44ddb765e8e6428ae0bdc2f406342248851a5c36c9f9c00494c8c1253
|
data/README.md
CHANGED
@@ -13,7 +13,7 @@
|
|
13
13
|
Add this line to your application's Gemfile:
|
14
14
|
|
15
15
|
```ruby
|
16
|
-
gem "qi"
|
16
|
+
gem "qi"
|
17
17
|
```
|
18
18
|
|
19
19
|
And then execute:
|
@@ -25,16 +25,16 @@ bundle
|
|
25
25
|
Or install it yourself as:
|
26
26
|
|
27
27
|
```sh
|
28
|
-
gem install qi
|
28
|
+
gem install qi
|
29
29
|
```
|
30
30
|
|
31
|
-
##
|
31
|
+
## Example
|
32
32
|
|
33
33
|
```ruby
|
34
34
|
require "qi"
|
35
35
|
|
36
36
|
Qi.call(
|
37
|
-
|
37
|
+
43, 13, "+B",
|
38
38
|
in_hand: %w[S r r b g g g g s n n n n p p p p p p p p p p p p p p p p p],
|
39
39
|
square: {
|
40
40
|
3 => "s",
|
@@ -44,7 +44,7 @@ Qi.call(
|
|
44
44
|
43 => "+B"
|
45
45
|
}
|
46
46
|
)
|
47
|
-
# => {:
|
47
|
+
# => {:in_hand=>["S", "r", "r", "b", "g", "g", "g", "g", "s", "n", "n", "n", "n", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p"], :square=>{3=>"s", 4=>"k", 5=>"s", 22=>"+P", 13=>"+B"}}
|
48
48
|
```
|
49
49
|
|
50
50
|
## License
|
data/lib/qi.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative File.join("qi", "
|
3
|
+
require_relative File.join("qi", "action")
|
4
4
|
|
5
5
|
# The Qi abstraction.
|
6
6
|
#
|
7
7
|
# @example Apply a move to a classic Shogi problem
|
8
8
|
# Qi.call(
|
9
|
-
#
|
9
|
+
# 43, 13, "+B",
|
10
10
|
# in_hand: %w[S r r b g g g g s n n n n p p p p p p p p p p p p p p p p p],
|
11
11
|
# square: {
|
12
12
|
# 3 => "s",
|
@@ -18,9 +18,12 @@ require_relative File.join("qi", "move")
|
|
18
18
|
# )
|
19
19
|
# # => {:in_hand=>["S", "r", "r", "b", "g", "g", "g", "g", "s", "n", "n", "n", "n", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p"], :square=>{3=>"s", 4=>"k", 5=>"s", 22=>"+P", 13=>"+B"}}
|
20
20
|
module Qi
|
21
|
-
# Apply
|
21
|
+
# Apply an action to the position.
|
22
22
|
#
|
23
|
-
# @param
|
23
|
+
# @param src_square_id [Integer] A source square index.
|
24
|
+
# @param dst_square_id [Integer] A target square index.
|
25
|
+
# @param moved_piece_name [String] A piece name.
|
26
|
+
# @param captured_piece_name [String] A captured piece name.
|
24
27
|
# @param in_hand [Array] The list of pieces in hand.
|
25
28
|
# @param square [Hash] The index of each piece on the board.
|
26
29
|
#
|
@@ -29,7 +32,9 @@ module Qi
|
|
29
32
|
#
|
30
33
|
# @example Apply a move to a classic Shogi problem
|
31
34
|
# call(
|
32
|
-
#
|
35
|
+
# 43,
|
36
|
+
# 13,
|
37
|
+
# "+B",
|
33
38
|
# in_hand: %w[S r r b g g g g s n n n n p p p p p p p p p p p p p p p p p],
|
34
39
|
# square: {
|
35
40
|
# 3 => "s",
|
@@ -42,7 +47,7 @@ module Qi
|
|
42
47
|
# # => {:in_hand=>["S", "r", "r", "b", "g", "g", "g", "g", "s", "n", "n", "n", "n", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p"], :square=>{3=>"s", 4=>"k", 5=>"s", 22=>"+P", 13=>"+B"}}
|
43
48
|
#
|
44
49
|
# @return [Hash] The piece set of the next position.
|
45
|
-
def self.call(
|
46
|
-
|
50
|
+
def self.call(src_square_id, dst_square_id, moved_piece_name, captured_piece_name = nil, in_hand:, square:)
|
51
|
+
Action.new(src_square_id, dst_square_id, moved_piece_name, captured_piece_name).call(in_hand: in_hand, square: square)
|
47
52
|
end
|
48
53
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 9.0.0
|
4
|
+
version: 9.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cyril Kato
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: brutal
|
@@ -160,7 +160,6 @@ files:
|
|
160
160
|
- README.md
|
161
161
|
- lib/qi.rb
|
162
162
|
- lib/qi/action.rb
|
163
|
-
- lib/qi/move.rb
|
164
163
|
homepage: https://developer.sashite.com/specs/
|
165
164
|
licenses:
|
166
165
|
- MIT
|
@@ -179,9 +178,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
179
178
|
version: 3.0.0
|
180
179
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
180
|
requirements:
|
182
|
-
- - "
|
181
|
+
- - ">="
|
183
182
|
- !ruby/object:Gem::Version
|
184
|
-
version:
|
183
|
+
version: '0'
|
185
184
|
requirements: []
|
186
185
|
rubygems_version: 3.2.22
|
187
186
|
signing_key:
|
data/lib/qi/move.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "action"
|
4
|
-
|
5
|
-
module Qi
|
6
|
-
# The Move abstraction.
|
7
|
-
class Move
|
8
|
-
# Initialize a move instance.
|
9
|
-
#
|
10
|
-
# @param move [Array] The move to apply.
|
11
|
-
#
|
12
|
-
# @example Initialize a promoted bishop move from 43 to 13
|
13
|
-
# new([43, 13, "+B"])
|
14
|
-
#
|
15
|
-
# @see https://developer.sashite.com/specs/portable-move-notation
|
16
|
-
def initialize(move)
|
17
|
-
@actions = move.each_slice(4)
|
18
|
-
end
|
19
|
-
|
20
|
-
# Apply a move to the piece set of a position.
|
21
|
-
#
|
22
|
-
# @param in_hand [Array] The list of pieces in hand.
|
23
|
-
# @param square [Hash] The index of each piece on the board.
|
24
|
-
#
|
25
|
-
# @example Apply a move to a classic Shogi problem
|
26
|
-
# call(
|
27
|
-
# [43, 13, "+B"],
|
28
|
-
# in_hand: %w[S r r b g g g g s n n n n p p p p p p p p p p p p p p p p p],
|
29
|
-
# square: {
|
30
|
-
# 3 => "s",
|
31
|
-
# 4 => "k",
|
32
|
-
# 5 => "s",
|
33
|
-
# 22 => "+P",
|
34
|
-
# 43 => "+B"
|
35
|
-
# }
|
36
|
-
# )
|
37
|
-
# # => {:in_hand=>["S", "r", "r", "b", "g", "g", "g", "g", "s", "n", "n", "n", "n", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p"], :square=>{3=>"s", 4=>"k", 5=>"s", 22=>"+P", 13=>"+B"}}
|
38
|
-
#
|
39
|
-
# @return [Hash] The piece set of the next position.
|
40
|
-
def call(in_hand:, square:)
|
41
|
-
@actions.inject(in_hand: in_hand, square: square) do |piece_set, attrs|
|
42
|
-
Action.new(*attrs).call(**piece_set)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|