Skip to content

Instantly share code, notes, and snippets.

@grvsachdeva
Last active March 11, 2018 11:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save grvsachdeva/b107b0bb0dc2ac7d6513cca310015c07 to your computer and use it in GitHub Desktop.
Save grvsachdeva/b107b0bb0dc2ac7d6513cca310015c07 to your computer and use it in GitHub Desktop.
This Ruby code takes number of elements , array elements and sum to be found from user and print if there is any triplet present in array equating to sum provided
#Code with O(n^3) complexity
def finding_elements arr,sum,arr_size
for i in 0...arr_size-2
for j in i+1...arr_size-1
for k in j+1...arr_size
if (arr[i] + arr[j] + arr[k] === sum)
print "Elements summing to #{sum} are : ",arr[i]," ",arr[j]," ",arr[k];
puts;
return;
end
end
end
end
puts " No triplet equate to provided sum ";
end
puts "Enter number of Elements in array : ";
num_of_elements = gets.chomp.to_i
arr = [];
puts "Input Elements each in new line";
i = 0
while i < num_of_elements
current_element = gets.chomp.to_i
arr.push(current_element)
i = i + 1
end
puts " Enter the Sum : ";
sum = gets.chomp.to_i
finding_elements(arr,sum,num_of_elements)
#Code with O(n^2) complexity
def bubble_sort(array)
arr_size = array.length
loop do
swapped = false
(arr_size-1).times do |i|
if array[i] > array[i+1]
array[i], array[i+1] = array[i+1], array[i]
swapped = true
end
end
break if not swapped
end
return array;
end
def finding_elements (arr,sum)
sorted_arr = bubble_sort(arr);
arr_size = arr.length;
for i in 0...arr_size-2
left = i+1;
right = arr_size-1;
while left < right
if arr[i] + arr[left] + arr[right] === sum
print "Elements summing to #{sum} are : ",arr[i]," ",arr[left]," ",arr[right];
puts;
return;
elsif arr[i] + arr[left] + arr[right] < sum
left = left + 1;
else
right = right - 1;
end
end
end
puts " No triplet equate to provided sum ";
end
puts "Enter number of Elements in array : ";
num_of_elements = gets.chomp.to_i;
arr = [];
puts "Input Elements each in new line";
i = 0 ;
while i < num_of_elements
current_element = gets.chomp.to_i
arr.push(current_element)
i = i + 1
end
puts " Enter the Sum : ";
sum = gets.chomp.to_i;
finding_elements(arr,sum)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment