dla 0.1.0 → 0.2.0

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: 8e1e35e63cdc50dd23e32a232530c7631f989b0735f9671bd1c122bfbbce0a90
4
- data.tar.gz: 57cc1168e784822859d97db4f431a5dfb20c9d1ff488c076105a11ef8d487879
3
+ metadata.gz: 7924940dd08d75a8ba2a33bde89303a8e614935f52a1f4b165071f5079725551
4
+ data.tar.gz: 3f119444b8274e10d3c3ae6fee1291ddeba3fdede92da04f8e080607038ff8aa
5
5
  SHA512:
6
- metadata.gz: a5006c46748ee4bd969c73807174258aabf36bf60ff6bb0fcc51927dcc50be0bafd6350bdb951118ab51fcd043b3be8194e901ce7be0e4669a6c104fb8e772fb
7
- data.tar.gz: 6b05a8681ae5886c141e23484cab2967de9058bdd79d52f6f78523b0aeed241905623967e55e8ca72ba3d572ce855b3a7577bdd027bc60cfb24937eef394ae7b
6
+ metadata.gz: 894d2beef00997a1a3648502ce9352c9732dc20c7e976b84353a6321229297e6b094e8c7212e749f6fcd33633b1627cd3f03838b8bde6ebd735ac13164a9e747
7
+ data.tar.gz: ecaf94c09b269f31b8add7c10a6cf55025ccc470146ade0855721d674a2cd64d4ce00c9097d1e8f7e7d8f41df4dc122b5058317f5e55a4b93fdab889a6e0bce4
@@ -19,6 +19,7 @@ A Ruby library implementing Diffusion-Limited Aggregation.
19
19
  - [ ] Make history optional
20
20
  - [ ] Multithreading
21
21
  - [ ] Make Demo app human-friendly
22
+ - [ ] Make direction vectors configurable
22
23
 
23
24
  ## Installation
24
25
 
@@ -54,6 +55,10 @@ Inspect state:
54
55
  ``` ruby
55
56
  root.nodes.each{|n| puts n}
56
57
  ```
58
+
59
+ The history string is made of the letters n, s, e, w to describe the directions followed during the calls to `#move`.
60
+ NOTE: The Y axis is oriented to the North.
61
+
57
62
  ## Demo app
58
63
 
59
64
  A quick and dirty demo app is in `./bin/dla.rb`.
data/dla.gemspec ADDED
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/dla/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'dla'
7
+ spec.version = DLA::VERSION
8
+ spec.authors = ['Arnaud Meuret']
9
+ spec.email = ['arnaud@meuret.net']
10
+
11
+ spec.summary = 'A tool to create diffusion-limited aggregates.'
12
+ spec.description = 'A tool to compute and export trees built using a DLA (Diffusion-limited Aggregation) algorithm.'
13
+ spec.homepage = 'https://github.com/ameuret/dla'
14
+ spec.license = 'Unlicense'
15
+ spec.required_ruby_version = '>= 3.3.0'
16
+
17
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
18
+
19
+ spec.metadata['homepage_uri'] = spec.homepage
20
+ spec.metadata['source_code_uri'] = spec.homepage
21
+ #spec.metadata['changelog_uri'] = 'TODO: Put your gem\'s CHANGELOG.md URL here.'
22
+
23
+ # Specify which files should be added to the gem when it is released.
24
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
+ spec.files = Dir.chdir(__dir__) do
26
+ `git ls-files -z`.split("\x0").reject do |f|
27
+ (File.expand_path(f) == __FILE__) ||
28
+ f.start_with?(*%w[bin/ test/ spec/ features/ .git appveyor Gemfile])
29
+ end
30
+ end
31
+ spec.bindir = "exe"
32
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
33
+ spec.require_paths = ['lib']
34
+
35
+ # Uncomment to register a new dependency of your gem
36
+ spec.add_dependency "tty-box", "~> 0.7"
37
+ spec.add_dependency "tty-cursor", "~> 0.7"
38
+ spec.add_dependency "tty-reader", "~> 0.9"
39
+ spec.add_dependency "tty-screen", "~> 0.8"
40
+ spec.add_dependency "ruby-duration", "~> 3.2"
41
+
42
+ spec.add_development_dependency 'filewatcher-cli', '~> 1.1'
43
+ spec.add_development_dependency 'gem-release', '~> 2.2'
44
+ spec.add_development_dependency 'rake', '~> 13.0'
45
+ spec.add_development_dependency 'rspec', '~> 3.13'
46
+ spec.add_development_dependency 'simplecov', '~> 0.22'
47
+ spec.add_development_dependency 'solargraph', '~> 0.5'
48
+ # For more information and examples about making a new gem, check out our
49
+ # guide at: https://bundler.io/guides/creating_gem.html
50
+ end
data/lib/dla/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DLA
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/dla.rb CHANGED
@@ -31,6 +31,10 @@ module DLA
31
31
  allTreeNodes.find { |n| n.x == x && n.y == y }
32
32
  end
33
33
 
34
+ def free?(x, y)
35
+ !allTreeNodes.any? { |n| n.x == x && n.y == y }
36
+ end
37
+
34
38
  def north
35
39
  @children[:north]
36
40
  end
@@ -80,10 +84,11 @@ module DLA
80
84
  }[dir]
81
85
  end
82
86
 
83
- def move
87
+ def move(direction = nil)
84
88
  raise RuntimeError if @parent
89
+ raise ArgumentError unless (direction.nil? || [:north, :south, :east, :west].include?(direction))
85
90
 
86
- dir = [:north, :south, :east, :west].sample
91
+ dir = direction || [:north, :south, :east, :west].sample
87
92
  destV = {
88
93
  north: [0, 1],
89
94
  south: [0, -1],
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dla
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arnaud Meuret
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.1'
97
+ - !ruby/object:Gem::Dependency
98
+ name: gem-release
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '2.2'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rake
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,20 @@ dependencies:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
138
  version: '3.13'
139
+ - !ruby/object:Gem::Dependency
140
+ name: simplecov
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.22'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.22'
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: solargraph
127
155
  requirement: !ruby/object:Gem::Requirement
@@ -152,8 +180,9 @@ files:
152
180
  - CODE_OF_CONDUCT.md
153
181
  - LICENSE
154
182
  - LICENSE.txt
155
- - README
183
+ - README.md
156
184
  - Rakefile
185
+ - dla.gemspec
157
186
  - lib/dla.rb
158
187
  - lib/dla/version.rb
159
188
  - sig/dla.rbs