Skip to main content

Find the minimum distance between two numbers

Here given code implementation process.

// C Program 
// Find the minimum distance between two numbers
#include <stdio.h>

//Display elements of given array
void printArray(int arr[], int size)
{
	for (int i = 0; i < size; ++i)
	{
		printf("  %d", arr[i]);
	}
	printf("\n");
}
// Returns the calculated minimum distance
int distance(int e1, int e2, int diff)
{
	if (e1 > e2)
	{
		if (diff == -1 || e1 - e2 < diff)
		{
			return e1 - e2;
		}
	}
	else
	{
		if (diff == -1 || e2 - e1 < diff)
		{
			return e2 - e1;
		}
	}
	return diff;
}
// Finds the minimum distance of given elements (x and y)
// When element is exists in array
void minimumDistance(int arr[], int size, int x, int y)
{
	if (size <= 1)
	{
		// Not more than 2 elements
		return;
	}
	int e1 = -1;
	int e2 = -1;
	int diff = -1;
	for (int i = 0; i < size; ++i)
	{
		if (arr[i] == x)
		{
			// When get a new x element 
			if (x == y)
			{
				// When x and y is similar
				if (e1 == -1)
				{
					// Get first element
					e1 = i;
				}
				else if (e2 == -1)
				{
					// Get second element
					e2 = i;
					// Get distance
					diff = distance(e1, e2, diff);
				}
				else
				{
					e1 = e2;
					e2 = i;
					// Get distance
					diff = distance(e1, e2, diff);
				}
			}
			else
			{
				e1 = i;
				if (e2 != -1)
				{
					// Get distance
					diff = distance(e1, e2, diff);
				}
			}
		}
		else if (arr[i] == y)
		{
			// When get a new y element 
			e2 = i;
			if (e1 != -1)
			{
				// Get distance
				diff = distance(e1, e2, diff);
			}
		}
	}
	if (e1 == -1 || e2 == -1)
	{
		printf("\n Pair (%d,%d) are not exists", x, y);
	}
	else
	{
		printf("  Minimum distance of pair (%d,%d) is : %d \n", x, y, diff);
	}
}
int main(int argc, char const *argv[])
{
	// Define array of integer elements
	int arr[] = {
		4 , 2 , 8 , 2 , 3 , 7 , 1 , 4 , 6 , 1 , 4 , 6 , 8 , 2 , 3
	};
	// Get the size
	int size = sizeof(arr) / sizeof(arr[0]);
	printf("  Array Element \n");
	printArray(arr, size);
	// x = 2, y = 6
	minimumDistance(arr, size, 2, 6);
	// x = 4, y = 4
	minimumDistance(arr, size, 4, 4);
	return 0;
}

Output

  Array Element
  4  2  8  2  3  7  1  4  6  1  4  6  8  2  3
  Minimum distance of pair (2,6) is : 2
  Minimum distance of pair (4,4) is : 3
/*
    Java Program
    Find the minimum distance between two numbers
*/
public class FindDistance
{
	//Display elements of given array
	public void printArray(int[] arr, int size)
	{
		for (int i = 0; i < size; ++i)
		{
			System.out.print("  " + arr[i]);
		}
		System.out.print("\n");
	}
	// Returns the calculated minimum distance
	public int distance(int e1, int e2, int diff)
	{
		if (e1 > e2)
		{
			if (diff == -1 || e1 - e2 < diff)
			{
				return e1 - e2;
			}
		}
		else
		{
			if (diff == -1 || e2 - e1 < diff)
			{
				return e2 - e1;
			}
		}
		return diff;
	}
	// Finds the minimum distance of given elements (x and y)
	// When element is exists in array
	public void minimumDistance(int[] arr, int size, int x, int y)
	{
		if (size <= 1)
		{
			// Not more than 2 elements
			return;
		}
		int e1 = -1;
		int e2 = -1;
		int diff = -1;
		for (int i = 0; i < size; ++i)
		{
			if (arr[i] == x)
			{
				// When get a new x element 
				if (x == y)
				{
					// When x and y is similar
					if (e1 == -1)
					{
						// Get first element
						e1 = i;
					}
					else if (e2 == -1)
					{
						// Get second element
						e2 = i;
						// Get distance
						diff = distance(e1, e2, diff);
					}
					else
					{
						e1 = e2;
						e2 = i;
						// Get distance
						diff = distance(e1, e2, diff);
					}
				}
				else
				{
					e1 = i;
					if (e2 != -1)
					{
						// Get distance
						diff = distance(e1, e2, diff);
					}
				}
			}
			else if (arr[i] == y)
			{
				// When get a new y element 
				e2 = i;
				if (e1 != -1)
				{
					// Get distance
					diff = distance(e1, e2, diff);
				}
			}
		}
		if (e1 == -1 || e2 == -1)
		{
			System.out.print("\n Pair (" + x + "," + y + ") are not exists");
		}
		else
		{
			System.out.print(" Minimum distance of pair (" + x + "," + y + ") is : " + diff + " \n");
		}
	}
	public static void main(String args[])
	{
		FindDistance task = new FindDistance();
		// Define array of integer elements
		int[] arr = {
			4 , 2 , 8 , 2 , 3 , 7 , 1 , 4 , 6 , 1 , 4 , 6 , 8 , 2 , 3
		};
		// Get the size
		int size = arr.length;
		System.out.print(" Array Element \n");
		task.printArray(arr, size);
		// x = 2, y = 6
		task.minimumDistance(arr, size, 2, 6);
		// x = 4, y = 4
		task.minimumDistance(arr, size, 4, 4);
	}
}

Output

 Array Element
  4  2  8  2  3  7  1  4  6  1  4  6  8  2  3
 Minimum distance of pair (2,6) is : 2
 Minimum distance of pair (4,4) is : 3
// Include header file
#include <iostream>

using namespace std;
/*
    C++ Program
    Find the minimum distance between two numbers
*/
class FindDistance
{
	public:
		//Display elements of given array
		void printArray(int arr[], int size)
		{
			for (int i = 0; i < size; ++i)
			{
				cout << "  " << arr[i];
			}
			cout << "\n";
		}
	// Returns the calculated minimum distance
	int distance(int e1, int e2, int diff)
	{
		if (e1 > e2)
		{
			if (diff == -1 || e1 - e2 < diff)
			{
				return e1 - e2;
			}
		}
		else
		{
			if (diff == -1 || e2 - e1 < diff)
			{
				return e2 - e1;
			}
		}
		return diff;
	}
	// Finds the minimum distance of given elements (x and y)
	// When element is exists in array
	void minimumDistance(int arr[], int size, int x, int y)
	{
		if (size <= 1)
		{
			// Not more than 2 elements
			return;
		}
		int e1 = -1;
		int e2 = -1;
		int diff = -1;
		for (int i = 0; i < size; ++i)
		{
			if (arr[i] == x)
			{
				// When get a new x element
				if (x == y)
				{
					// When x and y is similar
					if (e1 == -1)
					{
						// Get first element
						e1 = i;
					}
					else if (e2 == -1)
					{
						// Get second element
						e2 = i;
						// Get distance
						diff = this->distance(e1, e2, diff);
					}
					else
					{
						e1 = e2;
						e2 = i;
						// Get distance
						diff = this->distance(e1, e2, diff);
					}
				}
				else
				{
					e1 = i;
					if (e2 != -1)
					{
						// Get distance
						diff = this->distance(e1, e2, diff);
					}
				}
			}
			else if (arr[i] == y)
			{
				// When get a new y element
				e2 = i;
				if (e1 != -1)
				{
					// Get distance
					diff = this->distance(e1, e2, diff);
				}
			}
		}
		if (e1 == -1 || e2 == -1)
		{
			cout << "\n Pair (" << x << "," << y << ") are not exists";
		}
		else
		{
			cout << " Minimum distance of pair (" << x << "," << y << ") is : " << diff << " \n";
		}
	}
};
int main()
{
	FindDistance task = FindDistance();
	// Define array of integer elements
	int arr[] = {
		4 , 2 , 8 , 2 , 3 , 7 , 1 , 4 , 6 , 1 , 4 , 6 , 8 , 2 , 3
	};
	// Get the size
	int size = sizeof(arr) / sizeof(arr[0]);
	cout << " Array Element \n";
	task.printArray(arr, size);
	// x = 2, y = 6
	task.minimumDistance(arr, size, 2, 6);
	// x = 4, y = 4
	task.minimumDistance(arr, size, 4, 4);
	return 0;
}

Output

 Array Element
  4  2  8  2  3  7  1  4  6  1  4  6  8  2  3
 Minimum distance of pair (2,6) is : 2
 Minimum distance of pair (4,4) is : 3
// Include namespace system
using System;
/*
    C# Program
    Find the minimum distance between two numbers
*/
public class FindDistance
{
	//Display elements of given array
	public void printArray(int[] arr, int size)
	{
		for (int i = 0; i < size; ++i)
		{
			Console.Write("  " + arr[i]);
		}
		Console.Write("\n");
	}
	// Returns the calculated minimum distance
	public int distance(int e1, int e2, int diff)
	{
		if (e1 > e2)
		{
			if (diff == -1 || e1 - e2 < diff)
			{
				return e1 - e2;
			}
		}
		else
		{
			if (diff == -1 || e2 - e1 < diff)
			{
				return e2 - e1;
			}
		}
		return diff;
	}
	// Finds the minimum distance of given elements (x and y)
	// When element is exists in array
	public void minimumDistance(int[] arr, int size, int x, int y)
	{
		if (size <= 1)
		{
			// Not more than 2 elements
			return;
		}
		int e1 = -1;
		int e2 = -1;
		int diff = -1;
		for (int i = 0; i < size; ++i)
		{
			if (arr[i] == x)
			{
				// When get a new x element
				if (x == y)
				{
					// When x and y is similar
					if (e1 == -1)
					{
						// Get first element
						e1 = i;
					}
					else if (e2 == -1)
					{
						// Get second element
						e2 = i;
						// Get distance
						diff = distance(e1, e2, diff);
					}
					else
					{
						e1 = e2;
						e2 = i;
						// Get distance
						diff = distance(e1, e2, diff);
					}
				}
				else
				{
					e1 = i;
					if (e2 != -1)
					{
						// Get distance
						diff = distance(e1, e2, diff);
					}
				}
			}
			else if (arr[i] == y)
			{
				// When get a new y element
				e2 = i;
				if (e1 != -1)
				{
					// Get distance
					diff = distance(e1, e2, diff);
				}
			}
		}
		if (e1 == -1 || e2 == -1)
		{
			Console.Write("\n Pair (" + x + "," + y + ") are not exists");
		}
		else
		{
			Console.Write(" Minimum distance of pair (" + x + "," + y + ") is : " + diff + " \n");
		}
	}
	public static void Main(String []args)
	{
		FindDistance task = new FindDistance();
		// Define array of integer elements
		int[] arr = {
			4 , 2 , 8 , 2 , 3 , 7 , 1 , 4 , 6 , 1 , 4 , 6 , 8 , 2 , 3
		};
		// Get the size
		int size = arr.Length;
		Console.Write(" Array Element \n");
		task.printArray(arr, size);
		// x = 2, y = 6
		task.minimumDistance(arr, size, 2, 6);
		// x = 4, y = 4
		task.minimumDistance(arr, size, 4, 4);
	}
}

Output

 Array Element
  4  2  8  2  3  7  1  4  6  1  4  6  8  2  3
 Minimum distance of pair (2,6) is : 2
 Minimum distance of pair (4,4) is : 3
<?php
/*
    Php Program
    Find the minimum distance between two numbers
*/
class FindDistance
{
	//Display elements of given array
	public	function printArray( & $arr, $size)
	{
		for ($i = 0; $i < $size; ++$i)
		{
			echo "  ". $arr[$i];
		}
		echo "\n";
	}
	// Returns the calculated minimum distance
	public	function distance($e1, $e2, $diff)
	{
		if ($e1 > $e2)
		{
			if ($diff == -1 || $e1 - $e2 < $diff)
			{
				return $e1 - $e2;
			}
		}
		else
		{
			if ($diff == -1 || $e2 - $e1 < $diff)
			{
				return $e2 - $e1;
			}
		}
		return $diff;
	}
	// Finds the minimum distance of given elements (x and y)
	// When element is exists in array
	public	function minimumDistance( & $arr, $size, $x, $y)
	{
		if ($size <= 1)
		{
			// Not more than 2 elements
			return;
		}
		$e1 = -1;
		$e2 = -1;
		$diff = -1;
		for ($i = 0; $i < $size; ++$i)
		{
			if ($arr[$i] == $x)
			{
				// When get a new x element
				if ($x == $y)
				{
					// When x and y is similar
					if ($e1 == -1)
					{
						// Get first element
						$e1 = $i;
					}
					else if ($e2 == -1)
					{
						// Get second element
						$e2 = $i;
						// Get distance
						$diff = $this->distance($e1, $e2, $diff);
					}
					else
					{
						$e1 = $e2;
						$e2 = $i;
						// Get distance
						$diff = $this->distance($e1, $e2, $diff);
					}
				}
				else
				{
					$e1 = $i;
					if ($e2 != -1)
					{
						// Get distance
						$diff = $this->distance($e1, $e2, $diff);
					}
				}
			}
			else if ($arr[$i] == $y)
			{
				// When get a new y element
				$e2 = $i;
				if ($e1 != -1)
				{
					// Get distance
					$diff = $this->distance($e1, $e2, $diff);
				}
			}
		}
		if ($e1 == -1 || $e2 == -1)
		{
			echo "\n Pair (". $x .",". $y .") are not exists";
		}
		else
		{
			echo " Minimum distance of pair (". $x .",". $y .") is : ". $diff ." \n";
		}
	}
}

function main()
{
	$task = new FindDistance();
	// Define array of integer elements
	$arr = array(4, 2, 8, 2, 3, 7, 1, 4, 6, 1, 4, 6, 8, 2, 3);
	// Get the size
	$size = count($arr);
	echo " Array Element \n";
	$task->printArray($arr, $size);
	// x = 2, y = 6
	$task->minimumDistance($arr, $size, 2, 6);
	// x = 4, y = 4
	$task->minimumDistance($arr, $size, 4, 4);
}
main();

Output

 Array Element
  4  2  8  2  3  7  1  4  6  1  4  6  8  2  3
 Minimum distance of pair (2,6) is : 2
 Minimum distance of pair (4,4) is : 3
/*
    Node Js Program
    Find the minimum distance between two numbers
*/
class FindDistance
{
	// Display elements of given array
	printArray(arr, size)
	{
		for (var i = 0; i < size; ++i)
		{
			process.stdout.write("  " + arr[i]);
		}
		process.stdout.write("\n");
	}
	// Returns the calculated minimum distance
	distance(e1, e2, diff)
	{
		if (e1 > e2)
		{
			if (diff == -1 || e1 - e2 < diff)
			{
				return e1 - e2;
			}
		}
		else
		{
			if (diff == -1 || e2 - e1 < diff)
			{
				return e2 - e1;
			}
		}
		return diff;
	}
	// Finds the minimum distance of given elements (x and y)
	// When element is exists in array
	minimumDistance(arr, size, x, y)
	{
		if (size <= 1)
		{
			// Not more than 2 elements
			return;
		}
		var e1 = -1;
		var e2 = -1;
		var diff = -1;
		for (var i = 0; i < size; ++i)
		{
			if (arr[i] == x)
			{
				// When get a new x element
				if (x == y)
				{
					// When x and y is similar
					if (e1 == -1)
					{
						// Get first element
						e1 = i;
					}
					else if (e2 == -1)
					{
						// Get second element
						e2 = i;
						// Get distance
						diff = this.distance(e1, e2, diff);
					}
					else
					{
						e1 = e2;
						e2 = i;
						// Get distance
						diff = this.distance(e1, e2, diff);
					}
				}
				else
				{
					e1 = i;
					if (e2 != -1)
					{
						// Get distance
						diff = this.distance(e1, e2, diff);
					}
				}
			}
			else if (arr[i] == y)
			{
				// When get a new y element
				e2 = i;
				if (e1 != -1)
				{
					// Get distance
					diff = this.distance(e1, e2, diff);
				}
			}
		}
		if (e1 == -1 || e2 == -1)
		{
			process.stdout.write("\n Pair (" + x + "," + y + ") are not exists");
		}
		else
		{
			process.stdout.write(" Minimum distance of pair (" + x + "," + y + ") is : " + diff + " \n");
		}
	}
}

