slcsp 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 54a9297dd49c608c030c86e0c5fad1533f71206e72ae5da0bcd06f72704e51b4
4
+ data.tar.gz: 8f1663495f75425223f51384234e04581451f7e867d769c28cb92609dc7951b6
5
+ SHA512:
6
+ metadata.gz: 14019111a299e5006a21b9282d5971e863a14670083c1254192a5f2c7d7d06956cd1bf95920c4afddc29ddb87702605307d93e53f45694fc243b6e3ddd89e761
7
+ data.tar.gz: 04ca56cef529b6a8567ad9a199809bb0de4154223e8525e4a5c8fd9e3a7c41e7d8bc6e2aa595cd6ddaaa359c851c671c7cee271bedc6591aa6b3eb30c7c47dcf
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,13 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.6
3
+
4
+ Style/StringLiterals:
5
+ Enabled: true
6
+ EnforcedStyle: double_quotes
7
+
8
+ Style/StringLiteralsInInterpolation:
9
+ Enabled: true
10
+ EnforcedStyle: double_quotes
11
+
12
+ Layout/LineLength:
13
+ Max: 120
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ ## [Unreleased]
2
+
3
+ ## [0.1.0] - 2023-02-07
4
+
5
+ - Initial release
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in slcsp.gemspec
6
+ gemspec
7
+
8
+ gem "rake", "~> 13.0"
9
+
10
+ gem "rspec", "~> 3.0"
11
+
12
+ gem "rubocop", "~> 1.21"
data/Gemfile.lock ADDED
@@ -0,0 +1,108 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ slcsp (0.1.0)
5
+ thor
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ aruba (2.1.0)
11
+ bundler (>= 1.17, < 3.0)
12
+ childprocess (>= 2.0, < 5.0)
13
+ contracts (>= 0.16.0, < 0.18.0)
14
+ cucumber (>= 4.0, < 9.0)
15
+ rspec-expectations (~> 3.4)
16
+ thor (~> 1.0)
17
+ ast (2.4.2)
18
+ builder (3.2.4)
19
+ childprocess (4.1.0)
20
+ coderay (1.1.3)
21
+ contracts (0.17)
22
+ cucumber (8.0.0)
23
+ builder (~> 3.2, >= 3.2.4)
24
+ cucumber-ci-environment (~> 9.0, >= 9.0.4)
25
+ cucumber-core (~> 11.0, >= 11.0.0)
26
+ cucumber-cucumber-expressions (~> 15.1, >= 15.1.1)
27
+ cucumber-gherkin (~> 23.0, >= 23.0.1)
28
+ cucumber-html-formatter (~> 19.1, >= 19.1.0)
29
+ cucumber-messages (~> 18.0, >= 18.0.0)
30
+ diff-lcs (~> 1.5, >= 1.5.0)
31
+ mime-types (~> 3.4, >= 3.4.1)
32
+ multi_test (~> 1.1, >= 1.1.0)
33
+ sys-uname (~> 1.2, >= 1.2.2)
34
+ cucumber-ci-environment (9.1.0)
35
+ cucumber-core (11.0.0)
36
+ cucumber-gherkin (~> 23.0, >= 23.0.1)
37
+ cucumber-messages (~> 18.0, >= 18.0.0)
38
+ cucumber-tag-expressions (~> 4.1, >= 4.1.0)
39
+ cucumber-cucumber-expressions (15.2.0)
40
+ cucumber-gherkin (23.0.1)
41
+ cucumber-messages (~> 18.0, >= 18.0.0)
42
+ cucumber-html-formatter (19.2.0)
43
+ cucumber-messages (~> 18.0, >= 18.0.0)
44
+ cucumber-messages (18.0.0)
45
+ cucumber-tag-expressions (4.1.0)
46
+ diff-lcs (1.5.0)
47
+ ffi (1.15.5)
48
+ json (2.6.3)
49
+ method_source (1.0.0)
50
+ mime-types (3.4.1)
51
+ mime-types-data (~> 3.2015)
52
+ mime-types-data (3.2022.0105)
53
+ multi_test (1.1.0)
54
+ parallel (1.22.1)
55
+ parser (3.2.0.0)
56
+ ast (~> 2.4.1)
57
+ pry (0.14.2)
58
+ coderay (~> 1.1)
59
+ method_source (~> 1.0)
60
+ rainbow (3.1.1)
61
+ rake (13.0.6)
62
+ regexp_parser (2.6.2)
63
+ rexml (3.2.5)
64
+ rspec (3.12.0)
65
+ rspec-core (~> 3.12.0)
66
+ rspec-expectations (~> 3.12.0)
67
+ rspec-mocks (~> 3.12.0)
68
+ rspec-core (3.12.1)
69
+ rspec-support (~> 3.12.0)
70
+ rspec-expectations (3.12.2)
71
+ diff-lcs (>= 1.2.0, < 2.0)
72
+ rspec-support (~> 3.12.0)
73
+ rspec-mocks (3.12.3)
74
+ diff-lcs (>= 1.2.0, < 2.0)
75
+ rspec-support (~> 3.12.0)
76
+ rspec-support (3.12.0)
77
+ rubocop (1.44.1)
78
+ json (~> 2.3)
79
+ parallel (~> 1.10)
80
+ parser (>= 3.2.0.0)
81
+ rainbow (>= 2.2.2, < 4.0)
82
+ regexp_parser (>= 1.8, < 3.0)
83
+ rexml (>= 3.2.5, < 4.0)
84
+ rubocop-ast (>= 1.24.1, < 2.0)
85
+ ruby-progressbar (~> 1.7)
86
+ unicode-display_width (>= 2.4.0, < 3.0)
87
+ rubocop-ast (1.24.1)
88
+ parser (>= 3.1.1.0)
89
+ ruby-progressbar (1.11.0)
90
+ sys-uname (1.2.2)
91
+ ffi (~> 1.1)
92
+ thor (1.2.1)
93
+ unicode-display_width (2.4.2)
94
+
95
+ PLATFORMS
96
+ arm64-darwin-21
97
+
98
+ DEPENDENCIES
99
+ aruba
100
+ cucumber
101
+ pry (~> 0.14)
102
+ rake (~> 13.0)
103
+ rspec (~> 3.0)
104
+ rubocop (~> 1.21)
105
+ slcsp!
106
+
107
+ BUNDLED WITH
108
+ 2.3.7
data/README.md ADDED
@@ -0,0 +1,56 @@
1
+ # SLCSP
2
+
3
+ ## Calculate the second lowest cost silver plan
4
+
5
+ ## Problem
6
+
7
+ You've been asked to determine the second lowest cost silver plan (SLCSP) for
8
+ a group of ZIP codes.
9
+
10
+ ## Task
11
+
12
+ You've been given a CSV file, `slcsp.csv`, which contains the ZIP codes in the
13
+ first column. Fill in the second column with the rate (see below) of the
14
+ corresponding SLCSP and emit the answer on `stdout` using the same CSV format as
15
+ the input. Write your code in your best programming language.
16
+
17
+ ### Expected output
18
+
19
+ The order of the rows in your answer as emitted on stdout must stay the same as how they
20
+ appeared in the original `slcsp.csv`. The first row should be the column headers: `zipcode,rate`
21
+ The remaining lines should output unquoted values with two digits after the decimal
22
+ place of the rates, for example: `64148,245.20`.
23
+
24
+ It may not be possible to determine a SLCSP for every ZIP code given; for example, if there is only one silver plan available, there is no _second_ lowest cost plan. Check for cases where a definitive answer cannot be found and leave those cells blank in the output (no quotes or zeroes or other text). For example, `40813,`.
25
+
26
+ ## Additional information
27
+
28
+ The SLCSP is the so-called "benchmark" health plan in a particular area. It's
29
+ used to compute the tax credit that qualifying individuals and families receive
30
+ on the marketplace. It's the second lowest rate for a silver plan in the rate area.
31
+
32
+ For example, if a rate area had silver plans with rates of `[197.3, 197.3, 201.1, 305.4, 306.7, 411.24]`, the SLCSP for that rate area would be `201.1`,
33
+ since it's the second lowest rate in that rate area.
34
+
35
+ A plan has a "metal level", which can be either Bronze, Silver, Gold, Platinum,
36
+ or Catastrophic. The metal level is indicative of the level of coverage the plan
37
+ provides.
38
+
39
+ A plan has a "rate", which is the amount that a consumer pays as a monthly
40
+ premium, in dollars.
41
+
42
+ A plan has a "rate area", which is a geographic region in a state that
43
+ determines the plan's rate. A rate area is a tuple of a state and a number, for
44
+ example, NY 1, IL 14.
45
+
46
+ There are two additional CSV files in this directory besides `slcsp.csv`:
47
+
48
+ - `plans.csv` — all the health plans in the U.S. on the marketplace
49
+ - `zips.csv` — a mapping of ZIP code to county/counties & rate area(s)
50
+
51
+ A ZIP code can potentially be in more than one county. If the county can not be
52
+ determined definitively by the ZIP code, it may still be possible to determine
53
+ the rate area for that ZIP code. A ZIP code can also be in more than one rate area. In that case, the answer is ambiguous
54
+ and should be left blank.
55
+
56
+ We'll want to compile your code from source and run it from a Unix-like command line, so please include the complete instructions for doing so in a COMMENTS file.
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ require "rubocop/rake_task"
9
+
10
+ RuboCop::RakeTask.new
11
+
12
+ task default: %i[spec rubocop]
data/comments.md ADDED
@@ -0,0 +1,20 @@
1
+ # Slcsp
2
+
3
+ Welcome AdHoc professional. This is a repository with the source code of slcsp gem.
4
+ There are two ways to see the desired output:
5
+
6
+ ## Installation from rubygems.org
7
+
8
+ Provided, you have bundler installed
9
+
10
+ $ gem install slcsp
11
+
12
+ OR Use binary as is
13
+
14
+ 1. cd into gem's directory
15
+ 2. run command
16
+
17
+ $ exe/slcsp match
18
+
19
+ The gem comes with default configurations. Ability to pass different config options will be added
20
+ in future versions.