Skip to content

Commit af75f9c

Browse files
Aadit KamatMadhavBahl
authored andcommitted
Ruby & Python Implementation of Day 13 problem (#139)
* Add @aaditkamat as a contributor * Add Ruby code for Day 1: FizzBuzz problem * Add Ruby code for Day 2: String reverse problem * Update README.md for Day 2 * Modify Ruby code and README * Add condition for nil and wrong type edge cases * Add a seperate Ruby source code file for palindrome * Modify code for reverse.rb * Add seperate palindrome and reverse code sections in README * Update gitignore * Refactor palindrome.rb and rename heading in README * Add solution for Day 3: Hamming Problem * Add condition for strings of unequal lengths * Update README * Change project name and owner in.all-contributorsrc * Remove merge conflict lines * Add @shivank86 as a contributor * Add C++ files for different patterns * Add author and date comments at the top of C++ files * Update README.md * Add solution for Day 6 Problem in Python * Update README * Refactor code files * Modify string representation of output in python files * Add Ruby solutions for Day 6 problem * Update README for Ruby code * Add first version of solutions for Day 7 problem in C++, Java & Ruby * Modify solutions * Update Day 7 README * Remove merge conflicts from CONTRIBUTORS.md * Add back removed lines in CONTRIBUTORS.md * Add code sections contributed by @imkaka to day 6 README * Update README.md * Add C++ solution * Add Day 8 solution in C++ * Add Day 8 solution in Java * Add Day 8 solution in Ruby * Add Day 8 solution in Python * Add credits at the top of the code * Update README * Update C++ implementation * Update Python implementation * Add solution for Day 10: String Permutation Problem in Python Signed-off-by: Aadit Rahul Kamat <aadit.k12@gmail.com> * Update Day 10 README Signed-off-by: Aadit Rahul Kamat <aadit.k12@gmail.com> * Change heading in README and remove empty directory in day 9 Signed-off-by: Aadit Rahul Kamat <aadit.k12@gmail.com> * Update README.md * Add Ruby solutions for Day 13 * Update README * Add credits to the code * Add Python solution for Day 13 * Update Day 13 README * Update fibonacci.py * Modify Fibonacci python code section in day 13 README
1 parent 0ca7380 commit af75f9c

File tree

6 files changed

+602
-27
lines changed

6 files changed

+602
-27
lines changed

day13/Python/factorial_aadit.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"""
2+
@author: aaditkamat
3+
@date: 07/01/2019
4+
"""
5+
6+
def factorial_recursive(num, result):
7+
if num < 0:
8+
return "Factorial of #{num} is undefined"
9+
if num == 0:
10+
return result
11+
return factorial_recursive(num - 1, result * num)
12+
13+
def factorial_iterative(num):
14+
if num < 0:
15+
return "Factorial of #{num} is undefined"
16+
result = 1
17+
i = 1
18+
while i <= num:
19+
result *= i
20+
i += 1
21+
return result
22+
23+
def main():
24+
print("Enter an integer: ")
25+
num = int(input())
26+
print(f'Factorial of {num} is: {factorial_recursive(num, 1)}')
27+
print(f'Factorial of {num} is: {factorial_iterative(num)}')
28+
29+
main()

day13/Python/fibonacci.py

Lines changed: 66 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,75 @@
11
"""
2-
@author : vishalshirke7
3-
@date : 07/01/2019
2+
@author: aaditkamat
3+
@date: 07/01/2019
44
"""
55

6+
def fibonacci_recursive_value(num, array, ctr):
7+
if num < 1:
8+
return f'Incorrect num #{num} for fibonacci sequence'
9+
if num == 1 or num == 2:
10+
array[num - 1] = 1
11+
return array[num - 1]
12+
if array[num - 2] != 0 and array[num - 1] != 0:
13+
return array[num - 2] + array[num - 3]
14+
elif array[num - 2] != 0:
15+
array[num - 3] = fibonacci_recursive_value(num - 2, array, ctr + 1)
16+
elif array[num - 3] != 0:
17+
array[num - 2] = fibonacci_recursive_value(num - 1, array, ctr + 1)
18+
else:
19+
array[num - 2] = fibonacci_recursive_value(num - 1, array, ctr + 1)
20+
array[num - 3] = fibonacci_recursive_value(num - 2, array, ctr + 1)
21+
return array[num - 2] + array[num - 3]
622

7-
# Fibonacci Series using Dynamic Programming
8-
def fibonacci(n):
9-
if n <= 1:
10-
return n
23+
def fibonacci_recursive_sequence(num, arr):
24+
if num < 1:
25+
return fibonacci_recursive_value(num, arr, 0)
26+
start = 1
27+
string = 'The sequence is: '
28+
while start <= num:
29+
if start < num:
30+
string += f'{fibonacci_recursive_value(start, arr[:], 0)}, '
1131
else:
12-
if fib_series[n - 1] == 0:
13-
fib_series[n - 1] = fibonacci(n - 1)
32+
string += f'{fibonacci_recursive_value(start, arr[:], 0)}'
33+
start += 1
34+
print(string)
1435

15-
if fib_series[n - 2] == 0:
16-
fib_series[n - 2] = fibonacci(n - 2)
17-
18-
fib_series[n] = fib_series[n - 2] + fib_series[n - 1]
19-
return fib_series[n]
36+
def fibonacci_iterative_sequence(num):
37+
if num < 1:
38+
return f'Incorrect num {num} for fibonacci sequence'
39+
start = 1
40+
string = 'The sequence is: '
41+
while start <= num:
42+
if start < num:
43+
string += f'{fibonacci_iterative_value(start)}, '
44+
else:
45+
string += f'{fibonacci_iterative_value(start)}'
46+
start += 1
47+
print(string)
2048

49+
def fibonacci_iterative_value(num):
50+
if num < 1:
51+
return "Incorrect num #{num} for fibonacci sequence"
52+
if num == 1 or num == 2:
53+
return 1
54+
first = 1
55+
second = 1
56+
ctr = 2
57+
while ctr < num:
58+
first += second
59+
ctr += 1
60+
if ctr == num:
61+
return first
62+
second += first
63+
ctr += 1
64+
return second
2165

22-
n = int(input())
23-
fib_series = [0, 1]
24-
while len(fib_series) < n + 1:
25-
fib_series.append(0)
26-
print(fibonacci(n))
27-
if n == 0:
28-
print(0)
29-
else:
30-
print(", ".join(map(str, fib_series)))
66+
def main():
67+
print("Enter an integer: ")
68+
num = int(input())
69+
a = [0] * num
70+
print(f'The number at position {num} of fibonacci sequence: {fibonacci_recursive_value(num, a, 0)}')
71+
fibonacci_recursive_sequence(num, a)
72+
print(f'The number at position {num} of fibonacci sequence: {fibonacci_iterative_value(num)}')
73+
fibonacci_iterative_sequence(num)
3174

75+
main()

day13/Python/fibonacci_aadit.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
"""
2+
@author: aaditkamat
3+
@date: 07/01/2019
4+
"""
5+
6+
def fibonacci_recursive_value(num, array, ctr):
7+
if num < 1:
8+
return f'Incorrect num #{num} for fibonacci sequence'
9+
if num == 1 or num == 2:
10+
array[num - 1] = 1
11+
return array[num - 1]
12+
if array[num - 2] != 0 and array[num - 1] != 0:
13+
return array[num - 2] + array[num - 3]
14+
elif array[num - 2] != 0:
15+
array[num - 3] = fibonacci_recursive_value(num - 2, array, ctr + 1)
16+
elif array[num - 3] != 0:
17+
array[num - 2] = fibonacci_recursive_value(num - 1, array, ctr + 1)
18+
else:
19+
array[num - 2] = fibonacci_recursive_value(num - 1, array, ctr + 1)
20+
array[num - 3] = fibonacci_recursive_value(num - 2, array, ctr + 1)
21+
return array[num - 2] + array[num - 3]
22+
23+
def fibonacci_recursive_sequence(num, arr):
24+
if num < 1:
25+
return fibonacci_recursive_value(num, arr, 0)
26+
start = 1
27+
string = 'The sequence is: '
28+
while start <= num:
29+
if start < num:
30+
string += f'{fibonacci_recursive_value(start, arr[:], 0)}, '
31+
else:
32+
string += f'{fibonacci_recursive_value(start, arr[:], 0)}'
33+
start += 1
34+
print(string)
35+
36+
def fibonacci_iterative_sequence(num):
37+
if num < 1:
38+
return f'Incorrect num {num} for fibonacci sequence'
39+
start = 1
40+
string = 'The sequence is: '
41+
while start <= num:
42+
if start < num:
43+
string += f'{fibonacci_iterative_value(start)}, '
44+
else:
45+
string += f'{fibonacci_iterative_value(start)}'
46+
start += 1
47+
print(string)
48+
49+
def fibonacci_iterative_value(num):
50+
if num < 1:
51+
return "Incorrect num #{num} for fibonacci sequence"
52+
if num == 1 or num == 2:
53+
return 1
54+
first = 1
55+
second = 1
56+
ctr = 2
57+
while ctr < num:
58+
first += second
59+
ctr += 1
60+
if ctr == num:
61+
return first
62+
second += first
63+
ctr += 1
64+
return second
65+
66+
def main():
67+
print("Enter an integer: ")
68+
num = int(input())
69+
a = [0] * num
70+
print(f'The number at position {num} of fibonacci sequence: {fibonacci_recursive_value(num, a, 0)}')
71+
fibonacci_recursive_sequence(num, a)
72+
print(f'The number at position {num} of fibonacci sequence: {fibonacci_iterative_value(num)}')
73+
fibonacci_iterative_sequence(num)
74+
75+
main()

0 commit comments

Comments
 (0)