function main()
{
	var task = new FindDistance();
	// Define array of integer elements
	var arr = [4, 2, 8, 2, 3, 7, 1, 4, 6, 1, 4, 6, 8, 2, 3];
	// Get the size
	var size = arr.length;
	process.stdout.write(" Array Element \n");
	task.printArray(arr, size);
	// x = 2, y = 6
	task.minimumDistance(arr, size, 2, 6);
	// x = 4, y = 4
	task.minimumDistance(arr, size, 4, 4);
}
main();

Output

 Array Element
  4  2  8  2  3  7  1  4  6  1  4  6  8  2  3
 Minimum distance of pair (2,6) is : 2
 Minimum distance of pair (4,4) is : 3
#  Python 3 Program
#  Find the minimum distance between two numbers

class FindDistance :
	# Display elements of given array
	def printArray(self, arr, size) :
		i = 0
		while (i < size) :
			print("  ", arr[i], end = "")
			i += 1
		
		print(end = "\n")
	
	#  Returns the calculated minimum distance
	def distance(self, e1, e2, diff) :
		if (e1 > e2) :
			if (diff == -1 or e1 - e2 < diff) :
				return e1 - e2
			
		else :
			if (diff == -1 or e2 - e1 < diff) :
				return e2 - e1
			
		
		return diff
	
	#  Finds the minimum distance of given elements (x and y)
	#  When element is exists in array
	def minimumDistance(self, arr, size, x, y) :
		if (size <= 1) :
			#  Not more than 2 elements
			return
		
		e1 = -1
		e2 = -1
		diff = -1
		i = 0
		while (i < size) :
			if (arr[i] == x) :
				#  When get a new x element
				if (x == y) :
					#  When x and y is similar
					if (e1 == -1) :
						#  Get first element
						e1 = i
					
					elif(e2 == -1) :
						#  Get second element
						e2 = i
						#  Get distance
						diff = self.distance(e1, e2, diff)
					else :
						e1 = e2
						e2 = i
						#  Get distance
						diff = self.distance(e1, e2, diff)
					
				else :
					e1 = i
					if (e2 != -1) :
						#  Get distance
						diff = self.distance(e1, e2, diff)
					
				
			
			elif(arr[i] == y) :
				#  When get a new y element
				e2 = i
				if (e1 != -1) :
					#  Get distance
					diff = self.distance(e1, e2, diff)
				
			
			i += 1
		
		if (e1 == -1 or e2 == -1) :
			print("\n Pair (", x ,",", y ,") are not exists", end = "")
		else :
			print(" Minimum distance of pair (", x ,",", y ,") is : ", diff ," ")
		
	

def main() :
	task = FindDistance()
	#  Define array of integer elements
	arr = [4, 2, 8, 2, 3, 7, 1, 4, 6, 1, 4, 6, 8, 2, 3]
	#  Get the size
	size = len(arr)
	print(" Array Element ")
	task.printArray(arr, size)
	#  x = 2, y = 6
	task.minimumDistance(arr, size, 2, 6)
	#  x = 4, y = 4
	task.minimumDistance(arr, size, 4, 4)

