Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -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
12 changes: 12 additions & 0 deletions driver.rb
Original file line number Diff line number Diff line change
@@ -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
46 changes: 43 additions & 3 deletions lib/csv_practice.rb
Original file line number Diff line number Diff line change
@@ -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
56 changes: 28 additions & 28 deletions test/csv_practice_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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