Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Completed the remainder of CP's exercises. #516

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
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
31 changes: 29 additions & 2 deletions ch09-writing-your-own-methods/ask.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,30 @@
def ask question
# your code here
end
while true
puts question
reply = gets.chomp.downcase

if (reply == "yes" || reply == "no")
if reply == "yes"
return true
else
return false
end
break
else
puts "Please answer \"yes\" or \"no\"."
end
end
end
puts "Hello, and thank you for participating in this survey."
puts

ask "Do you like eating tacos?"
ask "Do you like eating burritos?"
wets_bed = ask "Do you wet the bed?"
ask "Do you like eating chimichangas?"

puts
puts "DEBRIEFING:"
puts "Thank you for your time."
puts
puts wets_bed
15 changes: 12 additions & 3 deletions ch09-writing-your-own-methods/old_school_roman_numerals.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
def old_roman_numeral num
# your code here
end
def old_roman number
roman = ''
roman += 'M' * (number/1000)
roman += 'D' * (number % 1000/500)
roman += 'C' * (number % 500/100)
roman += 'L' * (number % 100/50)
roman += 'X' * (number % 50/10)
roman += 'V' * (number % 10/ 5)
roman += 'I' * (number % 5)
end

puts old_roman(1209)
58 changes: 55 additions & 3 deletions ch09-writing-your-own-methods/roman_numerals.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,55 @@
def roman_numeral num
# your code here
end
def old_roman_numeral number

i = 0
v = 0
x = 0
l = 0
c = 0
d = 0
m = 0

if number >= 1000
m = number/1000
number = number % 1000
end

if number >= 500
d = number/500
number = number % 500
end

if number >= 100
c = number/100
number = number % 100
end

if number >= 50
l = number/50
number = number % 50
end

if number >= 10
x = number/10
number = number % 10
end

if number >= 5
v = number/5
number = number % 5
end

if number < 5
i = number/1
number = number % 10
end

puts ("M" * m) + ("D" * d) + ("C" * c) + ("L" * l) + ("X" * x) + ("V" * v) + ("I" * i)

end

puts "Enter a number, and I'll convert it into an old-school Roman numeral"

reply = gets.chomp

puts "The number " + reply.to_s + " in old-school Roman numerals is:"
old_roman_numeral reply.to_i
19 changes: 16 additions & 3 deletions ch10-nothing-new/dictionary_sort.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
def dictionary_sort arr
# your code here
end
def sort(some_array)
recursive_sort(some_array, [])
end

def recursive_sort(unsorted_array, sorted_array)
smallest = unsorted_array.reduce { |memo, word| memo.downcase < word.downcase ? memo : word}
unsorted_array.delete_at(unsorted_array.index(smallest))
sorted_array << smallest
if unsorted_array.length > 0
recursive_sort(unsorted_array, sorted_array)
else
sorted_array
end
end

puts sort(["Blue", "red", "pink", "Yellow", "Purple", "green"])
99 changes: 97 additions & 2 deletions ch10-nothing-new/english_number.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,98 @@
def english_number number
# your code here
end
if number < 0
return 'Please enter a numberwith a value higher than zero'
end
if number == 0
return 'zero'
end



num_string = ''

ones_place = ['one', 'two', 'three',
'four', 'five', 'six',
'seven', 'eight', 'nine']

tens_place = ['ten', 'twenty', 'thirty',
'forty', 'fifty', 'sixty',
'seventy', 'eighty', 'ninety']


teenagers = ['eleven', 'twelve', 'thirteen',
'fourteen', 'fifteen', 'sixteen',
'seventeen', 'eighteen', 'nineteen']

large_n = [['hundred', 2],
['thousand', 3],
['million', 6],
['billion', 9],
['trillion', 12],
['quadrillion', 15],
['quintillion', 18],
['sextillion', 21],
['septillion', 24],
['octillion', 27],
['nonillion', 30],
['decillion', 33],
['undecillion', 36],
['duodecillion', 39],
['tredecillion', 42],
['quattuordecillion', 45],
['quindecillion', 48],
['sexdecillion', 51],
['septendecillion', 54],
['octodecillion', 57],
['novemdecillion', 60],
['vigintillion', 63],
['googol', 100]]