if __name__ == "__main__": main()

Output

 Array Element
   4   2   8   2   3   7   1   4   6   1   4   6   8   2   3
 Minimum distance of pair ( 2 , 6 ) is :  2
 Minimum distance of pair ( 4 , 4 ) is :  3
#  Ruby Program
#  Find the minimum distance between two numbers

class FindDistance 
	# Display elements of given array
	def printArray(arr, size) 
		i = 0
		while (i < size) 
			print("  ", arr[i])
			i += 1
		end

		print("\n")
	end

	#  Returns the calculated minimum distance
	def distance(e1, e2, diff) 
		if (e1 > e2) 
			if (diff == -1 || e1 - e2 < diff) 
				return e1 - e2
			end

		else 
			if (diff == -1 || e2 - e1 < diff) 
				return e2 - e1
			end

		end

		return diff
	end

	#  Finds the minimum distance of given elements (x and y)
	#  When element is exists in array
	def minimumDistance(arr, size, x, y) 
		if (size <= 1) 
			#  Not more than 2 elements
			return
		end

		e1 = -1
		e2 = -1
		diff = -1
		i = 0
		while (i < size) 
			if (arr[i] == x) 
				#  When get a new x element
				if (x == y) 
					#  When x and y is similar
					if (e1 == -1) 
						#  Get first element
						e1 = i
					elsif(e2 == -1) 
						#  Get second element
						e2 = i
						#  Get distance
						diff = self.distance(e1, e2, diff)
					else 
						e1 = e2
						e2 = i
						#  Get distance
						diff = self.distance(e1, e2, diff)
					end

				else 
					e1 = i
					if (e2 != -1) 
						#  Get distance
						diff = self.distance(e1, e2, diff)
					end

				end

			elsif(arr[i] == y) 
				#  When get a new y element
				e2 = i
				if (e1 != -1) 
					#  Get distance
					diff = self.distance(e1, e2, diff)
				end

			end

			i += 1
		end

		if (e1 == -1 || e2 == -1) 
			print("\n Pair (", x ,",", y ,") are not exists")
		else 
			print(" Minimum distance of pair (", x ,",", y ,") is : ", diff ," \n")
		end

	end

end

def main() 
	task = FindDistance.new()
	#  Define array of integer elements
	arr = [4, 2, 8, 2, 3, 7, 1, 4, 6, 1, 4, 6, 8, 2, 3]
	#  Get the size
	size = arr.length
	print(" Array Element \n")
	task.printArray(arr, size)
	#  x = 2, y = 6
	task.minimumDistance(arr, size, 2, 6)
	#  x = 4, y = 4
	task.minimumDistance(arr, size, 4, 4)
end

main()

Output

 Array Element 
  4  2  8  2  3  7  1  4  6  1  4  6  8  2  3
 Minimum distance of pair (2,6) is : 2 
 Minimum distance of pair (4,4) is : 3 
/*
    Scala Program
    Find the minimum distance between two numbers
*/
class FindDistance
{
	//Display elements of given array
	def printArray(arr: Array[Int], size: Int): Unit = {
		var i: Int = 0;
		while (i < size)
		{
			print("  " + arr(i));
			i += 1;
		}
		print("\n");
	}
	// Returns the calculated minimum distance
	def distance(e1: Int, e2: Int, diff: Int): Int = {
		if (e1 > e2)
		{
			if (diff == -1 || e1 - e2 < diff)
			{
				return e1 - e2;
			}
		}
		else
		{
			if (diff == -1 || e2 - e1 < diff)
			{
				return e2 - e1;
			}
		}
		return diff;
	}
	// Finds the minimum distance of given elements (x and y)
	// When element is exists in array
	def minimumDistance(arr: Array[Int], size: Int, x: Int, y: Int): Unit = {
		if (size <= 1)
		{
			// Not more than 2 elements
			return;
		}
		var e1: Int = -1;
		var e2: Int = -1;
		var diff: Int = -1;
		var i: Int = 0;
		while (i < size)
		{
			if (arr(i) == x)
			{
				// When get a new x element
				if (x == y)
				{
					// When x and y is similar
					if (e1 == -1)
					{
						// Get first element
						e1 = i;
					}
					else if (e2 == -1)
					{
						// Get second element
						e2 = i;
						// Get distance
						diff = this.distance(e1, e2, diff);
					}
					else
					{
						e1 = e2;
						e2 = i;
						// Get distance
						diff = this.distance(e1, e2, diff);
					}
				}
				else
				{
					e1 = i;
					if (e2 != -1)
					{
						// Get distance
						diff = this.distance(e1, e2, diff);
					}
				}
			}
			else if (arr(i) == y)
			{
				// When get a new y element
				e2 = i;
				if (e1 != -1)
				{
					// Get distance
					diff = this.distance(e1, e2, diff);
				}
			}
			i += 1;
		}
		if (e1 == -1 || e2 == -1)
		{
			print("\n Pair (" + x + "," + y + ") are not exists");
		}
		else
		{
			print(" Minimum distance of pair (" + x + "," + y + ") is : " + diff + " \n");
		}
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var task: FindDistance = new FindDistance();
		// Define array of integer elements
		var arr: Array[Int] = Array(4, 2, 8, 2, 3, 7, 1, 4, 6, 1, 4, 6, 8, 2, 3);
		// Get the size
		var size: Int = arr.length;
		print(" Array Element \n");
		task.printArray(arr, size);
		// x = 2, y = 6
		task.minimumDistance(arr, size, 2, 6);
		// x = 4, y = 4
		task.minimumDistance(arr, size, 4, 4);
	}
}

Output

 Array Element
  4  2  8  2  3  7  1  4  6  1  4  6  8  2  3
 Minimum distance of pair (2,6) is : 2
 Minimum distance of pair (4,4) is : 3
/*
    Swift 4 Program
    Find the minimum distance between two numbers
*/
class FindDistance
{
	//Display elements of given array
	func printArray(_ arr: [Int], _ size: Int)
	{
		var i: Int = 0;
		while (i < size)
		{
			print("  ", arr[i], terminator: "");
			i += 1;
		}
		print(terminator: "\n");
	}
	// Returns the calculated minimum distance
	func distance(_ e1: Int, _ e2: Int, _ diff: Int)->Int
	{
		if (e1 > e2)
		{
			if (diff == -1 || e1 - e2 < diff)
			{
				return e1 - e2;
			}
		}
		else
		{
			if (diff == -1 || e2 - e1 < diff)
			{
				return e2 - e1;
			}
		}
		return diff;
	}
	// Finds the minimum distance of given elements (x and y)
	// When element is exists in array
	func minimumDistance(_ arr: [Int], _ size: Int, _ x: Int, _ y: Int)
	{
		if (size <= 1)
		{
			// Not more than 2 elements
			return;
		}
		var e1: Int = -1;
		var e2: Int = -1;
		var diff: Int = -1;
		var i: Int = 0;
		while (i < size)
		{
			if (arr[i] == x)
			{
				// When get a new x element
				if (x == y)
				{
					// When x and y is similar
					if (e1 == -1)
					{
						// Get first element
						e1 = i;
					}
					else if (e2 == -1)
					{
						// Get second element
						e2 = i;
						// Get distance
						diff = self.distance(e1, e2, diff);
					}
					else
					{
						e1 = e2;
						e2 = i;
						// Get distance
						diff = self.distance(e1, e2, diff);
					}
				}
				else
				{
					e1 = i;
					if (e2 != -1)
					{
						// Get distance
						diff = self.distance(e1, e2, diff);
					}
				}
			}
			else if (arr[i] == y)
			{
				// When get a new y element
				e2 = i;
				if (e1 != -1)
				{
					// Get distance
					diff = self.distance(e1, e2, diff);
				}
			}
			i += 1;
		}
		if (e1 == -1 || e2 == -1)
		{
			print("\n Pair (", x ,",", y ,") are not exists", terminator: "");
		}
		else
		{
			print(" Minimum distance of pair (", x ,",", y ,") is : ", diff ," ");
		}
	}
}
func main()
{
	let task: FindDistance = FindDistance();
	// Define array of integer elements
	let arr: [Int] = [4, 2, 8, 2, 3, 7, 1, 4, 6, 1, 4, 6, 8, 2, 3];
	// Get the size
	let size: Int = arr.count;
	print(" Array Element ");
	task.printArray(arr, size);
	// x = 2, y = 6
	task.minimumDistance(arr, size, 2, 6);
	// x = 4, y = 4
	task.minimumDistance(arr, size, 4, 4);
}
main();

