Skip to content

initial_pull_request #497

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

Open
wants to merge 28 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
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
Empty file added Chapter_9_Exercise1
Empty file.
19 changes: 17 additions & 2 deletions ch09-writing-your-own-methods/ask.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
def ask question
# your code here
end
while true
puts question
reply = gets.chomp.downcase

if (reply == 'yes' || reply == 'no')
if reply == 'yes'
answer = true
else
answer = false
end
break
else
puts 'Please answer "yes" or "no". '
end
end
end
load './ask.rb'
14 changes: 12 additions & 2 deletions ch09-writing-your-own-methods/old_school_roman_numerals.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
def old_roman_numeral num
# your code here
end
roman = ''

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Find what the error after "end" means.

roman = roman + 'M' * (num / 1000)
roman = roman + 'D' * (num % 1000 / 500)
roman = roman + 'C' * (num % 500 / 100)
roman = roman + 'L' * (num % 100/ 50)
roman = roman + 'X' * (num % 50/ 10)
roman = roman + 'V' * (num % 10/ 5)
roman = roman + 'I' * (num % 5/ 1)
roman
end
puts(old_roman_numeral(1999))
39 changes: 37 additions & 2 deletions ch09-writing-your-own-methods/roman_numerals.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,38 @@
def roman_numeral num
# your code here
end
thousands = (num / 1000)
hundreds = (num % 1000 / 100)
tens = (num % 100 / 10)
ones = (num % 10 )

roman = 'M' * thousands
if hundreds == 9
roman = roman + 'CM'
elsif hundreds == 4
roman = roman + 'CD'
else
roman = roman + 'D' * (num % 1000 / 500)
roman = roman + 'C' * (num % 500 / 100)
end

if tens == 9
roman = roman + 'XC'
elsif tens == 4
roman = roman + 'XL'
else
roman = roman + 'L' * (num % 100 / 50)
roman = roman + 'X' * (num % 50 / 10)
end

if ones == 9
roman = roman + 'IX'
elsif ones == 4
roman = roman + 'IV'
else
roman = roman + 'V' * (num % 10 / 5)
roman = roman + 'I' * (num % 5 / 1)
end

roman
end

puts (roman_numeral(1999))
Empty file added ch10-nothing-new/Recursion
Empty file.
15 changes: 12 additions & 3 deletions ch10-nothing-new/dictionary_sort.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
def dictionary_sort arr
# your code here
end
def dictionary_sort arr
return arr if arr.length <= 1

middle = arr.pop
less = arr.select{|x| x.downcase < middle.downcase}
morr = arr.select{|x| x.downcase >= middle.downcase}

dictionary_sort(less) + [middle] + dictionary_sort(more)
end

words = ['can', 'feel', ' singing', 'lobster', 'banana']
puts(dictionary_sort(words).join(''))
71 changes: 70 additions & 1 deletion ch10-nothing-new/english_number.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,72 @@
def english_number number
# your code here
if number < 0
return 'Please enter a number that is not negative.'
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' ]

zillions = [['hundred', 2], ['thousand', 3], ['million', 6], ['billion', 9], ['trillion', 12], ['quadrillion', 15], ['quintillion', 18] ['sextillion', 21], ['septillion', 24], ['octillion', 27], ['nontillion', 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 zillions.length > 0
zil_pair = zillions.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

puts english_number(0)
puts english_number(9)
puts english_number(10)
puts english_number(11)
puts english_number(17)
puts english_number(32)
puts english_number(88)
puts english_number(99)
puts english_number(100)
puts english_number(101)
puts english_number(234)
puts english_number(3211)
puts english_number(999999)
puts english_number(1000000000000)
puts english_number(62819273644748393029282)
72 changes: 72 additions & 0 deletions ch10-nothing-new/english_number.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
def english_number number
if number < 0
return 'Please enter a number that is not negative.'
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' ]

zillions = [['hundred', 2], ['thousand', 3], ['million', 6], ['billion', 9], ['trillion', 12], ['quadrillion', 15], ['quintillion', 18] ['sextillion', 21], ['septillion', 24], ['octillion', 27], ['nontillion', 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 zillions.length > 0
zil_pair = zillions.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

puts english_number(0)
puts english_number(9)
puts english_number(10)
puts english_number(11)
puts english_number(17)
puts english_number(32)
puts english_number(88)
puts english_number(99)
puts english_number(100)
puts english_number(101)
puts english_number(234)
puts english_number(3211)
puts english_number(999999)
puts english_number(1000000000000)
puts english_number(62819273644748393029282)
15 changes: 14 additions & 1 deletion ch10-nothing-new/ninety_nine_bottles_of_beer.rb
Original file line number Diff line number Diff line change
@@ -1 +1,14 @@
# your code here
require_relative 'english_number.rb'

def plurals(num, word)
num == "one" ? num + " " + word : num + " " + word + "s"
end
count = 999
while count > 0
number_bottles = english_number(count)
bottles = plurals(number_bottles, "bottle")
puts "#{bottles.capitalize} of beers on the wall, #{bottles} of beer."
count -= 1
bottles = plurals(english_number(count), "bottle")
puts "Take one down and pass it around, #{bottles} of beer on the wall."
end
11 changes: 8 additions & 3 deletions ch10-nothing-new/shuffle.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
def shuffle arr
# your code here
end
meeshyep:~/workspace/Projects/learn_to_program/ch10-nothing-new (master) $ irb
2.3.0 :001 > def shuffle arr
2.3.0 :002?> arr.sort_by{rand}
2.3.0 :003?> end
=> :shuffle
2.3.0 :004 > p(shuffle([1,2,3,4,5,6,7,8,9,0]))
[9, 0, 6, 8, 4, 3, 2, 1, 7, 5]
=> [9, 0, 6, 8, 4, 3, 2, 1, 7, 5]
3 changes: 0 additions & 3 deletions ch10-nothing-new/sort.rb

This file was deleted.

28 changes: 28 additions & 0 deletions ch10-nothing-new/sort.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
def sort arr
rec_sort arr, []
end

def rec_sort unsorted, sorted
if unsorted.length <= 0
return sorted
end

smallest = unsorted.pop
still_unsorted = []

unsorted.each do |tested_object|
if tested_object < smallest
still_unsorted.push smallest
smallest = tested_object
else
still_unsorted.push tested_object
end
end

sorted.push smallest

rec_sort still_unsorted, sorted
end

puts(sort(['I can', 'feel', 'singing', 'like', 'a', 'can']))

36 changes: 35 additions & 1 deletion ch11-reading-and-writing/build_a_better_playlist.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,37 @@
def music_shuffle filenames
# your code here
filenames - filenames.sort
len = filenames.length
else

2.times do
l_idx = 0
r_idx = len/2
shuf = []

while shuf.length < len
if shuf.length%2 == 0
shuf.push(filenames[r_indx])
r_idx = r_idx + 1
else
shuf.push(filenames[l_idx])
l_idx = l_idx + 1
end
end

filenames = shuf
end

arr = []
cut = rand(len)
idx = 0

while idx < len
arr.push(filenames[(idx+cut)%len])
idx = idx + 1
end

arr
end
songs = ['aa/bbb', 'aa/ccc', 'aa/ddd', 'AAA/xxxx', 'AAA/yyy', 'AAA/zzzz' , 'foo/bar']
puts (music_shuffle(songs))
end_of_input
15 changes: 14 additions & 1 deletion ch11-reading-and-writing/build_your_own_playlist.rb
Original file line number Diff line number Diff line change
@@ -1 +1,14 @@
# your code here
# your code here
Dir.chdir '/meeshyep:~/workspace//Projects/learn_to_program/ch11-reading-and-writing/'
music_files= Dir['*.mp3']
puts music_files

playlist_name=File.new("michelle_playlist.m3u", "w")

def write_files object, filename
File.open filename, 'w' do |f|
f.write object.join("\n")
end
end

write_files(music_files, playlist_name)
Loading