roman_nums 1.01 → 1.02

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: f034b104b02f94d22f9ed4b893fcd5916d8fb45ec0b6fa2a908bd382398a12d9
4
- data.tar.gz: 6d26356f96798dc082b1f9cf3202ddea10b9c551880c436898111c6c3ff95336
3
+ metadata.gz: b76be28318ea83275d0da0af409b23fddea674bd948893fa1649f09a4fd072ce
4
+ data.tar.gz: aad988cf119b2c55ed00e86ac45f96eb709037c90d37c6c5273b63f4fb17804c
5
5
  SHA512:
6
- metadata.gz: 9a1654dafa42ddc0ccf7c40ed44bd1208531c1be38281fc6ca516309460aedcab4305e82b018f3a094a10bf6c7a55565386b709eb73504688c268aee231a6d03
7
- data.tar.gz: 1162dd420759194a1a064e681a2fea14a00e2952b19d832dbeef959a49802e343f5d9306ede9f9fa32a0d04524d40821723909beb8bc9d649d58b9c83dfb52fd
6
+ metadata.gz: a91dd67856c76a59c86337d959af54c68bcae388bcf6851de3ac00d8bd03ac76d576eab2c595fa08c89d0a2df1b75da97eeda28f54ac5d5db39454e9784224fc
7
+ data.tar.gz: 80246f18e6aaba1030548f0e3897777e3054a67a728f87ac33393950c5f0c8d717f170ff2891b3ada0beab91ccda55ae22fa583d6e4b4ea54bfd83d3d8930b3d
data/README.md CHANGED
@@ -5,7 +5,6 @@
5
5
 
6
6
  #### Converts your input numbers to roman numerals.
7
7
 
8
- Note: Currently being moved from local environment to this gem. Will be completed by 7/10/18
9
8
 
10
9
  ## Installation
11
10
 
@@ -25,7 +24,42 @@ Or install it yourself as:
25
24
 
26
25
  ## Usage
27
26
 
28
- Note: Currently being moved from local environment to this gem. Will be completed by 7/10/18
27
+ 1. Add your arabic_nums to a hash with `:arabic_nums` symbol key and numbers as an array for the value, then pass the arguments to `RomanNums.convert(args)` like the example below. If you don't pass any args, and just run `RomanNums.convert` it will return sample data for testing.
28
+
29
+ ```
30
+ arabic_nums = [3994, 4336, 9233, 1376, 8851, 6222, 1839, 3570, 8660, 9018, 4448, 1827, 9753, 2738, 8386, 9867, 1698, 9022, 8631, 8382, 4752]
31
+
32
+ number_hashes = RomanNums.convert(arabic_nums: arabic_nums)
33
+ ```
34
+
35
+ 2. Results as Array of Hashes:
36
+
37
+ ```
38
+ [
39
+ {:arabic=>3994, :classic_rom=>"MMMDCCCCLXXXXIIII", :modern_rom=>"MMMDCCCCLXXXXIIII", :same=>true},
40
+ {:arabic=>4336, :classic_rom=>"MMMMCCCXXXVI", :modern_rom=>"MMMMCCCXXXVI", :same=>true},
41
+ {:arabic=>9233, :classic_rom=>"MMMMMMMMMCCXXXIII", :modern_rom=>"MMMMMMMMMCCXXXIII", :same=>true},
42
+ {:arabic=>1376, :classic_rom=>"MCCCLXXVI", :modern_rom=>"MCCCLXXVI", :same=>true},
43
+ {:arabic=>8851, :classic_rom=>"MMMMMMMMDCCCLI", :modern_rom=>"MMMMMMMMDCCCLI", :same=>true},
44
+ {:arabic=>6222, :classic_rom=>"MMMMMMCCXXII", :modern_rom=>"MMMMMMCCXXII", :same=>true},
45
+ {:arabic=>1839, :classic_rom=>"MDCCCXXXVIIII", :modern_rom=>"MDCCCXXXVIIII", :same=>true},
46
+ {:arabic=>3570, :classic_rom=>"MMMDLXX", :modern_rom=>"MMMDLXX", :same=>true},
47
+ {:arabic=>8660, :classic_rom=>"MMMMMMMMDCLX", :modern_rom=>"MMMMMMMMDCLX", :same=>true},
48
+ {:arabic=>9018, :classic_rom=>"MMMMMMMMMXVIII", :modern_rom=>"MMMMMMMMMXVIII", :same=>true},
49
+ {:arabic=>4448, :classic_rom=>"MMMMCCCCXXXXVIII", :modern_rom=>"MMMMCCCCXXXXVIII", :same=>true},
50
+ {:arabic=>1827, :classic_rom=>"MDCCCXXVII", :modern_rom=>"MDCCCXXVII", :same=>true},
51
+ {:arabic=>9753, :classic_rom=>"MMMMMMMMMDCCLIII", :modern_rom=>"MMMMMMMMMDCCLIII", :same=>true},
52
+ {:arabic=>2738, :classic_rom=>"MMDCCXXXVIII", :modern_rom=>"MMDCCXXXVIII", :same=>true},
53
+ {:arabic=>8386, :classic_rom=>"MMMMMMMMCCCLXXXVI", :modern_rom=>"MMMMMMMMCCCLXXXVI", :same=>true},
54
+ {:arabic=>9867, :classic_rom=>"MMMMMMMMMDCCCLXVII", :modern_rom=>"MMMMMMMMMDCCCLXVII", :same=>true},
55
+ {:arabic=>1698, :classic_rom=>"MDCLXXXXVIII", :modern_rom=>"MDCLXXXXVIII", :same=>true},
56
+ {:arabic=>9022, :classic_rom=>"MMMMMMMMMXXII", :modern_rom=>"MMMMMMMMMXXII", :same=>true},
57
+ {:arabic=>8631, :classic_rom=>"MMMMMMMMDCXXXI", :modern_rom=>"MMMMMMMMDCXXXI", :same=>true},
58
+ {:arabic=>8382, :classic_rom=>"MMMMMMMMCCCLXXXII", :modern_rom=>"MMMMMMMMCCCLXXXII", :same=>true},
59
+ {:arabic=>4752, :classic_rom=>"MMMMDCCLII", :modern_rom=>"MMMMDCCLII", :same=>true}
60
+ ]
61
+ ```
62
+
29
63
 