left = number

while large_n.length > 0
zil_pair = large_n.pop
zil_name = zil_pair[0]
zil_base = 10 ** zil_pair[1]
write = left/zil_base
left = left - write*zil_base

if write > 0

prefix = english_number write
num_string = num_string + prefix + ' ' + zil_name

if left > 0

num_string = num_string + ' '
end
end
end

write = left/10
left = left - write*10

if write > 0
if ((write == 1) and (left > 0))

num_string = num_string + teenagers[left-1]

left = 0
else
num_string = num_string + tens_place[write-1]
end

if left > 0

num_string = num_string + '-'
end
end

write = left
left = 0

if write > 0
num_string = num_string + ones_place[write-1]
end

num_string
end
109 changes: 108 additions & 1 deletion ch10-nothing-new/ninety_nine_bottles_of_beer.rb
Original file line number Diff line number Diff line change
@@ -1 +1,108 @@
# your code here
def english_number number
if number < 0
return 'Please enter a numberwith a value higher than zero'
end
if number == 0
return 'zero'
end



num_string = ''

ones_place = ['one', 'two', 'three',
'four', 'five', 'six',
'seven', 'eight', 'nine']

tens_place = ['ten', 'twenty', 'thirty',
'forty', 'fifty', 'sixty',
'seventy', 'eighty', 'ninety']


teenagers = ['eleven', 'twelve', 'thirteen',
'fourteen', 'fifteen', 'sixteen',
'seventeen', 'eighteen', 'nineteen']

large_n = [['hundred', 2],
['thousand', 3],
['million', 6],
['billion', 9],
['trillion', 12],
['quadrillion', 15],
['quintillion', 18],
['sextillion', 21],
['septillion', 24],
['octillion', 27],
['nonillion', 30],
['decillion', 33],
['undecillion', 36],
['duodecillion', 39],
['tredecillion', 42],
['quattuordecillion', 45],
['quindecillion', 48],
['sexdecillion', 51],
['septendecillion', 54],
['octodecillion', 57],
['novemdecillion', 60],
['vigintillion', 63],
['googol', 100]]

left = number

while large_n.length > 0
zil_pair = large_n.pop
zil_name = zil_pair[0]
zil_base = 10 ** zil_pair[1]
write = left/zil_base
left = left - write*zil_base

if write > 0

prefix = english_number write
num_string = num_string + prefix + ' ' + zil_name

if left > 0

num_string = num_string + ' '
end
end
end

write = left/10
left = left - write*10

if write > 0
if ((write == 1) and (left > 0))

num_string = num_string + teenagers[left-1]

left = 0
else
num_string = num_string + tens_place[write-1]
end

if left > 0

num_string = num_string + '-'
end
end

write = left
left = 0

if write > 0
num_string = num_string + ones_place[write-1]
end

num_string
end

num_at_start = 40
num_now = num_at_start
while num_now > 1
puts english_number(num_now).capitalize + ' bottles of beer on the wall, ' +
english_number(num_now) + ' bottles of beer!'
num_now = num_now - 1
puts 'Take one down, pass it around, ' +
english_number(num_now) + ' bottles of beer on the wall!'
end
6 changes: 4 additions & 2 deletions ch10-nothing-new/shuffle.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
def shuffle arr
# your code here
end
arr.sort_by{rand}
end

puts (shuffle ([4, 10, 9, 8, 400, 252]))
12 changes: 11 additions & 1 deletion ch10-nothing-new/sort.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
def sort arr
# your code here

return arr if arr.length <= 1

first = arr[0]
arr.delete_at(0)

higher = arr.select {|a| a > first}
lower = arr.select {|a| a <= first}

sort(lower) + [first] + sort(higher)

end
Loading