From fef0f06956aa5f50f4ad0e24ce9694828399ba7f Mon Sep 17 00:00:00 2001 From: JGilly Date: Thu, 13 Oct 2016 12:18:24 -0600 Subject: [PATCH] Complete Viking School prep ruby challenges 1-6 plus Bigger Challenge --- combinations.rb | 10 ++++++++++ counting_game.rb | 13 +++++++++++++ factorial.rb | 11 +++++++++++ is_prime.rb | 21 +++++++++++++++++++++ overlap.rb | 13 +++++++++++++ power.rb | 10 ++++++++++ prime.rb | 21 +++++++++++++++++++++ uniques.rb | 12 ++++++++++++ 8 files changed, 111 insertions(+) create mode 100644 combinations.rb create mode 100644 counting_game.rb create mode 100644 factorial.rb create mode 100644 is_prime.rb create mode 100644 overlap.rb create mode 100644 power.rb create mode 100644 prime.rb create mode 100644 uniques.rb diff --git a/combinations.rb b/combinations.rb new file mode 100644 index 0000000..ef0d9ee --- /dev/null +++ b/combinations.rb @@ -0,0 +1,10 @@ +def combinations( strings1, strings2) + strings1.collect { |string1| + strings2.collect { |string2| + string1 + string2 + } + }.flatten +end + +p combinations(["on","in"],["to","rope"]) +# ["onto", "onrope", "into", "inrope"] \ No newline at end of file diff --git a/counting_game.rb b/counting_game.rb new file mode 100644 index 0000000..3949b3a --- /dev/null +++ b/counting_game.rb @@ -0,0 +1,13 @@ +def counting_game(num_players, num_count_to) + clockwise = true + person = 0 + + num_count_to.times do |count| + puts "Player " + (person+1).to_s + " says " + (count+1).to_s + clockwise = !clockwise if (count+1)%7 == 0 + (count+1)%11 == 0 ? move = 2 : move = 1 + clockwise ? person = (person+move)%num_players : person = (person-move)%num_players + end +end + +counting_game(10, 100) \ No newline at end of file diff --git a/factorial.rb b/factorial.rb new file mode 100644 index 0000000..558c75c --- /dev/null +++ b/factorial.rb @@ -0,0 +1,11 @@ +def factorial(end_number) + return 0 if end_number == 0 + result = 1 + (1..end_number).each do |num| + result *= num + end + result +end + +puts factorial(5) +# 120 \ No newline at end of file diff --git a/is_prime.rb b/is_prime.rb new file mode 100644 index 0000000..2761363 --- /dev/null +++ b/is_prime.rb @@ -0,0 +1,21 @@ +$primes = [2] + +def is_prime?(number) + return false if number < 1 + return true if $primes.include?(number) + return false if $primes[-1] > number + + test_number = $primes[-1] + begin + test_number += 1 + next if $primes.any? { |prime| test_number%prime == 0 } + + $primes << test_number + return true if test_number == number + end while test_number < number + + return false +end + +p is_prime? 23 # true +p $primes # [2, 3, 5, 7, 11, 13, 17, 19, 23] diff --git a/overlap.rb b/overlap.rb new file mode 100644 index 0000000..e70fc47 --- /dev/null +++ b/overlap.rb @@ -0,0 +1,13 @@ +def overlap(rect1, rect2) + rect1_unincl_yrange = (rect1[0][0]+1...rect1[1][0]) + rect1_unincl_xrange = (rect1[0][1]+1...rect1[1][1]) + if ( rect1_unincl_xrange.include? rect2[0][0] ) || ( rect1_unincl_xrange.include? rect2[1][0] ) + if ( rect1_unincl_yrange.include? rect2[0][1] ) || ( rect1_unincl_yrange.include? rect2[1][1] ) + return true + end + end + return false +end + +puts overlap( [ [0,0],[3,3] ], [ [1,1],[4,5] ] ) # true +puts overlap( [ [0,0],[1,4] ], [ [1,1],[3,2] ] ) # false \ No newline at end of file diff --git a/power.rb b/power.rb new file mode 100644 index 0000000..54194f3 --- /dev/null +++ b/power.rb @@ -0,0 +1,10 @@ +def power(base, exponent) + result = 1 + exponent.times do + result *= base + end + result +end + +puts power(3,4) +# 81 \ No newline at end of file diff --git a/prime.rb b/prime.rb new file mode 100644 index 0000000..2761363 --- /dev/null +++ b/prime.rb @@ -0,0 +1,21 @@ +$primes = [2] + +def is_prime?(number) + return false if number < 1 + return true if $primes.include?(number) + return false if $primes[-1] > number + + test_number = $primes[-1] + begin + test_number += 1 + next if $primes.any? { |prime| test_number%prime == 0 } + + $primes << test_number + return true if test_number == number + end while test_number < number + + return false +end + +p is_prime? 23 # true +p $primes # [2, 3, 5, 7, 11, 13, 17, 19, 23] diff --git a/uniques.rb b/uniques.rb new file mode 100644 index 0000000..a3e1523 --- /dev/null +++ b/uniques.rb @@ -0,0 +1,12 @@ +def uniques(array) + uniq_items = [] + until array.empty? + first_element = array.slice!(0) + array.delete_if { |el| el == first_element } + uniq_items << first_element + end + uniq_items +end + +p uniques([1,5,"frog", 2,1,3,"frog"]) +# [1, 5, "frog", 2, 3] \ No newline at end of file