roman_nums 1.01 → 1.02

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
  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