30
64
  ## Development
31
65
 
data/Rakefile CHANGED
@@ -18,7 +18,7 @@ task :console do
18
18
  require "active_support/all"
19
19
  ARGV.clear
20
20
 
21
- scraped_links = run_roman_nums
21
+ number_hashes = run_roman_nums
22
22
  # binding.pry
23
23
 
24
24
  IRB.start
@@ -26,14 +26,7 @@ end
26
26
 
27
27
 
28
28
  def run_roman_nums
29
- binding.pry
30
- solve = RomanNums::Solver.new
31
- res = solve.start
32
- binding.pry
29
+ arabic_nums = [3994, 4336, 9233, 1376, 8851, 6222, 1839, 3570, 8660, 9018, 4448, 1827, 9753, 2738, 8386, 9867, 1698, 9022, 8631, 8382, 4752]
33
30
 
34
- # scraper = LinkScraper::Scrape.new({text_criteria: text_criteria, path_criteria: path_criteria})
35
- # scraped_links = scraper.start('https://en.wikipedia.org/wiki/Austin%2C_Texas')
36
- # binding.pry
37
-
38
- # scraper = LinkScraper::Scrape.new(WebsCriteria.all_scrub_web_criteria)
31
+ number_hashes = RomanNums.convert(arabic_nums: arabic_nums)
39
32
  end
@@ -2,13 +2,75 @@
2
2
  module RomanNums
3
3
  class Solver
4
4
 
5
- def initialize
6
- binding.pry
5
+ def convert(args = {})
6
+ arabic_nums = args.fetch(:arabic_nums, nil)
7
+
8
+ if !arabic_nums.present?
9
+ arabic_nums = sample_arabic_nums
10
+ else
11
+ if arabic_nums.is_a?(::String)
12
+ arabic_nums = arabic_nums.scan(/\d+/)
13
+ arabic_nums.map! { |num| num.to_i }
14
+ end
15
+ end
16
+
17
+ roman_nums = arabic_nums.map { |num| convert_to_modern(num) }
18
+ end
19
+
20
+
21
+ def to_classic(arabic)
22
+ answer = arabic / 1000 # 1
23
+ remainder = arabic % 1000 # 1
24
+ thousands = "M" * answer
25
+
26
+ answer = remainder / 500 # 1
27
+ remainder = arabic % 500 # 1
28
+ five_hundreds = "D" * answer
29
+
30
+ answer = remainder / 100 # 1
31
+ remainder = arabic % 100 # 1
32
+ hundreds = "C" * answer
33
+
34
+ answer = remainder / 50 # 1
35
+ remainder = arabic % 50 # 1
36
+ fifties = "L" * answer
37
+
38
+ answer = remainder / 10 # 1 top of logic
39
+ remainder = arabic % 10 # 6
40
+ tens = "X" * answer
41
+
42
+ answer = remainder / 5 # 1
43
+ remainder = arabic % 5 # 1
44
+ fives = "V" * answer
45
+
46
+ answer_n = remainder / 1 #
47
+ ones = "I" * answer_n
48
+
49
+ roman_num = thousands + five_hundreds + hundreds + fifties + tens + fives + ones
50
+ end
51
+
52
+
53
+ def convert_to_modern(arabic)
54
+ classic_rom = to_classic(arabic)
55
+ modern_conversions = {'DCCCC'=> 'CM', 'CCCC'=> 'CD', 'LXXXX'=> 'XC', 'XXXX'=> 'XL', 'VIIII'=> 'IX', 'IIII'=> 'IV'}
56
+
57
+ modern_rom = classic_rom
58
+ modern_conversions.each do |k,v|
59
+ if classic_rom.include?(k)
60
+ modern_conversions = classic_rom.gsub(k,v)
61
+ end
62
+ end
63
+
64
+ same = false if modern_rom == classic_rom
65
+ converted_hsh = { arabic: arabic,
66
+ classic_rom: classic_rom,
67
+ modern_rom: modern_rom,
68
+ same: same || true
69
+ }
7
70
  end
8
71
 
9
- def start
10
- binding.pry
11
- "testing setup"
72
+ def sample_arabic_nums
73
+ numbers = (0..20).map { rand(999..9999) }
12
74
  end
13
75
 
14
76
 
@@ -1,3 +1,3 @@
1
1
  module RomanNums
2
- VERSION = "1.01"
2
+ VERSION = "1.02"
3
3
  end
data/lib/roman_nums.rb CHANGED
@@ -6,5 +6,9 @@ require "roman_nums/solver"
6
6
  require 'pry'
7
7
 
8
8
  module RomanNums
9
- # Your code goes here...
9
+
10
+ def self.convert(args={})
11
+ number_hashes = self::Solver.new.convert(args)
12
+ end
13
+
10
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roman_nums
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.01'
4
+ version: '1.02'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Booth
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-05 00:00:00.000000000 Z
11
+ date: 2018-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport