pitchcar 0.3.0 → 0.4.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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pitchcar.rb +16 -3
  3. data/pitchcar.gemspec +1 -1
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2c58c55c7dd606fb47608a84e45d5b2b2b3b02f4
4
- data.tar.gz: b54fa3cc18b8e9dd78c6194e2f734268c3c3afbc
3
+ metadata.gz: cf96e6b5e23b38365cd23665ad69f04e8b977f9a
4
+ data.tar.gz: 64cadfddd6379dac5517f8e183b8c5dd88a1b92e
5
5
  SHA512:
6
- metadata.gz: c38eb9cc4657a81ac872c1d44968ee2652acaf9c74dbd73133b0c7288594cfb2753e59de11898159a1325107de1bd4420d7f0121033790428d295df3a4d290fd
7
- data.tar.gz: 4816b8fc9925dd92e1362e67aa9ecdc052b3638b7736f8cd511f55f0597a3a7ef1ae5876470bc0e2e986030acc55fe9e37a2bb95578a163c9a8547768df1645d
6
+ metadata.gz: c22eb69419c43fa3f383786fc6f896bbcea126ef820eb453ea79df77d8fc3ff206f74f93a0813ed1e03f69ee82b598bfe89a9b2ecdaf170f5f0931c0bdc86af4
7
+ data.tar.gz: ed60d3316ee4cddb978114f7da111e90c2d05542b0d0637523a5473ab0019a362bd074d0dfe160e96f8b9b3fbc44b54c17f57d688f1167de0b513662bcd5071d
data/lib/pitchcar.rb CHANGED
@@ -11,9 +11,22 @@ module Pitchcar
11
11
  end
12
12
 
13
13
  def random_valid_track(straight, left_right, size_restrictions = {})
14
- track = nil
15
- track = random_track(straight, left_right, size_restrictions) until !track.nil? && track.valid?
16
- track.with_wall_combinations.sample
14
+ found_track = nil
15
+ semaphore = Mutex.new
16
+
17
+ ENV.fetch('MAX_THREADS', 10).times do
18
+ Thread.new do
19
+ track = nil
20
+ while track.nil? || !track.valid?
21
+ Thread.stop unless found_track.nil?
22
+ track = random_track(straight, left_right, size_restrictions)
23
+ end
24
+ semaphore.synchronize { found_track = track if found_track.nil? }
25
+ end
26
+ end
27
+
28
+ sleep(0.01) while found_track.nil?
29
+ found_track.with_wall_combinations.sample
17
30
  end
18
31
 
19
32
  def random_valid_tracks(straight, left_right, count = 2, size_restrictions = {})
data/pitchcar.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'pitchcar'
3
- s.version = '0.3.0'
3
+ s.version = '0.4.0'
4
4
  s.date = '2017-02-23'
5
5
  s.summary = 'Pitchcar Track Generator'
6
6
  s.description = 'Generates tracks for pitchcar'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pitchcar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonah Hirsch