cf_sim 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9378e236733ed66fb70343fa5e33c508cfdba69f
4
- data.tar.gz: 603031535dbc93e9dacc2ec9fce5f6415f9e6ba4
3
+ metadata.gz: d3d7ff63871865339c874b0881b6b27cd07b3d52
4
+ data.tar.gz: 17824ed6f4e9c9b39eb037e6138d06ba401633da
5
5
  SHA512:
6
- metadata.gz: 4a7aca9a5cf5bae58b1e715c8276f9faee4418718f00fd7230a34a877ef59631e911dffc1e03af3bf34796aedc36955b68ffc85a890640ab4f2458a738904683
7
- data.tar.gz: aca9a38f0f726005d54b7a40cb3901dabb27551cf6521af330523a5f44233b2339633b1a1a2114b2b6b2425ea8d34f23275b0f8d20a86676534c7b4e6eecfcc9
6
+ metadata.gz: 194c9d438fa7d835cb2b2c27b856046250909170f1eb24111dbc3345226e7a35e63b0b203efd21bf934cc4920b2bd1966b8b98245760dac589af309d2f2eb6a1
7
+ data.tar.gz: 28560304774e952dcd6ca050150cf20e2dc3f2789aa73b41efe94da1206af4afc4148b74b2ac55f0fcb341df39adfeb2af2ce76bbee7ee224495ec0095ec7ea0
data/README.md CHANGED
@@ -2,9 +2,7 @@
2
2
  [![Build Status](https://travis-ci.org/pinzolo/cf_sim.svg)](http://travis-ci.org/pinzolo/cf_sim)
3
3
  [![Coverage Status](https://coveralls.io/repos/pinzolo/cf_sim/badge.png)](https://coveralls.io/r/pinzolo/cf_sim)
4
4
 
5
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/cf_sim`. To experiment with that code, run `bin/console` for an interactive prompt.
6
-
7
- TODO: Delete this and the text above, and describe your gem
5
+ ポータルを列挙したデータファイルから多重CFのURLを出力するシミュレータ
8
6
 
9
7
  ## Installation
10
8
 
@@ -24,7 +22,26 @@ Or install it yourself as:
24
22
 
25
23
  ## Usage
26
24
 
27
- TODO: Write usage instructions here
25
+ ### 指定のファイルに列挙されたポータルから作成できる最大面積の多重CFのURLを出力する
26
+
27
+ ```sh
28
+ cf_sim max_area <data_file>
29
+ ```
30
+
31
+ ### 指定のファイルに列挙されたポータルから作成できる最大枚数の多重CFのURLを面積順に出力する
32
+
33
+ ```sh
34
+ # あるだけ出力
35
+ cf_sim max_count <data_file>
36
+
37
+ # 面積の大きい順から10個出力
38
+ cf_sim max_count <data_file> 10
39
+ ```
40
+
41
+ ### ポータルデータファイルの書式
42
+
43
+ 各行が `緯度,経度,ポータル名` の CSV ファイル([参考](test/data_file.txt))
44
+ ただし、ポータル名は必須ではない
28
45
 
29
46
  ## Development
30
47
 
data/lib/cf_sim/cli.rb CHANGED
@@ -8,9 +8,9 @@ class CfSim::CLI < Thor
8
8
  puts @generator.fields_link(fields)
9
9
  end
10
10
 
11
- desc 'max_count DATA_FILE', 'print max count control fields URL list.'
12
- def max_count(data_file)
13
- finder = load_finder_from(data_file)
11
+ desc 'max_count DATA_FILE LIMIT', 'print max count control fields URL list.'
12
+ def max_count(data_file, limit = nil)
13
+ finder = load_finder_from(data_file, limit ? limit.to_i : nil)
14
14
  fields_list = finder.find_max_count_fields_list
15
15
  max_area = fields_list.first.total_area
16
16
  fields_list.each do |fields|
@@ -21,11 +21,11 @@ class CfSim::CLI < Thor
21
21
 
22
22
  private
23
23
 
24
- def load_finder_from(data_file)
24
+ def load_finder_from(data_file, limit)
25
25
  portals = CfSim::DataFileParser.new(data_file).parse
26
26
  portal_map = CfSim::PortalMap.new(portals)
27
27
  @generator = CfSim::IntelMapUrlGenerator.new(portal_map)
28
- CfSim::ControlFieldSetFinder.new(CfSim::PointList.new(portal_map.points).creatable_fields)
28
+ CfSim::ControlFieldSetFinder.new(CfSim::PointList.new(portal_map.points).creatable_fields, limit_field_count: limit)
29
29
  end
30
30
  end
31
31
 
@@ -2,10 +2,12 @@ require 'cf_sim/coexistable_field_map'
2
2
  require 'cf_sim/control_field_set'
3
3
 
4
4
  class CfSim::ControlFieldSetFinder
5
- def initialize(fields, limit_field_count = 1)
5
+ def initialize(fields, options = {})
6
6
  @fields = CfSim::ControlFieldSet.new(fields.sort_by(&:area).reverse)
7
7
  @coexistable_field_map = CfSim::CoexistableFieldMap.new(@fields)
8
- @limit_field_count = limit_field_count
8
+ @limit_field_count = options[:limit_field_count] || nil
9
+ @max_count_control_fields_list = []
10
+ @max_area_control_fields = nil
9
11
  end
10
12
 
11
13
  def find_max_area_fields
@@ -14,12 +16,6 @@ class CfSim::ControlFieldSetFinder
14
16
  @max_area_control_fields
15
17
  end
16
18
 
17
- def find_all_fields_list
18
- @control_fields_list = []
19
- find_recursively(CfSim::ControlFieldSet.new, @fields, :all)
20
- @control_fields_list
21
- end
22
-
23
19
  def find_max_count_fields_list
24
20
  @max_count_control_fields_list = []
25
21
  find_recursively(CfSim::ControlFieldSet.new, @fields, :max_count)
@@ -31,7 +27,7 @@ class CfSim::ControlFieldSetFinder
31
27
  def find_recursively(fields, coexistable_fields, type)
32
28
  return if ignore?(fields, coexistable_fields, type)
33
29
 
34
- if coexistable_fields.empty?
30
+ if coexistable_fields.empty? || limit?
35
31
  deploy(fields, type)
36
32
  else
37
33
  coexistable_fields.each do |field|
@@ -44,8 +40,6 @@ class CfSim::ControlFieldSetFinder
44
40
  case type
45
41
  when :max_area
46
42
  replace_if_max(fields)
47
- when :all
48
- append_to_list(fields, @control_fields_list)
49
43
  when :max_count
50
44
  append_or_create_if_max_count(fields)
51
45
  end
@@ -72,12 +66,14 @@ class CfSim::ControlFieldSetFinder
72
66
  case type
73
67
  when :max_area
74
68
  @max_area_control_fields && fields.total_area + coexistable_fields.total_area <= @max_area_control_fields.total_area
75
- when :all
76
- field_count < @limit_field_count
77
69
  when :max_count
78
- field_count < @limit_field_count && @max_count_control_fields_list.any? && field_count < @max_count_control_fields_list.first.size
70
+ @max_count_control_fields_list.any? && field_count < @max_count_control_fields_list.first.size
79
71
  else
80
72
  false
81
73
  end
82
74
  end
75
+
76
+ def limit?
77
+ @limit_field_count && @max_count_control_fields_list && @max_count_control_fields_list.size == @limit_field_count
78
+ end
83
79
  end
@@ -1,3 +1,3 @@
1
1
  module CfSim
2
- VERSION = "1.0.0"
2
+ VERSION = '1.1.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cf_sim
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - pinzolo