Output

 Array Element
   4   2   8   2   3   7   1   4   6   1   4   6   8   2   3
 Minimum distance of pair ( 2 , 6 ) is :  2
 Minimum distance of pair ( 4 , 4 ) is :  3
/*
    Kotlin Program
    Find the minimum distance between two numbers
*/
class FindDistance
{
	//Display elements of given array
	fun printArray(arr: Array<Int>, size: Int): Unit
	{
		var i: Int = 0;
		while (i<size)
		{
			print("  " + arr[i]);
			i += 1;
		}
		print("\n");
	}
	// Returns the calculated minimum distance
	fun distance(e1: Int, e2: Int, diff: Int): Int
	{
		if (e1>e2)
		{
			if (diff == -1 || e1 - e2<diff)
			{
				return e1 - e2;
			}
		}
		else
		{
			if (diff == -1 || e2 - e1<diff)
			{
				return e2 - e1;
			}
		}
		return diff;
	}
	// Finds the minimum distance of given elements (x and y)
	// When element is exists in array
	fun minimumDistance(arr: Array<Int>, size: Int, x: Int, y: Int): Unit
	{
		if (size <= 1)
		{
			// Not more than 2 elements
			return;
		}
		var e1: Int = -1;
		var e2: Int = -1;
		var diff: Int = -1;
		var i: Int = 0;
		while (i<size)
		{
			if (arr[i] == x)
			{
				// When get a new x element
				if (x == y)
				{
					// When x and y is similar
					if (e1 == -1)
					{
						// Get first element
						e1 = i;
					}
					else
					if (e2 == -1)
					{
						// Get second element
						e2 = i;
						// Get distance
						diff = this.distance(e1, e2, diff);
					}
					else
					{
						e1 = e2;
						e2 = i;
						// Get distance
						diff = this.distance(e1, e2, diff);
					}
				}
				else
				{
					e1 = i;
					if (e2 != -1)
					{
						// Get distance
						diff = this.distance(e1, e2, diff);
					}
				}
			}
			else
			if (arr[i] == y)
			{
				// When get a new y element
				e2 = i;
				if (e1 != -1)
				{
					// Get distance
					diff = this.distance(e1, e2, diff);
				}
			}
			i += 1;
		}
		if (e1 == -1 || e2 == -1)
		{
			print("\n Pair (" + x + "," + y + ") are not exists");
		}
		else
		{
			print(" Minimum distance of pair (" + x + "," + y + ") is : " + diff + " \n");
		}
	}
}
fun main(args: Array<String>): Unit
{
	var task: FindDistance = FindDistance();
	// Define array of integer elements
	var arr: Array<Int> = arrayOf(4, 2, 8, 2, 3, 7, 1, 4, 6, 1, 4, 6, 8, 2, 3);
	// Get the size
	var size: Int = arr.count();
	print(" Array Element \n");
	task.printArray(arr, size);
	// x = 2, y = 6
	task.minimumDistance(arr, size, 2, 6);
	// x = 4, y = 4
	task.minimumDistance(arr, size, 4, 4);
}

Output

 Array Element
  4  2  8  2  3  7  1  4  6  1  4  6  8  2  3
 Minimum distance of pair (2,6) is : 2
 Minimum distance of pair (4,4) is : 3




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment