manasimu 0.0.23 → 0.0.26

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: b6082f731a818265c066a58b3ff0e1c92df1444c5f08982cba8a80fd0ad73e41
4
- data.tar.gz: 722690804b9fd37604dd44953678bbddfef4695c0a2d4f8d8bbba80738dc7a33
3
+ metadata.gz: f194c1efd40c93772541e4aa6bf1164ff46a836a91887e848944548ed5afabde
4
+ data.tar.gz: 1716988949899acf5972599c371dd95696748311afd728d1bcd6a9040c2ef901
5
5
  SHA512:
6
- metadata.gz: 5bca43f6174a91ed763000757d517ee793042e2d84223eb14d58374ec8dbb8bec98e0ba3da79b85472cbeded392006dbf016ef882c2b80d803e51203453f0d5f
7
- data.tar.gz: 6c533f61fd8832391d9a3b9bf8fd682302b0b9bf54ab07a52d3d6491f69ad3124f150d9ab7482297a9704fb2df924864cf184e452cf6bfca6b731218bbf1fb75
6
+ metadata.gz: 14ffb32574c728c83f737d234205e37a85748ba08a68fe952e5a3945a5fb8715ed3791105fa89971f7c874b76de8e9ca8a6168ec7a7d64992f1482adc8ec8f17
7
+ data.tar.gz: 5e2a6b2740ec5259ab5d60625b6201b05707022735808e75fd1d1d3753ff591db9b9a651401f48b3b91367ebf6baa9c58f0f6448d6ac73bd33a67f381bc13a1b
Binary file
data/lib/manasimu/card.rb CHANGED
@@ -294,6 +294,10 @@ class CardType
294
294
  return @is_land
295
295
  end
296
296
 
297
+ def names
298
+ @contents[0].names
299
+ end
300
+
297
301
  def playable?(lands, capas)
298
302
  return [false, [], []] if lands.empty?
299
303
  return [false, [], []] if converted_mana_cost > lands.length
@@ -391,17 +395,27 @@ class CardType
391
395
  end
392
396
 
393
397
  class CardTypeAggregate
398
+ def initialize
399
+ @memo = []
400
+ end
394
401
 
395
402
  def find(set_code, number)
396
- @memo ||= []
397
- @memo.find do |c|
403
+ ret = @memo.bsearch do |c|
398
404
  a = c.contents[0]
399
- a and a.set_code == set_code and a.number == number
405
+ if set_code == a.set_code
406
+ number.to_i <= a.number
407
+ else
408
+ set_code < a.set_code
409
+ end
410
+ end
411
+ if ret and ret.set_code == set_code and ret.number == number.to_i
412
+ ret
413
+ else
414
+ nil
400
415
  end
401
416
  end
402
417
 
403
418
  def add(card_type)
404
- @memo ||= []
405
419
  @memo << card_type
406
420
  end
407
421
 
@@ -420,10 +434,11 @@ class CardTypeAggregate
420
434
  end
421
435
 
422
436
  class Content
423
- attr_accessor :name, :number, :side, :set_code, :mana_cost, :type, :types, :color_identity, :converted_mana_cost, :text
437
+ attr_accessor :name, :names, :number, :side, :set_code, :mana_cost, :type, :types, :color_identity, :converted_mana_cost, :text
424
438
 
425
439
  def initialize(hash)
426
440
  @name = hash[:name]
441
+ @names = hash[:names]
427
442
  @number = hash[:number]
428
443
  @side = hash[:side]
429
444
  @set_code = hash[:set_code]
@@ -447,6 +462,7 @@ class Content
447
462
  <<EOF
448
463
  factory '#{@name.underscore}_content', class: Content do
449
464
  name {'#{@name}'}
465
+ names {'#{@names}'}
450
466
  number {'#{@number}'}
451
467
  side {'#{@side}'}
452
468
  set_code { '#{@set_code}'}
data/lib/manasimu/data.rb CHANGED
@@ -66,46 +66,73 @@ class Deck
66
66
  end
67
67
 
68
68
  def self.find_card_types(lines)
69
- types = card_types.map do |a| a end
70
- types.sort! do |a,b| a.name <=> b.name end
69
+ ret = []
71
70
 
72
71
  distinct_types = []
73
- types.each do |type|
72
+ card_types.each do |type|
74
73
  next if distinct_types[-1] and distinct_types[-1].name == type.name
75
- type.name
76
74
  distinct_types << type
77
75
  end
78
76
 
79
- ret = []
80
- lines.each do |line|
81
- line.chomp!
82
- search_type = distinct_types.bsearch do |type|
83
- name = type.name.split(' // ')[0]
84
- flag = true
85
- name.chars.each_with_index do |nc,i|
86
-
87
- if line.length > i
88
- lc = line.chars[i]
89
- if nc > lc
90
- flag = true
91
- break
92
- elsif nc < lc
93
- flag = false
94
- break
95
- else
96
- # continue
77
+
78
+ [-1, 4].each do |j|
79
+
80
+ distinct_types.sort! do |a,b|
81
+ if j < 0
82
+ a.name <=> b.name
83
+ elsif a.names[j] and b.names[j]
84
+ a.names[j] <=> b.names[j]
85
+ elsif not a.names[j] and not b.names[j]
86
+ 0
87
+ elsif a.names[j]
88
+ -1
89
+ else
90
+ 1
91
+ end
92
+ end
93
+
94
+ lines.each do |line|
95
+ line.chomp!
96
+ search_type = distinct_types.bsearch do |type|
97
+ if j < 0
98
+ name = type.name.split(' // ')[0]
99
+ elsif type.names[j]
100
+ name = type.names[j].split(' // ')[0]
101
+ end
102
+
103
+ if name
104
+ flag = true
105
+ name.chars.each_with_index do |nc,i|
106
+ if line.length > i
107
+ lc = line.chars[i]
108
+ if nc > lc
109
+ flag = true
110
+ break
111
+ elsif nc < lc
112
+ flag = false
113
+ break
114
+ else
115
+ # continue
116
+ end
117
+ else
118
+ flag = true
119
+ break
120
+ end
97
121
  end
122
+ flag
98
123
  else
99
- flag = true
100
- break
124
+ false
101
125
  end
102
126
  end
103
- flag
104
- end
105
- if search_type
106
- a = search_type.name.split(' // ')[0]
107
- if line =~ /^#{a}.*$/ and a != 'X'
108
- ret << search_type
127
+ if search_type
128
+ if j < 0
129
+ a = search_type.name.split(' // ')[0]
130
+ else
131
+ a = search_type.names[j].split(' // ')[0]
132
+ end
133
+ if line =~ /^#{a}.*$/ and a != 'X'
134
+ ret << search_type
135
+ end
109
136
  end
110
137
  end
111
138
  end
@@ -0,0 +1,3 @@
1
+ class Expansion
2
+ attr_accessor :code, :name, :exists
3
+ end
data/lib/manasimu.rb CHANGED
@@ -13,4 +13,5 @@ require_relative './manasimu/planner.rb'
13
13
  require_relative './manasimu/game.rb'
14
14
  require_relative './manasimu/simulator.rb'
15
15
  require_relative './manasimu/data.rb'
16
+ require_relative './manasimu/expansion.rb'
16
17
  require_relative '../ext/ford_fulkerson.so'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: manasimu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.23
4
+ version: 0.0.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - so1itaryrove
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-28 00:00:00.000000000 Z
11
+ date: 2022-06-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: mtg arrena mana curve simulator
14
14
  email: so1itaryrove@gmail.com
@@ -27,6 +27,7 @@ files:
27
27
  - lib/manasimu/card/snc_fetchland.rb
28
28
  - lib/manasimu/card/tapland.rb
29
29
  - lib/manasimu/data.rb
30
+ - lib/manasimu/expansion.rb
30
31
  - lib/manasimu/game.rb
31
32
  - lib/manasimu/hello.rb
32
33
  - lib/manasimu/mana_type.rb