From e8ead949b4688678b527115d3757ee14196e6824 Mon Sep 17 00:00:00 2001 From: Xiaopow Date: Mon, 4 May 2015 17:00:19 +0800 Subject: [PATCH 01/10] add reverse.rb --- reverse.rb | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 reverse.rb diff --git a/reverse.rb b/reverse.rb new file mode 100644 index 0000000..9bcb38a --- /dev/null +++ b/reverse.rb @@ -0,0 +1,7 @@ +#### Reverse String + +def reverse(string) + string.reverse +end + +puts reverse('xiao') \ No newline at end of file From a12bc1e3181f241292b881957cedbe6c8fc38bd5 Mon Sep 17 00:00:00 2001 From: Xiaopow Date: Mon, 4 May 2015 17:06:43 +0800 Subject: [PATCH 02/10] add palindrome.rb --- palindrome.rb | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 palindrome.rb diff --git a/palindrome.rb b/palindrome.rb new file mode 100644 index 0000000..6e2e5c2 --- /dev/null +++ b/palindrome.rb @@ -0,0 +1,9 @@ +#### Palindrome + +def isPalindrome(string) + reverse = string.reverse + string === reverse +end + +puts isPalindrome('lol') +puts isPalindrome('xiao') \ No newline at end of file From 5607dc6d1fc611d67c67aba2e958a707bfb47328 Mon Sep 17 00:00:00 2001 From: Xiaopow Date: Mon, 4 May 2015 17:46:07 +0800 Subject: [PATCH 03/10] add PrimNumber.rb --- PrimeNumber.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 PrimeNumber.rb diff --git a/PrimeNumber.rb b/PrimeNumber.rb new file mode 100644 index 0000000..6ceb555 --- /dev/null +++ b/PrimeNumber.rb @@ -0,0 +1,13 @@ +#### Prime Number + +def PrimeNumber?(number) + a = 2 + while a < ( (number/2) + 1 ) + return puts false if number % a === 0 + a += 1 + end + puts true +end + +PrimeNumber?(10) +PrimeNumber?(13) \ No newline at end of file From 8f051806bc5151692bea276cba03262b1e8b9d1b Mon Sep 17 00:00:00 2001 From: Xiaopow Date: Mon, 4 May 2015 18:22:43 +0800 Subject: [PATCH 04/10] add PrimeFactors.rb --- PrimeFactors.rb | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 PrimeFactors.rb diff --git a/PrimeFactors.rb b/PrimeFactors.rb new file mode 100644 index 0000000..e196640 --- /dev/null +++ b/PrimeFactors.rb @@ -0,0 +1,39 @@ +#### Prime Factors + +def PrimeNumber?(number) + a = 2 + while a < ( (number/2) + 1 ) + return false if number % a === 0 + a += 1 + end + return true +end + +def primeFactors(number) + numStore = number + puts "The prime factors of " + number.to_s + " are:" + if PrimeNumber?(number) + puts number + else + while numStore > 1 + if PrimeNumber?(numStore) + return puts numStore + end + a = 2 + while a <= ( (numStore/2) + 1 ) + if PrimeNumber?(a) + if numStore % a === 0 + numStore = numStore / a + puts a + a = 1 + end + end + a += 1 + end + end + end +end + +primeFactors(5) +primeFactors(20) +primeFactors(17893) \ No newline at end of file From 1002446ddbb1f3576451854af5fe306b9f735f67 Mon Sep 17 00:00:00 2001 From: Xiaopow Date: Tue, 5 May 2015 09:29:47 +0800 Subject: [PATCH 05/10] add missingNumber.rb --- missingNumber.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 missingNumber.rb diff --git a/missingNumber.rb b/missingNumber.rb new file mode 100644 index 0000000..07aa6f0 --- /dev/null +++ b/missingNumber.rb @@ -0,0 +1,12 @@ +#### Missing Number + +def missingNumber(array) + n = array.length + 1 + expectedSum = n * (n + 1) / 2 + sum = array.reduce(:+) + missNum = expectedSum - sum + p missNum +end + +missingNumber([1,2,3,4,5,6,7,8,10]) +missingNumber([1,2,3,4,5,6,7,8,9,11,12,13,14]) \ No newline at end of file From 247ab6d9573d271d3cec952970e9de87855a6924 Mon Sep 17 00:00:00 2001 From: Xiaopow Date: Tue, 5 May 2015 10:03:19 +0800 Subject: [PATCH 06/10] add caesarCipher.rb --- caesarCipher.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 caesarCipher.rb diff --git a/caesarCipher.rb b/caesarCipher.rb new file mode 100644 index 0000000..83e9c8a --- /dev/null +++ b/caesarCipher.rb @@ -0,0 +1,24 @@ +#### Caesar Cipher + + +def encrypt(message) + key = 2 + newMessage = [] + message.each_codepoint do |i| + newMessage.push((i+key).chr) + end + puts newMessage.join + return newMessage.join +end + +def decrypt(message) + key = 2 + newMessage = [] + message.each_codepoint do |i| + newMessage.push((i-key).chr) + end + puts newMessage.join +end + +decrypt(encrypt("Hello")) +decrypt(encrypt("Boomerang Harry")) \ No newline at end of file From ef3763732e5b166466c96c00d06864597bae4081 Mon Sep 17 00:00:00 2001 From: Xiaopow Date: Tue, 5 May 2015 10:12:22 +0800 Subject: [PATCH 07/10] add numberPersistence.rb --- numberPersistence.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 numberPersistence.rb diff --git a/numberPersistence.rb b/numberPersistence.rb new file mode 100644 index 0000000..cce3349 --- /dev/null +++ b/numberPersistence.rb @@ -0,0 +1,19 @@ +#### Number Persistence + +def additivePersistence(number) + memo = number + sum = 0 + addPersis = 0 + while memo > 10 + memo.to_s.each_char do |c| + sum += c.to_i + end + memo = sum + sum = 0 + addPersis += 1 + end + puts addPersis +end + +additivePersistence(2718) +additivePersistence(999999997) \ No newline at end of file From 6a8d9973fdf9a08b0eb841ad000c54e5f1c494d6 Mon Sep 17 00:00:00 2001 From: Xiaopow Date: Tue, 5 May 2015 10:49:32 +0800 Subject: [PATCH 08/10] add tripleDouble.rb --- tripleDouble.rb | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 tripleDouble.rb diff --git a/tripleDouble.rb b/tripleDouble.rb new file mode 100644 index 0000000..755e002 --- /dev/null +++ b/tripleDouble.rb @@ -0,0 +1,31 @@ +#### Triple double + +def tripleDouble(triple,double) + memo = "" + memo2 = "" + triples = [] + triple.to_s.each_char do |c| + if c === memo && c === memo2 + if !triples.include? c + triples.push(c) + end + end + if c === memo + memo2 = c + end + memo = c + end + if triples == [] + puts 0 + else + triples.each do |i| + if double.to_s.include? i+i + return puts 1 + end + end + return puts 0 + end + +end + +tripleDouble(299994333,12321312390933) \ No newline at end of file From 008aba9773aae7e8190f843167e125642b74f9f2 Mon Sep 17 00:00:00 2001 From: Xiaopow Date: Tue, 5 May 2015 10:59:35 +0800 Subject: [PATCH 09/10] modify PrimeNumber.rb to add initial checker for number < 2 and % 2 ==0 --- PrimeNumber.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PrimeNumber.rb b/PrimeNumber.rb index 6ceb555..f6201c4 100644 --- a/PrimeNumber.rb +++ b/PrimeNumber.rb @@ -1,7 +1,8 @@ #### Prime Number def PrimeNumber?(number) - a = 2 + return puts false if number<2 || number%2 == 0 + a = 3 while a < ( (number/2) + 1 ) return puts false if number % a === 0 a += 1 From 4258e991cefec2c36227a7db1852df08f6cb1e65 Mon Sep 17 00:00:00 2001 From: Xiaopow Date: Tue, 5 May 2015 11:22:06 +0800 Subject: [PATCH 10/10] add multiplicativePersistence.rb --- multiplicativePersistence.rb | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 multiplicativePersistence.rb diff --git a/multiplicativePersistence.rb b/multiplicativePersistence.rb new file mode 100644 index 0000000..b9ff85e --- /dev/null +++ b/multiplicativePersistence.rb @@ -0,0 +1,23 @@ +#### Multiplicative Persistence + +# In mathematics, the persistence of a number is the number of times one must apply a given operation to an integer before reaching a fixed point at which the operation no longer alters the number. + +# The multiplicative persistence of 39 is 3, because it takes three steps to reduce 39 to a single digit: 39 → 27 → 14 → 4. + +# Write a function to find the `multiplicative persistence` of a number. You must use recursion. + +def multiplicative_persistence(number) + product = 1 + mulPersis = 0 + while number > 10 + number.to_s.each_char do |c| + product *= c.to_i + end + number = product + product = 1 + mulPersis += 1 + end + puts mulPersis +end + +multiplicative_persistence(39) \ No newline at end of file