diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..5202365 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,38 @@ +GEM + remote: https://rubygems.org/ + specs: + ansi (1.5.0) + awesome_print (1.8.0) + builder (3.2.4) + coderay (1.1.3) + method_source (1.0.0) + minitest (5.14.2) + minitest-reporters (1.4.2) + ansi + builder + minitest (>= 5.0) + ruby-progressbar + minitest-skip (0.0.3) + minitest (~> 5.0) + minitest-spec (0.0.2.1) + minitest (>= 3.0) + pry (0.13.1) + coderay (~> 1.1) + method_source (~> 1.0) + rake (13.0.1) + ruby-progressbar (1.10.1) + +PLATFORMS + ruby + +DEPENDENCIES + awesome_print + minitest + minitest-reporters + minitest-skip + minitest-spec + pry + rake + +BUNDLED WITH + 2.1.4 diff --git a/driver.rb b/driver.rb new file mode 100644 index 0000000..bdc20b7 --- /dev/null +++ b/driver.rb @@ -0,0 +1,12 @@ +require_relative './lib/csv_practice' +require 'awesome_print' +OLYMPIC_DATA_FILENAME = 'data/athlete_events.csv' +olympic_athletes = get_all_olympic_athletes(OLYMPIC_DATA_FILENAME) +# ap olympic_athletes + +# MEDAL_TOTALS_FILENAME = 'data/medal_totals.csv' +# team_medals = total_medals_per_team(olympic_athletes) +# ap team_medals + +tall_ppl = tall_ppl_per_country(olympic_athletes) +ap tall_ppl diff --git a/lib/csv_practice.rb b/lib/csv_practice.rb index 320d81e..5735b2d 100644 --- a/lib/csv_practice.rb +++ b/lib/csv_practice.rb @@ -1,13 +1,53 @@ require 'csv' require 'awesome_print' -def get_all_olympic_athletes(filename) + +def get_all_olympic_athletes(filename) + rows = CSV.read(filename, headers: true) + required_fields = %w[ID Name Height Team Year City Sport Event Medal] + rows.map do |line| + # {"ID" => line["ID"]} + athlete = {} + required_fields.each do |field_name| + athlete[field_name] = line[field_name] + end + athlete + end end -def total_medals_per_team(olympic_data) +def total_medals_per_team(olympic_data) + total_medals_hash = {} + medals_options = %w(Gold Silver Bronze) + olympic_data.each do |athlete| + if medals_options.include?(athlete["Medal"]) + if total_medals_hash[athlete["Team"]] + total_medals_hash[athlete["Team"]] += 1 + else + total_medals_hash[athlete["Team"]] = 1 + end + end + end + return total_medals_hash end -def get_all_gold_medalists(olympic_data) + +def tall_ppl_per_country(olympic_data) + tall_ppl_hash = Hash.new(0) + olympic_data.each do |athlete| + if athlete["Height"].to_i > 180 + tall_ppl_hash[athlete["Team"]] += 1 + end + end + ap tall_ppl_hash.sort_by { |key, value| value}.to_h end + +# def get_all_gold_medalists(olympic_data) +# end + +# Random personal reminders/notes: +# return boots you. +# How does it know that its +# delete_if { |k, v| k == delete} +# # /Users/ada/Documents/ada_exercises/csv-practice/data/athlete_events.csv \ No newline at end of file diff --git a/test/csv_practice_test.rb b/test/csv_practice_test.rb index 34061f4..6b06630 100644 --- a/test/csv_practice_test.rb +++ b/test/csv_practice_test.rb @@ -92,33 +92,33 @@ end end - xdescribe 'get_all_gold_medalists' do - - it 'returns an array of gold medalists' do - # Arrange - data = get_all_olympic_athletes(OLYMPIC_DATA_FILENAME) - - # Act - all_gold_medalists = get_all_gold_medalists(data) - - # Assert - expect(all_gold_medalists).must_be_instance_of Array - all_gold_medalists.each do |medalist| - expect(medalist).must_be_instance_of Hash - expect(medalist['Medal']).must_equal "Gold" - end - end - - it 'has the correct number of gold medalists' do - # Arrange - data = get_all_olympic_athletes(OLYMPIC_DATA_FILENAME) - - # Act - all_gold_medalists = get_all_gold_medalists(data) - - # Assert - expect(all_gold_medalists.length).must_equal 2344 - end - end + # describe 'get_all_gold_medalists' do + # + # it 'returns an array of gold medalists' do + # # Arrange + # data = get_all_olympic_athletes(OLYMPIC_DATA_FILENAME) + # + # # Act + # all_gold_medalists = get_all_gold_medalists(data) + # + # # Assert + # expect(all_gold_medalists).must_be_instance_of Array + # all_gold_medalists.each do |medalist| + # expect(medalist).must_be_instance_of Hash + # expect(medalist['Medal']).must_equal "Gold" + # end + # end + # + # it 'has the correct number of gold medalists' do + # # Arrange + # data = get_all_olympic_athletes(OLYMPIC_DATA_FILENAME) + # + # # Act + # all_gold_medalists = get_all_gold_medalists(data) + # + # # Assert + # expect(all_gold_medalists.length).must_equal 2344 + # end + # end end