Skip to main content

Print all combinations of n natural number whose pair element difference is one

Here given code implementation process.

// C Program
// Print all combinations of n natural number 
// whose pair element difference is one
#include <stdio.h>

void subSequences(int result[], int start, int count, int n)
{
	if (count == n)
	{
		// Display resultant sequence
		for (int i = 0; i < n - 1; i += 2)
		{
			printf("(%d,%d) ", result[i], result[i + 1]);
		}
		printf("\n");
	}
	else if (count > n)
	{
		return;
	}
	else
	{
		for (int i = start; i < n; i += 2)
		{
          	// Set pair element
			result[count] = i + 1;
			result[count + 1] = i + 2;
			subSequences(result, start + 2, count + 2, n);
			result[count] = i + 2;
			result[count + 1] = i + 1;
			subSequences(result, i, count + 2, n);
		}
	}
}
void pairDifferences1s(int n)
{
	if (n % 2 != 0)
	{
		printf("\n Given n : %d is not even \n", n);
	}
	if (n <= 0)
	{
		return;
	}
  	printf(" Given : %d \n",n);
	// Auxiliary array which is collect result
	int result[n];
	subSequences(result, 0, 0, n);
}
int main()
{
	//  Length and natural number 1..n
	int n = 4;
	/*
	    n = 4
	    ----------
	    (1,2) (3,4) 
	    (1,2) (4,3) 
	    (2,1) (1,2) 
	    (2,1) (2,1) 
	    (2,1) (3,4) 
	    (2,1) (4,3) 
	    (3,4) (3,4) 
	    (3,4) (4,3) 
	    (4,3) (3,4) 
	    (4,3) (4,3)
	  
	*/
	// Test A
	pairDifferences1s(n);
	n = 6;
	/*

	    n = 6
	    pair n/2 = 3 pair in each result
	    ----------
	    (1,2) (3,4) (5,6) 
	    (1,2) (3,4) (6,5) 
	    (1,2) (4,3) (3,4) 
	    (1,2) (4,3) (4,3) 
	    (1,2) (4,3) (5,6) 
	    (1,2) (4,3) (6,5) 
	    (1,2) (5,6) (5,6) 
	    (1,2) (5,6) (6,5) 
	    (1,2) (6,5) (5,6) 
	    (1,2) (6,5) (6,5) 
	    (2,1) (1,2) (3,4) 
	    (2,1) (1,2) (4,3) 
	    (2,1) (1,2) (5,6) 
	    (2,1) (1,2) (6,5) 
	    (2,1) (2,1) (1,2) 
	    (2,1) (2,1) (2,1) 
	    (2,1) (2,1) (3,4) 
	    (2,1) (2,1) (4,3) 
	    (2,1) (2,1) (5,6) 
	    (2,1) (2,1) (6,5) 
	    (2,1) (3,4) (3,4) 
	    (2,1) (3,4) (4,3) 
	    (2,1) (3,4) (5,6) 
	    (2,1) (3,4) (6,5) 
	    (2,1) (4,3) (3,4) 
	    (2,1) (4,3) (4,3) 
	    (2,1) (4,3) (5,6) 
	    (2,1) (4,3) (6,5) 
	    (2,1) (5,6) (3,4) 
	    (2,1) (5,6) (4,3) 
	    (2,1) (5,6) (5,6) 
	    (2,1) (5,6) (6,5) 
	    (2,1) (6,5) (5,6) 
	    (2,1) (6,5) (6,5) 
	    (3,4) (3,4) (5,6) 
	    (3,4) (3,4) (6,5) 
	    (3,4) (4,3) (3,4) 
	    (3,4) (4,3) (4,3) 
	    (3,4) (4,3) (5,6) 
	    (3,4) (4,3) (6,5) 
	    (3,4) (5,6) (5,6) 
	    (3,4) (5,6) (6,5) 
	    (3,4) (6,5) (5,6) 
	    (3,4) (6,5) (6,5) 
	    (4,3) (3,4) (5,6) 
	    (4,3) (3,4) (6,5) 
	    (4,3) (4,3) (3,4) 
	    (4,3) (4,3) (4,3) 
	    (4,3) (4,3) (5,6) 
	    (4,3) (4,3) (6,5) 
	    (4,3) (5,6) (5,6) 
	    (4,3) (5,6) (6,5) 
	    (4,3) (6,5) (5,6) 
	    (4,3) (6,5) (6,5) 
	    (5,6) (3,4) (5,6) 
	    (5,6) (3,4) (6,5) 
	    (5,6) (4,3) (3,4) 
	    (5,6) (4,3) (4,3) 
	    (5,6) (4,3) (5,6) 
	    (5,6) (4,3) (6,5) 
	    (5,6) (5,6) (5,6) 
	    (5,6) (5,6) (6,5) 
	    (5,6) (6,5) (5,6) 
	    (5,6) (6,5) (6,5) 
	    (6,5) (6,5) (5,6) 
	    (6,5) (6,5) (6,5)
	  
	*/
	// Test B
	pairDifferences1s(n);
	return 0;
}

Output

 Given : 4
(1,2) (3,4)
(1,2) (4,3)
(2,1) (1,2)
(2,1) (2,1)
(2,1) (3,4)
(2,1) (4,3)
(3,4) (3,4)
(3,4) (4,3)
(4,3) (3,4)
(4,3) (4,3)
 Given : 6
(1,2) (3,4) (5,6)
(1,2) (3,4) (6,5)
(1,2) (4,3) (3,4)
(1,2) (4,3) (4,3)
(1,2) (4,3) (5,6)
(1,2) (4,3) (6,5)
(1,2) (5,6) (5,6)
(1,2) (5,6) (6,5)
(1,2) (6,5) (5,6)
(1,2) (6,5) (6,5)
(2,1) (1,2) (3,4)
(2,1) (1,2) (4,3)
(2,1) (1,2) (5,6)
(2,1) (1,2) (6,5)
(2,1) (2,1) (1,2)
(2,1) (2,1) (2,1)
(2,1) (2,1) (3,4)
(2,1) (2,1) (4,3)
(2,1) (2,1) (5,6)
(2,1) (2,1) (6,5)
(2,1) (3,4) (3,4)
(2,1) (3,4) (4,3)
(2,1) (3,4) (5,6)
(2,1) (3,4) (6,5)
(2,1) (4,3) (3,4)
(2,1) (4,3) (4,3)
(2,1) (4,3) (5,6)
(2,1) (4,3) (6,5)
(2,1) (5,6) (3,4)
(2,1) (5,6) (4,3)
(2,1) (5,6) (5,6)
(2,1) (5,6) (6,5)
(2,1) (6,5) (5,6)
(2,1) (6,5) (6,5)
(3,4) (3,4) (5,6)
(3,4) (3,4) (6,5)
(3,4) (4,3) (3,4)
(3,4) (4,3) (4,3)
(3,4) (4,3) (5,6)
(3,4) (4,3) (6,5)
(3,4) (5,6) (5,6)
(3,4) (5,6) (6,5)
(3,4) (6,5) (5,6)
(3,4) (6,5) (6,5)
(4,3) (3,4) (5,6)
(4,3) (3,4) (6,5)
(4,3) (4,3) (3,4)
(4,3) (4,3) (4,3)
(4,3) (4,3) (5,6)
(4,3) (4,3) (6,5)
(4,3) (5,6) (5,6)
(4,3) (5,6) (6,5)
(4,3) (6,5) (5,6)
(4,3) (6,5) (6,5)
(5,6) (3,4) (5,6)
(5,6) (3,4) (6,5)
(5,6) (4,3) (3,4)
(5,6) (4,3) (4,3)
(5,6) (4,3) (5,6)
(5,6) (4,3) (6,5)
(5,6) (5,6) (5,6)
(5,6) (5,6) (6,5)
(5,6) (6,5) (5,6)
(5,6) (6,5) (6,5)
(6,5) (6,5) (5,6)
(6,5) (6,5) (6,5)
// Java program for
// Print all combinations of n natural number 
// whose pair element difference is one
public class Combination
{
	public void subSequences(int[] result, 
  			int start, int count, int n)
	{
		if (count == n)
		{
			// Display resultant sequence
			for (int i = 0; i < n - 1; i += 2)
			{
				System.out.print("(" + result[i] + 
                                 "," + result[i + 1] + ") ");
			}
			System.out.print("\n");
		}
		else if (count > n)
		{
			return;
		}
		else
		{
			for (int i = start; i < n; i += 2)
			{
				// Set pair element
				result[count] = i + 1;
				result[count + 1] = i + 2;
				subSequences(result, start + 2, count + 2, n);
				result[count] = i + 2;
				result[count + 1] = i + 1;
				subSequences(result, i, count + 2, n);
			}
		}
	}
	public void pairDifferences1s(int n)
	{
		if (n % 2 != 0)
		{
			System.out.print("\n Given n : " + 
                             n + " is not even \n");
		}
		if (n <= 0)
		{
			return;
		}
		System.out.print(" Given : " + n + " \n");
		// Auxiliary array which is collect result
		int[] result = new int[n];
		subSequences(result, 0, 0, n);
	}
	public static void main(String[] args)
	{
		Combination task = new Combination();
		//  Length and natural number 1..n
		int n = 4;
		/*
		    n = 4
		    ----------
		    (1,2) (3,4) 
		    (1,2) (4,3) 
		    (2,1) (1,2) 
		    (2,1) (2,1) 
		    (2,1) (3,4) 
		    (2,1) (4,3) 
		    (3,4) (3,4) 
		    (3,4) (4,3) 
		    (4,3) (3,4) 
		    (4,3) (4,3)
		  
		*/
		// Test A
		task.pairDifferences1s(n);
		n = 6;
		/*

		    n = 6
		    pair n/2 = 3 pair in each result
		    ----------
		    (1,2) (3,4) (5,6) 
		    (1,2) (3,4) (6,5) 
		    (1,2) (4,3) (3,4) 
		    (1,2) (4,3) (4,3) 
		    (1,2) (4,3) (5,6) 
		    (1,2) (4,3) (6,5) 
		    (1,2) (5,6) (5,6) 
		    (1,2) (5,6) (6,5) 
		    (1,2) (6,5) (5,6) 
		    (1,2) (6,5) (6,5) 
		    (2,1) (1,2) (3,4) 
		    (2,1) (1,2) (4,3) 
		    (2,1) (1,2) (5,6) 
		    (2,1) (1,2) (6,5) 
		    (2,1) (2,1) (1,2) 
		    (2,1) (2,1) (2,1) 
		    (2,1) (2,1) (3,4) 
		    (2,1) (2,1) (4,3) 
		    (2,1) (2,1) (5,6) 
		    (2,1) (2,1) (6,5) 
		    (2,1) (3,4) (3,4) 
		    (2,1) (3,4) (4,3) 
		    (2,1) (3,4) (5,6) 
		    (2,1) (3,4) (6,5) 
		    (2,1) (4,3) (3,4) 
		    (2,1) (4,3) (4,3) 
		    (2,1) (4,3) (5,6) 
		    (2,1) (4,3) (6,5) 
		    (2,1) (5,6) (3,4) 
		    (2,1) (5,6) (4,3) 
		    (2,1) (5,6) (5,6) 
		    (2,1) (5,6) (6,5) 
		    (2,1) (6,5) (5,6) 
		    (2,1) (6,5) (6,5) 
		    (3,4) (3,4) (5,6) 
		    (3,4) (3,4) (6,5) 
		    (3,4) (4,3) (3,4) 
		    (3,4) (4,3) (4,3) 
		    (3,4) (4,3) (5,6) 
		    (3,4) (4,3) (6,5) 
		    (3,4) (5,6) (5,6) 
		    (3,4) (5,6) (6,5) 
		    (3,4) (6,5) (5,6) 
		    (3,4) (6,5) (6,5) 
		    (4,3) (3,4) (5,6) 
		    (4,3) (3,4) (6,5) 
		    (4,3) (4,3) (3,4) 
		    (4,3) (4,3) (4,3) 
		    (4,3) (4,3) (5,6) 
		    (4,3) (4,3) (6,5) 
		    (4,3) (5,6) (5,6) 
		    (4,3) (5,6) (6,5) 
		    (4,3) (6,5) (5,6) 
		    (4,3) (6,5) (6,5) 
		    (5,6) (3,4) (5,6) 
		    (5,6) (3,4) (6,5) 
		    (5,6) (4,3) (3,4) 
		    (5,6) (4,3) (4,3) 
		    (5,6) (4,3) (5,6) 
		    (5,6) (4,3) (6,5) 
		    (5,6) (5,6) (5,6) 
		    (5,6) (5,6) (6,5) 
		    (5,6) (6,5) (5,6) 
		    (5,6) (6,5) (6,5) 
		    (6,5) (6,5) (5,6) 
		    (6,5) (6,5) (6,5)
		  
		*/
		// Test B
		task.pairDifferences1s(n);
	}
}

Output

 Given : 4
(1,2) (3,4)
(1,2) (4,3)
(2,1) (1,2)
(2,1) (2,1)
(2,1) (3,4)
(2,1) (4,3)
(3,4) (3,4)
(3,4) (4,3)
(4,3) (3,4)
(4,3) (4,3)
 Given : 6
(1,2) (3,4) (5,6)
(1,2) (3,4) (6,5)
(1,2) (4,3) (3,4)
(1,2) (4,3) (4,3)
(1,2) (4,3) (5,6)
(1,2) (4,3) (6,5)
(1,2) (5,6) (5,6)
(1,2) (5,6) (6,5)
(1,2) (6,5) (5,6)
(1,2) (6,5) (6,5)
(2,1) (1,2) (3,4)
(2,1) (1,2) (4,3)
(2,1) (1,2) (5,6)
(2,1) (1,2) (6,5)
(2,1) (2,1) (1,2)
(2,1) (2,1) (2,1)
(2,1) (2,1) (3,4)
(2,1) (2,1) (4,3)
(2,1) (2,1) (5,6)
(2,1) (2,1) (6,5)
(2,1) (3,4) (3,4)
(2,1) (3,4) (4,3)
(2,1) (3,4) (5,6)
(2,1) (3,4) (6,5)
(2,1) (4,3) (3,4)
(2,1) (4,3) (4,3)
(2,1) (4,3) (5,6)
(2,1) (4,3) (6,5)
(2,1) (5,6) (3,4)
(2,1) (5,6) (4,3)
(2,1) (5,6) (5,6)
(2,1) (5,6) (6,5)
(2,1) (6,5) (5,6)
(2,1) (6,5) (6,5)
(3,4) (3,4) (5,6)
(3,4) (3,4) (6,5)
(3,4) (4,3) (3,4)
(3,4) (4,3) (4,3)
(3,4) (4,3) (5,6)
(3,4) (4,3) (6,5)
(3,4) (5,6) (5,6)
(3,4) (5,6) (6,5)
(3,4) (6,5) (5,6)
(3,4) (6,5) (6,5)
(4,3) (3,4) (5,6)
(4,3) (3,4) (6,5)
(4,3) (4,3) (3,4)
(4,3) (4,3) (4,3)
(4,3) (4,3) (5,6)
(4,3) (4,3) (6,5)
(4,3) (5,6) (5,6)
(4,3) (5,6) (6,5)
(4,3) (6,5) (5,6)
(4,3) (6,5) (6,5)
(5,6) (3,4) (5,6)
(5,6) (3,4) (6,5)
(5,6) (4,3) (3,4)
(5,6) (4,3) (4,3)
(5,6) (4,3) (5,6)
(5,6) (4,3) (6,5)
(5,6) (5,6) (5,6)
(5,6) (5,6) (6,5)
(5,6) (6,5) (5,6)
(5,6) (6,5) (6,5)
(6,5) (6,5) (5,6)
(6,5) (6,5) (6,5)
// Include header file
#include <iostream>

using namespace std;
// C++ program for
// Print all combinations of n natural number 
// whose pair element difference is one
class Combination
{
    public: void subSequences(int result[], 
      int start, 
        int count, 
          int n)
    {
        if (count == n)
        {
            // Display resultant sequence
            for (int i = 0; i < n - 1; i += 2)
            {
                cout << "(" 
                     << result[i] 
                     << "," 
                     << result[i + 1] 
                     << ") ";
            }
            cout << "\n";
        }
        else if (count > n)
        {
            return;
        }
        else
        {
            for (int i = start; i < n; i += 2)
            {
                // Set pair element
                result[count] = i + 1;
                result[count + 1] = i + 2;
                this->subSequences(result, start + 2, count + 2, n);
                result[count] = i + 2;
                result[count + 1] = i + 1;
                this->subSequences(result, i, count + 2, n);
            }
        }
    }
    void pairDifferences1s(int n)
    {
        if (n % 2 != 0)
        {
            cout << "\n Given n : " << n << " is not even \n";
        }
        if (n <= 0)
        {
            return;
        }
        cout << " Given : " << n << " \n";
        // Auxiliary array which is collect result
        int result[n];
        this->subSequences(result, 0, 0, n);
    }
};
int main()
{
    Combination *task = new Combination();
    //  Length and natural number 1..n
    int n = 4;
    /*
        n = 4
        ----------
        (1,2) (3,4) 
        (1,2) (4,3) 
        (2,1) (1,2) 
        (2,1) (2,1) 
        (2,1) (3,4) 
        (2,1) (4,3) 
        (3,4) (3,4) 
        (3,4) (4,3) 
        (4,3) (3,4) 
        (4,3) (4,3)
      
    */
    // Test A
    task->pairDifferences1s(n);
    n = 6;
    /*

        n = 6
        pair n/2 = 3 pair in each result
        ----------
        (1,2) (3,4) (5,6) 
        (1,2) (3,4) (6,5) 
        (1,2) (4,3) (3,4) 
        (1,2) (4,3) (4,3) 
        (1,2) (4,3) (5,6) 
        (1,2) (4,3) (6,5) 
        (1,2) (5,6) (5,6) 
        (1,2) (5,6) (6,5) 
        (1,2) (6,5) (5,6) 
        (1,2) (6,5) (6,5) 
        (2,1) (1,2) (3,4) 
        (2,1) (1,2) (4,3) 
        (2,1) (1,2) (5,6) 
        (2,1) (1,2) (6,5) 
        (2,1) (2,1) (1,2) 
        (2,1) (2,1) (2,1) 
        (2,1) (2,1) (3,4) 
        (2,1) (2,1) (4,3) 
        (2,1) (2,1) (5,6) 
        (2,1) (2,1) (6,5) 
        (2,1) (3,4) (3,4) 
        (2,1) (3,4) (4,3) 
        (2,1) (3,4) (5,6) 
        (2,1) (3,4) (6,5) 
        (2,1) (4,3) (3,4) 
        (2,1) (4,3) (4,3) 
        (2,1) (4,3) (5,6) 
        (2,1) (4,3) (6,5) 
        (2,1) (5,6) (3,4) 
        (2,1) (5,6) (4,3) 
        (2,1) (5,6) (5,6) 
        (2,1) (5,6) (6,5) 
        (2,1) (6,5) (5,6) 
        (2,1) (6,5) (6,5) 
        (3,4) (3,4) (5,6) 
        (3,4) (3,4) (6,5) 
        (3,4) (4,3) (3,4) 
        (3,4) (4,3) (4,3) 
        (3,4) (4,3) (5,6) 
        (3,4) (4,3) (6,5) 
        (3,4) (5,6) (5,6) 
        (3,4) (5,6) (6,5) 
        (3,4) (6,5) (5,6) 
        (3,4) (6,5) (6,5) 
        (4,3) (3,4) (5,6) 
        (4,3) (3,4) (6,5) 
        (4,3) (4,3) (3,4) 
        (4,3) (4,3) (4,3) 
        (4,3) (4,3) (5,6) 
        (4,3) (4,3) (6,5) 
        (4,3) (5,6) (5,6) 
        (4,3) (5,6) (6,5) 
        (4,3) (6,5) (5,6) 
        (4,3) (6,5) (6,5) 
        (5,6) (3,4) (5,6) 
        (5,6) (3,4) (6,5) 
        (5,6) (4,3) (3,4) 
        (5,6) (4,3) (4,3) 
        (5,6) (4,3) (5,6) 
        (5,6) (4,3) (6,5) 
        (5,6) (5,6) (5,6) 
        (5,6) (5,6) (6,5) 
        (5,6) (6,5) (5,6) 
        (5,6) (6,5) (6,5) 
        (6,5) (6,5) (5,6) 
        (6,5) (6,5) (6,5)
      
    */
    // Test B
    task->pairDifferences1s(n);
    return 0;
}

Output

 Given : 4
(1,2) (3,4)
(1,2) (4,3)
(2,1) (1,2)
(2,1) (2,1)
(2,1) (3,4)
(2,1) (4,3)
(3,4) (3,4)
(3,4) (4,3)
(4,3) (3,4)
(4,3) (4,3)
 Given : 6
(1,2) (3,4) (5,6)
(1,2) (3,4) (6,5)
(1,2) (4,3) (3,4)
(1,2) (4,3) (4,3)
(1,2) (4,3) (5,6)
(1,2) (4,3) (6,5)
(1,2) (5,6) (5,6)
(1,2) (5,6) (6,5)
(1,2) (6,5) (5,6)
(1,2) (6,5) (6,5)
(2,1) (1,2) (3,4)
(2,1) (1,2) (4,3)
(2,1) (1,2) (5,6)
(2,1) (1,2) (6,5)
(2,1) (2,1) (1,2)
(2,1) (2,1) (2,1)
(2,1) (2,1) (3,4)
(2,1) (2,1) (4,3)
(2,1) (2,1) (5,6)
(2,1) (2,1) (6,5)
(2,1) (3,4) (3,4)
(2,1) (3,4) (4,3)
(2,1) (3,4) (5,6)
(2,1) (3,4) (6,5)
(2,1) (4,3) (3,4)
(2,1) (4,3) (4,3)
(2,1) (4,3) (5,6)
(2,1) (4,3) (6,5)
(2,1) (5,6) (3,4)
(2,1) (5,6) (4,3)
(2,1) (5,6) (5,6)
(2,1) (5,6) (6,5)
(2,1) (6,5) (5,6)
(2,1) (6,5) (6,5)
(3,4) (3,4) (5,6)
(3,4) (3,4) (6,5)
(3,4) (4,3) (3,4)
(3,4) (4,3) (4,3)
(3,4) (4,3) (5,6)
(3,4) (4,3) (6,5)
(3,4) (5,6) (5,6)
(3,4) (5,6) (6,5)
(3,4) (6,5) (5,6)
(3,4) (6,5) (6,5)
(4,3) (3,4) (5,6)
(4,3) (3,4) (6,5)
(4,3) (4,3) (3,4)
(4,3) (4,3) (4,3)
(4,3) (4,3) (5,6)
(4,3) (4,3) (6,5)
(4,3) (5,6) (5,6)
(4,3) (5,6) (6,5)
(4,3) (6,5) (5,6)
(4,3) (6,5) (6,5)
(5,6) (3,4) (5,6)
(5,6) (3,4) (6,5)
(5,6) (4,3) (3,4)
(5,6) (4,3) (4,3)
(5,6) (4,3) (5,6)
(5,6) (4,3) (6,5)
(5,6) (5,6) (5,6)
(5,6) (5,6) (6,5)
(5,6) (6,5) (5,6)
(5,6) (6,5) (6,5)
(6,5) (6,5) (5,6)
(6,5) (6,5) (6,5)
// Include namespace system
using System;
// Csharp program for
// Print all combinations of n natural number
// whose pair element difference is one
public class Combination
{
	public void subSequences(int[] result, 
  				int start, int count, int n)
	{
		if (count == n)
		{
			// Display resultant sequence
			for (int i = 0; i < n - 1; i += 2)
			{
				Console.Write("(" + result[i] + "," + 
                              result[i + 1] + ") ");
			}
			Console.Write("\n");
		}
		else if (count > n)
		{
			return;
		}
		else
		{
			for (int i = start; i < n; i += 2)
			{
				// Set pair element
				result[count] = i + 1;
				result[count + 1] = i + 2;
				this.subSequences(result, 
                                  start + 2, 
                                  count + 2, 
                                  n);
				result[count] = i + 2;
				result[count + 1] = i + 1;
				this.subSequences(result, 
                                  i, 
                                  count + 2,
                                  n);
			}
		}
	}
	public void pairDifferences1s(int n)
	{
		if (n % 2 != 0)
		{
			Console.Write("\n Given n : " + 
                          n + " is not even \n");
		}
		if (n <= 0)
		{
			return;
		}
		Console.Write(" Given : " + n + " \n");
		// Auxiliary array which is collect result
		int[] result = new int[n];
		this.subSequences(result, 0, 0, n);
	}
	public static void Main(String[] args)
	{
		Combination task = new Combination();
		//  Length and natural number 1..n
		int n = 4;
		/*
		    n = 4
		    ----------
		    (1,2) (3,4) 
		    (1,2) (4,3) 
		    (2,1) (1,2) 
		    (2,1) (2,1) 
		    (2,1) (3,4) 
		    (2,1) (4,3) 
		    (3,4) (3,4) 
		    (3,4) (4,3) 
		    (4,3) (3,4) 
		    (4,3) (4,3)
		  
		*/
		// Test A
		task.pairDifferences1s(n);
		n = 6;
		/*
		    n = 6
		    pair n/2 = 3 pair in each result
		    ----------
		    (1,2) (3,4) (5,6) 
		    (1,2) (3,4) (6,5) 
		    (1,2) (4,3) (3,4) 
		    (1,2) (4,3) (4,3) 
		    (1,2) (4,3) (5,6) 
		    (1,2) (4,3) (6,5) 
		    (1,2) (5,6) (5,6) 
		    (1,2) (5,6) (6,5) 
		    (1,2) (6,5) (5,6) 
		    (1,2) (6,5) (6,5) 
		    (2,1) (1,2) (3,4) 
		    (2,1) (1,2) (4,3) 
		    (2,1) (1,2) (5,6) 
		    (2,1) (1,2) (6,5) 
		    (2,1) (2,1) (1,2) 
		    (2,1) (2,1) (2,1) 
		    (2,1) (2,1) (3,4) 
		    (2,1) (2,1) (4,3) 
		    (2,1) (2,1) (5,6) 
		    (2,1) (2,1) (6,5) 
		    (2,1) (3,4) (3,4) 
		    (2,1) (3,4) (4,3) 
		    (2,1) (3,4) (5,6) 
		    (2,1) (3,4) (6,5) 
		    (2,1) (4,3) (3,4) 
		    (2,1) (4,3) (4,3) 
		    (2,1) (4,3) (5,6) 
		    (2,1) (4,3) (6,5) 
		    (2,1) (5,6) (3,4) 
		    (2,1) (5,6) (4,3) 
		    (2,1) (5,6) (5,6) 
		    (2,1) (5,6) (6,5) 
		    (2,1) (6,5) (5,6) 
		    (2,1) (6,5) (6,5) 
		    (3,4) (3,4) (5,6) 
		    (3,4) (3,4) (6,5) 
		    (3,4) (4,3) (3,4) 
		    (3,4) (4,3) (4,3) 
		    (3,4) (4,3) (5,6) 
		    (3,4) (4,3) (6,5) 
		    (3,4) (5,6) (5,6) 
		    (3,4) (5,6) (6,5) 
		    (3,4) (6,5) (5,6) 
		    (3,4) (6,5) (6,5) 
		    (4,3) (3,4) (5,6) 
		    (4,3) (3,4) (6,5) 
		    (4,3) (4,3) (3,4) 
		    (4,3) (4,3) (4,3) 
		    (4,3) (4,3) (5,6) 
		    (4,3) (4,3) (6,5) 
		    (4,3) (5,6) (5,6) 
		    (4,3) (5,6) (6,5) 
		    (4,3) (6,5) (5,6) 
		    (4,3) (6,5) (6,5) 
		    (5,6) (3,4) (5,6) 
		    (5,6) (3,4) (6,5) 
		    (5,6) (4,3) (3,4) 
		    (5,6) (4,3) (4,3) 
		    (5,6) (4,3) (5,6) 
		    (5,6) (4,3) (6,5) 
		    (5,6) (5,6) (5,6) 
		    (5,6) (5,6) (6,5) 
		    (5,6) (6,5) (5,6) 
		    (5,6) (6,5) (6,5) 
		    (6,5) (6,5) (5,6) 
		    (6,5) (6,5) (6,5)
		  
		*/
		// Test B
		task.pairDifferences1s(n);
	}
}

Output

 Given : 4
(1,2) (3,4)
(1,2) (4,3)
(2,1) (1,2)
(2,1) (2,1)
(2,1) (3,4)
(2,1) (4,3)
(3,4) (3,4)
(3,4) (4,3)
(4,3) (3,4)
(4,3) (4,3)
 Given : 6
(1,2) (3,4) (5,6)
(1,2) (3,4) (6,5)
(1,2) (4,3) (3,4)
(1,2) (4,3) (4,3)
(1,2) (4,3) (5,6)
(1,2) (4,3) (6,5)
(1,2) (5,6) (5,6)
(1,2) (5,6) (6,5)
(1,2) (6,5) (5,6)
(1,2) (6,5) (6,5)
(2,1) (1,2) (3,4)
(2,1) (1,2) (4,3)
(2,1) (1,2) (5,6)
(2,1) (1,2) (6,5)
(2,1) (2,1) (1,2)
(2,1) (2,1) (2,1)
(2,1) (2,1) (3,4)
(2,1) (2,1) (4,3)
(2,1) (2,1) (5,6)
(2,1) (2,1) (6,5)
(2,1) (3,4) (3,4)
(2,1) (3,4) (4,3)
(2,1) (3,4) (5,6)
(2,1) (3,4) (6,5)
(2,1) (4,3) (3,4)
(2,1) (4,3) (4,3)
(2,1) (4,3) (5,6)
(2,1) (4,3) (6,5)
(2,1) (5,6) (3,4)
(2,1) (5,6) (4,3)
(2,1) (5,6) (5,6)
(2,1) (5,6) (6,5)
(2,1) (6,5) (5,6)
(2,1) (6,5) (6,5)
(3,4) (3,4) (5,6)
(3,4) (3,4) (6,5)
(3,4) (4,3) (3,4)
(3,4) (4,3) (4,3)
(3,4) (4,3) (5,6)
(3,4) (4,3) (6,5)
(3,4) (5,6) (5,6)
(3,4) (5,6) (6,5)
(3,4) (6,5) (5,6)
(3,4) (6,5) (6,5)
(4,3) (3,4) (5,6)
(4,3) (3,4) (6,5)
(4,3) (4,3) (3,4)
(4,3) (4,3) (4,3)
(4,3) (4,3) (5,6)
(4,3) (4,3) (6,5)
(4,3) (5,6) (5,6)
(4,3) (5,6) (6,5)
(4,3) (6,5) (5,6)
(4,3) (6,5) (6,5)
(5,6) (3,4) (5,6)
(5,6) (3,4) (6,5)
(5,6) (4,3) (3,4)
(5,6) (4,3) (4,3)
(5,6) (4,3) (5,6)
(5,6) (4,3) (6,5)
(5,6) (5,6) (5,6)
(5,6) (5,6) (6,5)
(5,6) (6,5) (5,6)
(5,6) (6,5) (6,5)
(6,5) (6,5) (5,6)
(6,5) (6,5) (6,5)
package main
import "fmt"
// Go program for
// Print all combinations of n natural number
// whose pair element difference is one
type Combination struct {}
func getCombination() * Combination {
	var me *Combination = &Combination {}
	return me
}
func(this Combination) subSequences(result[] int, 
		start int, 
		count int, 
		n int) {
	if count == n {
		// Display resultant sequence
		for i := 0 ; i < n - 1 ; i += 2 {
			fmt.Print("(", 
				result[i], 
				",", 
				result[i+1], 
				") ")
		}
		fmt.Print("\n")
	} else if count > n {
		return
	} else {
		for i := start ; i < n ; i += 2 {
			// Set pair element
			result[count] = i + 1
			result[count + 1] = i + 2
			this.subSequences(result, start + 2, count + 2, n)
			result[count] = i + 2
			result[count + 1] = i + 1
			this.subSequences(result, i, count + 2, n)
		}
	}
}
func(this Combination) pairDifferences1s(n int) {
	if n % 2 != 0 {
		fmt.Print("\n Given n : ", n, " is not even \n")
	}
	if n <= 0 {
		return
	}
	fmt.Print(" Given : ", n, " \n")
	// Auxiliary array which is collect result
	var result = make([] int, n)
	this.subSequences(result, 0, 0, n)
}
func main() {
	var task * Combination = getCombination()
	//  Length and natural number 1..n
	var n int = 4
	/*
	    n = 4
	    ----------
	    (1,2) (3,4) 
	    (1,2) (4,3) 
	    (2,1) (1,2) 
	    (2,1) (2,1) 
	    (2,1) (3,4) 
	    (2,1) (4,3) 
	    (3,4) (3,4) 
	    (3,4) (4,3) 
	    (4,3) (3,4) 
	    (4,3) (4,3)
	  
	*/
	// Test A
	task.pairDifferences1s(n)
	n = 6
	/*
	    n = 6
	    pair n/2 = 3 pair in each result
	    ----------
	    (1,2) (3,4) (5,6) 
	    (1,2) (3,4) (6,5) 
	    (1,2) (4,3) (3,4) 
	    (1,2) (4,3) (4,3) 
	    (1,2) (4,3) (5,6) 
	    (1,2) (4,3) (6,5) 
	    (1,2) (5,6) (5,6) 
	    (1,2) (5,6) (6,5) 
	    (1,2) (6,5) (5,6) 
	    (1,2) (6,5) (6,5) 
	    (2,1) (1,2) (3,4) 
	    (2,1) (1,2) (4,3) 
	    (2,1) (1,2) (5,6) 
	    (2,1) (1,2) (6,5) 
	    (2,1) (2,1) (1,2) 
	    (2,1) (2,1) (2,1) 
	    (2,1) (2,1) (3,4) 
	    (2,1) (2,1) (4,3) 
	    (2,1) (2,1) (5,6) 
	    (2,1) (2,1) (6,5) 
	    (2,1) (3,4) (3,4) 
	    (2,1) (3,4) (4,3) 
	    (2,1) (3,4) (5,6) 
	    (2,1) (3,4) (6,5) 
	    (2,1) (4,3) (3,4) 
	    (2,1) (4,3) (4,3) 
	    (2,1) (4,3) (5,6) 
	    (2,1) (4,3) (6,5) 
	    (2,1) (5,6) (3,4) 
	    (2,1) (5,6) (4,3) 
	    (2,1) (5,6) (5,6) 
	    (2,1) (5,6) (6,5) 
	    (2,1) (6,5) (5,6) 
	    (2,1) (6,5) (6,5) 
	    (3,4) (3,4) (5,6) 
	    (3,4) (3,4) (6,5) 
	    (3,4) (4,3) (3,4) 
	    (3,4) (4,3) (4,3) 
	    (3,4) (4,3) (5,6) 
	    (3,4) (4,3) (6,5) 
	    (3,4) (5,6) (5,6) 
	    (3,4) (5,6) (6,5) 
	    (3,4) (6,5) (5,6) 
	    (3,4) (6,5) (6,5) 
	    (4,3) (3,4) (5,6) 
	    (4,3) (3,4) (6,5) 
	    (4,3) (4,3) (3,4) 
	    (4,3) (4,3) (4,3) 
	    (4,3) (4,3) (5,6) 
	    (4,3) (4,3) (6,5) 
	    (4,3) (5,6) (5,6) 
	    (4,3) (5,6) (6,5) 
	    (4,3) (6,5) (5,6) 
	    (4,3) (6,5) (6,5) 
	    (5,6) (3,4) (5,6) 
	    (5,6) (3,4) (6,5) 
	    (5,6) (4,3) (3,4) 
	    (5,6) (4,3) (4,3) 
	    (5,6) (4,3) (5,6) 
	    (5,6) (4,3) (6,5) 
	    (5,6) (5,6) (5,6) 
	    (5,6) (5,6) (6,5) 
	    (5,6) (6,5) (5,6) 
	    (5,6) (6,5) (6,5) 
	    (6,5) (6,5) (5,6) 
	    (6,5) (6,5) (6,5)
	  
	*/
	// Test B
	task.pairDifferences1s(n)
}

Output

 Given : 4
(1,2) (3,4)
(1,2) (4,3)
(2,1) (1,2)
(2,1) (2,1)
(2,1) (3,4)
(2,1) (4,3)
(3,4) (3,4)
(3,4) (4,3)
(4,3) (3,4)
(4,3) (4,3)
 Given : 6
(1,2) (3,4) (5,6)
(1,2) (3,4) (6,5)
(1,2) (4,3) (3,4)
(1,2) (4,3) (4,3)
(1,2) (4,3) (5,6)
(1,2) (4,3) (6,5)
(1,2) (5,6) (5,6)
(1,2) (5,6) (6,5)
(1,2) (6,5) (5,6)
(1,2) (6,5) (6,5)
(2,1) (1,2) (3,4)
(2,1) (1,2) (4,3)
(2,1) (1,2) (5,6)
(2,1) (1,2) (6,5)
(2,1) (2,1) (1,2)
(2,1) (2,1) (2,1)
(2,1) (2,1) (3,4)
(2,1) (2,1) (4,3)
(2,1) (2,1) (5,6)
(2,1) (2,1) (6,5)
(2,1) (3,4) (3,4)
(2,1) (3,4) (4,3)
(2,1) (3,4) (5,6)
(2,1) (3,4) (6,5)
(2,1) (4,3) (3,4)
(2,1) (4,3) (4,3)
(2,1) (4,3) (5,6)
(2,1) (4,3) (6,5)
(2,1) (5,6) (3,4)
(2,1) (5,6) (4,3)
(2,1) (5,6) (5,6)
(2,1) (5,6) (6,5)
(2,1) (6,5) (5,6)
(2,1) (6,5) (6,5)
(3,4) (3,4) (5,6)
(3,4) (3,4) (6,5)
(3,4) (4,3) (3,4)
(3,4) (4,3) (4,3)
(3,4) (4,3) (5,6)
(3,4) (4,3) (6,5)
(3,4) (5,6) (5,6)
(3,4) (5,6) (6,5)
(3,4) (6,5) (5,6)
(3,4) (6,5) (6,5)
(4,3) (3,4) (5,6)
(4,3) (3,4) (6,5)
(4,3) (4,3) (3,4)
(4,3) (4,3) (4,3)
(4,3) (4,3) (5,6)
(4,3) (4,3) (6,5)
(4,3) (5,6) (5,6)
(4,3) (5,6) (6,5)
(4,3) (6,5) (5,6)
(4,3) (6,5) (6,5)
(5,6) (3,4) (5,6)
(5,6) (3,4) (6,5)
(5,6) (4,3) (3,4)
(5,6) (4,3) (4,3)
(5,6) (4,3) (5,6)
(5,6) (4,3) (6,5)
(5,6) (5,6) (5,6)
(5,6) (5,6) (6,5)
(5,6) (6,5) (5,6)
(5,6) (6,5) (6,5)
(6,5) (6,5) (5,6)
(6,5) (6,5) (6,5)
<?php
// Php program for
// Print all combinations of n natural number
// whose pair element difference is one
class Combination
{
	public	function subSequences($result, 
                                   $start, 
                                   $count, 
                                   $n)
	{
		if ($count == $n)
		{
			// Display resultant sequence
			for ($i = 0; $i < $n - 1; $i += 2)
			{
				echo("(".$result[$i].
					",".$result[$i + 1].
					") ");
			}
			echo("\n");
		}
		else if ($count > $n)
		{
			return;
		}
		else
		{
			for ($i = $start; $i < $n; $i += 2)
			{
				// Set pair element
				$result[$count] = $i + 1;
				$result[$count + 1] = $i + 2;
				$this->subSequences($result, 
                                    $start + 2, 
                                    $count + 2,
                                    $n);
				$result[$count] = $i + 2;
				$result[$count + 1] = $i + 1;
				$this->subSequences($result, 
                                    $i, 
                                    $count + 2, 
                                    $n);
			}
		}
	}
	public	function pairDifferences1s($n)
	{
		if ($n % 2 != 0)
		{
			echo("\n Given n : ".$n.
				" is not even \n");
		}
		if ($n <= 0)
		{
			return;
		}
		echo(" Given : ".$n.
			" \n");
		// Auxiliary array which is collect result
		$result = array_fill(0, $n, 0);
		$this->subSequences($result, 0, 0, $n);
	}
}

function main()
{
	$task = new Combination();
	//  Length and natural number 1..n
	$n = 4;
	/*
	    n = 4
	    ----------
	    (1,2) (3,4) 
	    (1,2) (4,3) 
	    (2,1) (1,2) 
	    (2,1) (2,1) 
	    (2,1) (3,4) 
	    (2,1) (4,3) 
	    (3,4) (3,4) 
	    (3,4) (4,3) 
	    (4,3) (3,4) 
	    (4,3) (4,3)
	  
	*/
	// Test A
	$task->pairDifferences1s($n);
	$n = 6;
	/*
	    n = 6
	    pair n/2 = 3 pair in each result
	    ----------
	    (1,2) (3,4) (5,6) 
	    (1,2) (3,4) (6,5) 
	    (1,2) (4,3) (3,4) 
	    (1,2) (4,3) (4,3) 
	    (1,2) (4,3) (5,6) 
	    (1,2) (4,3) (6,5) 
	    (1,2) (5,6) (5,6) 
	    (1,2) (5,6) (6,5) 
	    (1,2) (6,5) (5,6) 
	    (1,2) (6,5) (6,5) 
	    (2,1) (1,2) (3,4) 
	    (2,1) (1,2) (4,3) 
	    (2,1) (1,2) (5,6) 
	    (2,1) (1,2) (6,5) 
	    (2,1) (2,1) (1,2) 
	    (2,1) (2,1) (2,1) 
	    (2,1) (2,1) (3,4) 
	    (2,1) (2,1) (4,3) 
	    (2,1) (2,1) (5,6) 
	    (2,1) (2,1) (6,5) 
	    (2,1) (3,4) (3,4) 
	    (2,1) (3,4) (4,3) 
	    (2,1) (3,4) (5,6) 
	    (2,1) (3,4) (6,5) 
	    (2,1) (4,3) (3,4) 
	    (2,1) (4,3) (4,3) 
	    (2,1) (4,3) (5,6) 
	    (2,1) (4,3) (6,5) 
	    (2,1) (5,6) (3,4) 
	    (2,1) (5,6) (4,3) 
	    (2,1) (5,6) (5,6) 
	    (2,1) (5,6) (6,5) 
	    (2,1) (6,5) (5,6) 
	    (2,1) (6,5) (6,5) 
	    (3,4) (3,4) (5,6) 
	    (3,4) (3,4) (6,5) 
	    (3,4) (4,3) (3,4) 
	    (3,4) (4,3) (4,3) 
	    (3,4) (4,3) (5,6) 
	    (3,4) (4,3) (6,5) 
	    (3,4) (5,6) (5,6) 
	    (3,4) (5,6) (6,5) 
	    (3,4) (6,5) (5,6) 
	    (3,4) (6,5) (6,5) 
	    (4,3) (3,4) (5,6) 
	    (4,3) (3,4) (6,5) 
	    (4,3) (4,3) (3,4) 
	    (4,3) (4,3) (4,3) 
	    (4,3) (4,3) (5,6) 
	    (4,3) (4,3) (6,5) 
	    (4,3) (5,6) (5,6) 
	    (4,3) (5,6) (6,5) 
	    (4,3) (6,5) (5,6) 
	    (4,3) (6,5) (6,5) 
	    (5,6) (3,4) (5,6) 
	    (5,6) (3,4) (6,5) 
	    (5,6) (4,3) (3,4) 
	    (5,6) (4,3) (4,3) 
	    (5,6) (4,3) (5,6) 
	    (5,6) (4,3) (6,5) 
	    (5,6) (5,6) (5,6) 
	    (5,6) (5,6) (6,5) 
	    (5,6) (6,5) (5,6) 
	    (5,6) (6,5) (6,5) 
	    (6,5) (6,5) (5,6) 
	    (6,5) (6,5) (6,5)
	  
	*/
	// Test B
	$task->pairDifferences1s($n);
}
main();

Output

 Given : 4
(1,2) (3,4)
(1,2) (4,3)
(2,1) (1,2)
(2,1) (2,1)
(2,1) (3,4)
(2,1) (4,3)
(3,4) (3,4)
(3,4) (4,3)
(4,3) (3,4)
(4,3) (4,3)
 Given : 6
(1,2) (3,4) (5,6)
(1,2) (3,4) (6,5)
(1,2) (4,3) (3,4)
(1,2) (4,3) (4,3)
(1,2) (4,3) (5,6)
(1,2) (4,3) (6,5)
(1,2) (5,6) (5,6)
(1,2) (5,6) (6,5)
(1,2) (6,5) (5,6)
(1,2) (6,5) (6,5)
(2,1) (1,2) (3,4)
(2,1) (1,2) (4,3)
(2,1) (1,2) (5,6)
(2,1) (1,2) (6,5)
(2,1) (2,1) (1,2)
(2,1) (2,1) (2,1)
(2,1) (2,1) (3,4)
(2,1) (2,1) (4,3)
(2,1) (2,1) (5,6)
(2,1) (2,1) (6,5)
(2,1) (3,4) (3,4)
(2,1) (3,4) (4,3)
(2,1) (3,4) (5,6)
(2,1) (3,4) (6,5)
(2,1) (4,3) (3,4)
(2,1) (4,3) (4,3)
(2,1) (4,3) (5,6)
(2,1) (4,3) (6,5)
(2,1) (5,6) (3,4)
(2,1) (5,6) (4,3)
(2,1) (5,6) (5,6)
(2,1) (5,6) (6,5)
(2,1) (6,5) (5,6)
(2,1) (6,5) (6,5)
(3,4) (3,4) (5,6)
(3,4) (3,4) (6,5)
(3,4) (4,3) (3,4)
(3,4) (4,3) (4,3)
(3,4) (4,3) (5,6)
(3,4) (4,3) (6,5)
(3,4) (5,6) (5,6)
(3,4) (5,6) (6,5)
(3,4) (6,5) (5,6)
(3,4) (6,5) (6,5)
(4,3) (3,4) (5,6)
(4,3) (3,4) (6,5)
(4,3) (4,3) (3,4)
(4,3) (4,3) (4,3)
(4,3) (4,3) (5,6)
(4,3) (4,3) (6,5)
(4,3) (5,6) (5,6)
(4,3) (5,6) (6,5)
(4,3) (6,5) (5,6)
(4,3) (6,5) (6,5)
(5,6) (3,4) (5,6)
(5,6) (3,4) (6,5)
(5,6) (4,3) (3,4)
(5,6) (4,3) (4,3)
(5,6) (4,3) (5,6)
(5,6) (4,3) (6,5)
(5,6) (5,6) (5,6)
(5,6) (5,6) (6,5)
(5,6) (6,5) (5,6)
(5,6) (6,5) (6,5)
(6,5) (6,5) (5,6)
(6,5) (6,5) (6,5)
// Node JS program for
// Print all combinations of n natural number
// whose pair element difference is one
class Combination
{
	subSequences(result, start, count, n)
	{
		if (count == n)
		{
			// Display resultant sequence
			for (var i = 0; i < n - 1; i += 2)
			{
				process.stdout.write("(" + 
                                     result[i] + "," + 
                                     result[i + 1] + ") ");
			}
			process.stdout.write("\n");
		}
		else if (count > n)
		{
			return;
		}
		else
		{
			for (var i = start; i < n; i += 2)
			{
				// Set pair element
				result[count] = i + 1;
				result[count + 1] = i + 2;
				this.subSequences(result, 
                                  start + 2, count + 2, n);
				result[count] = i + 2;
				result[count + 1] = i + 1;
				this.subSequences(result, 
                                  i, count + 2, n);
			}
		}
	}
	pairDifferences1s(n)
	{
		if (n % 2 != 0)
		{
			process.stdout.write("\n Given n : " + 
                                 n + " is not even \n");
		}
		if (n <= 0)
		{
			return;
		}
		process.stdout.write(" Given : " + n + " \n");
		// Auxiliary array which is collect result
		var result = Array(n).fill(0);
		this.subSequences(result, 0, 0, n);
	}
}

function main()
{
	var task = new Combination();
	//  Length and natural number 1..n
	var n = 4;
	/*
	    n = 4
	    ----------
	    (1,2) (3,4) 
	    (1,2) (4,3) 
	    (2,1) (1,2) 
	    (2,1) (2,1) 
	    (2,1) (3,4) 
	    (2,1) (4,3) 
	    (3,4) (3,4) 
	    (3,4) (4,3) 
	    (4,3) (3,4) 
	    (4,3) (4,3)
	  
	*/
	// Test A
	task.pairDifferences1s(n);
	n = 6;
	/*
	    n = 6
	    pair n/2 = 3 pair in each result
	    ----------
	    (1,2) (3,4) (5,6) 
	    (1,2) (3,4) (6,5) 
	    (1,2) (4,3) (3,4) 
	    (1,2) (4,3) (4,3) 
	    (1,2) (4,3) (5,6) 
	    (1,2) (4,3) (6,5) 
	    (1,2) (5,6) (5,6) 
	    (1,2) (5,6) (6,5) 
	    (1,2) (6,5) (5,6) 
	    (1,2) (6,5) (6,5) 
	    (2,1) (1,2) (3,4) 
	    (2,1) (1,2) (4,3) 
	    (2,1) (1,2) (5,6) 
	    (2,1) (1,2) (6,5) 
	    (2,1) (2,1) (1,2) 
	    (2,1) (2,1) (2,1) 
	    (2,1) (2,1) (3,4) 
	    (2,1) (2,1) (4,3) 
	    (2,1) (2,1) (5,6) 
	    (2,1) (2,1) (6,5) 
	    (2,1) (3,4) (3,4) 
	    (2,1) (3,4) (4,3) 
	    (2,1) (3,4) (5,6) 
	    (2,1) (3,4) (6,5) 
	    (2,1) (4,3) (3,4) 
	    (2,1) (4,3) (4,3) 
	    (2,1) (4,3) (5,6) 
	    (2,1) (4,3) (6,5) 
	    (2,1) (5,6) (3,4) 
	    (2,1) (5,6) (4,3) 
	    (2,1) (5,6) (5,6) 
	    (2,1) (5,6) (6,5) 
	    (2,1) (6,5) (5,6) 
	    (2,1) (6,5) (6,5) 
	    (3,4) (3,4) (5,6) 
	    (3,4) (3,4) (6,5) 
	    (3,4) (4,3) (3,4) 
	    (3,4) (4,3) (4,3) 
	    (3,4) (4,3) (5,6) 
	    (3,4) (4,3) (6,5) 
	    (3,4) (5,6) (5,6) 
	    (3,4) (5,6) (6,5) 
	    (3,4) (6,5) (5,6) 
	    (3,4) (6,5) (6,5) 
	    (4,3) (3,4) (5,6) 
	    (4,3) (3,4) (6,5) 
	    (4,3) (4,3) (3,4) 
	    (4,3) (4,3) (4,3) 
	    (4,3) (4,3) (5,6) 
	    (4,3) (4,3) (6,5) 
	    (4,3) (5,6) (5,6) 
	    (4,3) (5,6) (6,5) 
	    (4,3) (6,5) (5,6) 
	    (4,3) (6,5) (6,5) 
	    (5,6) (3,4) (5,6) 
	    (5,6) (3,4) (6,5) 
	    (5,6) (4,3) (3,4) 
	    (5,6) (4,3) (4,3) 
	    (5,6) (4,3) (5,6) 
	    (5,6) (4,3) (6,5) 
	    (5,6) (5,6) (5,6) 
	    (5,6) (5,6) (6,5) 
	    (5,6) (6,5) (5,6) 
	    (5,6) (6,5) (6,5) 
	    (6,5) (6,5) (5,6) 
	    (6,5) (6,5) (6,5)
	  
	*/
	// Test B
	task.pairDifferences1s(n);
}
main();

Output

 Given : 4
(1,2) (3,4)
(1,2) (4,3)
(2,1) (1,2)
(2,1) (2,1)
(2,1) (3,4)
(2,1) (4,3)
(3,4) (3,4)
(3,4) (4,3)
(4,3) (3,4)
(4,3) (4,3)
 Given : 6
(1,2) (3,4) (5,6)
(1,2) (3,4) (6,5)
(1,2) (4,3) (3,4)
(1,2) (4,3) (4,3)
(1,2) (4,3) (5,6)
(1,2) (4,3) (6,5)
(1,2) (5,6) (5,6)
(1,2) (5,6) (6,5)
(1,2) (6,5) (5,6)
(1,2) (6,5) (6,5)
(2,1) (1,2) (3,4)
(2,1) (1,2) (4,3)
(2,1) (1,2) (5,6)
(2,1) (1,2) (6,5)
(2,1) (2,1) (1,2)
(2,1) (2,1) (2,1)
(2,1) (2,1) (3,4)
(2,1) (2,1) (4,3)
(2,1) (2,1) (5,6)
(2,1) (2,1) (6,5)
(2,1) (3,4) (3,4)
(2,1) (3,4) (4,3)
(2,1) (3,4) (5,6)
(2,1) (3,4) (6,5)
(2,1) (4,3) (3,4)
(2,1) (4,3) (4,3)
(2,1) (4,3) (5,6)
(2,1) (4,3) (6,5)
(2,1) (5,6) (3,4)
(2,1) (5,6) (4,3)
(2,1) (5,6) (5,6)
(2,1) (5,6) (6,5)
(2,1) (6,5) (5,6)
(2,1) (6,5) (6,5)
(3,4) (3,4) (5,6)
(3,4) (3,4) (6,5)
(3,4) (4,3) (3,4)
(3,4) (4,3) (4,3)
(3,4) (4,3) (5,6)
(3,4) (4,3) (6,5)
(3,4) (5,6) (5,6)
(3,4) (5,6) (6,5)
(3,4) (6,5) (5,6)
(3,4) (6,5) (6,5)
(4,3) (3,4) (5,6)
(4,3) (3,4) (6,5)
(4,3) (4,3) (3,4)
(4,3) (4,3) (4,3)
(4,3) (4,3) (5,6)
(4,3) (4,3) (6,5)
(4,3) (5,6) (5,6)
(4,3) (5,6) (6,5)
(4,3) (6,5) (5,6)
(4,3) (6,5) (6,5)
(5,6) (3,4) (5,6)
(5,6) (3,4) (6,5)
(5,6) (4,3) (3,4)
(5,6) (4,3) (4,3)
(5,6) (4,3) (5,6)
(5,6) (4,3) (6,5)
(5,6) (5,6) (5,6)
(5,6) (5,6) (6,5)
(5,6) (6,5) (5,6)
(5,6) (6,5) (6,5)
(6,5) (6,5) (5,6)
(6,5) (6,5) (6,5)
#  Python 3 program for
#  Print all combinations of n natural number
#  whose pair element difference is one
class Combination :
	def subSequences(self, result, start, count, n) :
		if (count == n) :
			i = 0
			#  Display resultant sequence
			while (i < n - 1) :
				print("(", 
                      result[i] ,",", 
                      result[i + 1] ,") ", 
                      end = "",sep = "")
				i += 2
			
			print(end = "\n")
		elif (count > n) :
			return
		else :
			i = start
			while (i < n) :
				#  Set pair element
				result[count] = i + 1
				result[count + 1] = i + 2
				self.subSequences(result, 
                                  start + 2, 
                                  count + 2, 
                                  n)
				result[count] = i + 2
				result[count + 1] = i + 1
				self.subSequences(result, 
                                  i, 
                                  count + 2,
                                  n)
				i += 2
			
		
	
	def pairDifferences1s(self, n) :
		if (n % 2 != 0) :
			print("\n Given n : ", n ," is not even ")
		
		if (n <= 0) :
			return
		
		print(" Given : ", n ," ")
		#  Auxiliary list which is collect result
		result = [0] * (n)
		self.subSequences(result, 0, 0, n)
	

def main() :
	task = Combination()
	#   Length and natural number 1..n
	n = 4
	#    n = 4
	#    ----------
	#    (1,2) (3,4) 
	#    (1,2) (4,3) 
	#    (2,1) (1,2) 
	#    (2,1) (2,1) 
	#    (2,1) (3,4) 
	#    (2,1) (4,3) 
	#    (3,4) (3,4) 
	#    (3,4) (4,3) 
	#    (4,3) (3,4) 
	#    (4,3) (4,3)
	#  Test A
	task.pairDifferences1s(n)
	n = 6
	#    n = 6
	#    pair n/2 = 3 pair in each result
	#    ----------
	#    (1,2) (3,4) (5,6) 
	#    (1,2) (3,4) (6,5) 
	#    (1,2) (4,3) (3,4) 
	#    (1,2) (4,3) (4,3) 
	#    (1,2) (4,3) (5,6) 
	#    (1,2) (4,3) (6,5) 
	#    (1,2) (5,6) (5,6) 
	#    (1,2) (5,6) (6,5) 
	#    (1,2) (6,5) (5,6) 
	#    (1,2) (6,5) (6,5) 
	#    (2,1) (1,2) (3,4) 
	#    (2,1) (1,2) (4,3) 
	#    (2,1) (1,2) (5,6) 
	#    (2,1) (1,2) (6,5) 
	#    (2,1) (2,1) (1,2) 
	#    (2,1) (2,1) (2,1) 
	#    (2,1) (2,1) (3,4) 
	#    (2,1) (2,1) (4,3) 
	#    (2,1) (2,1) (5,6) 
	#    (2,1) (2,1) (6,5) 
	#    (2,1) (3,4) (3,4) 
	#    (2,1) (3,4) (4,3) 
	#    (2,1) (3,4) (5,6) 
	#    (2,1) (3,4) (6,5) 
	#    (2,1) (4,3) (3,4) 
	#    (2,1) (4,3) (4,3) 
	#    (2,1) (4,3) (5,6) 
	#    (2,1) (4,3) (6,5) 
	#    (2,1) (5,6) (3,4) 
	#    (2,1) (5,6) (4,3) 
	#    (2,1) (5,6) (5,6) 
	#    (2,1) (5,6) (6,5) 
	#    (2,1) (6,5) (5,6) 
	#    (2,1) (6,5) (6,5) 
	#    (3,4) (3,4) (5,6) 
	#    (3,4) (3,4) (6,5) 
	#    (3,4) (4,3) (3,4) 
	#    (3,4) (4,3) (4,3) 
	#    (3,4) (4,3) (5,6) 
	#    (3,4) (4,3) (6,5) 
	#    (3,4) (5,6) (5,6) 
	#    (3,4) (5,6) (6,5) 
	#    (3,4) (6,5) (5,6) 
	#    (3,4) (6,5) (6,5) 
	#    (4,3) (3,4) (5,6) 
	#    (4,3) (3,4) (6,5) 
	#    (4,3) (4,3) (3,4) 
	#    (4,3) (4,3) (4,3) 
	#    (4,3) (4,3) (5,6) 
	#    (4,3) (4,3) (6,5) 
	#    (4,3) (5,6) (5,6) 
	#    (4,3) (5,6) (6,5) 
	#    (4,3) (6,5) (5,6) 
	#    (4,3) (6,5) (6,5) 
	#    (5,6) (3,4) (5,6) 
	#    (5,6) (3,4) (6,5) 
	#    (5,6) (4,3) (3,4) 
	#    (5,6) (4,3) (4,3) 
	#    (5,6) (4,3) (5,6) 
	#    (5,6) (4,3) (6,5) 
	#    (5,6) (5,6) (5,6) 
	#    (5,6) (5,6) (6,5) 
	#    (5,6) (6,5) (5,6) 
	#    (5,6) (6,5) (6,5) 
	#    (6,5) (6,5) (5,6) 
	#    (6,5) (6,5) (6,5)
	#  Test B
	task.pairDifferences1s(n)

if __name__ == "__main__": main()

Output

 Given :  4
(1,2) (3,4)
(1,2) (4,3)
(2,1) (1,2)
(2,1) (2,1)
(2,1) (3,4)
(2,1) (4,3)
(3,4) (3,4)
(3,4) (4,3)
(4,3) (3,4)
(4,3) (4,3)
 Given :  6
(1,2) (3,4) (5,6)
(1,2) (3,4) (6,5)
(1,2) (4,3) (3,4)
(1,2) (4,3) (4,3)
(1,2) (4,3) (5,6)
(1,2) (4,3) (6,5)
(1,2) (5,6) (5,6)
(1,2) (5,6) (6,5)
(1,2) (6,5) (5,6)
(1,2) (6,5) (6,5)
(2,1) (1,2) (3,4)
(2,1) (1,2) (4,3)
(2,1) (1,2) (5,6)
(2,1) (1,2) (6,5)
(2,1) (2,1) (1,2)
(2,1) (2,1) (2,1)
(2,1) (2,1) (3,4)
(2,1) (2,1) (4,3)
(2,1) (2,1) (5,6)
(2,1) (2,1) (6,5)
(2,1) (3,4) (3,4)
(2,1) (3,4) (4,3)
(2,1) (3,4) (5,6)
(2,1) (3,4) (6,5)
(2,1) (4,3) (3,4)
(2,1) (4,3) (4,3)
(2,1) (4,3) (5,6)
(2,1) (4,3) (6,5)
(2,1) (5,6) (3,4)
(2,1) (5,6) (4,3)
(2,1) (5,6) (5,6)
(2,1) (5,6) (6,5)
(2,1) (6,5) (5,6)
(2,1) (6,5) (6,5)
(3,4) (3,4) (5,6)
(3,4) (3,4) (6,5)
(3,4) (4,3) (3,4)
(3,4) (4,3) (4,3)
(3,4) (4,3) (5,6)
(3,4) (4,3) (6,5)
(3,4) (5,6) (5,6)
(3,4) (5,6) (6,5)
(3,4) (6,5) (5,6)
(3,4) (6,5) (6,5)
(4,3) (3,4) (5,6)
(4,3) (3,4) (6,5)
(4,3) (4,3) (3,4)
(4,3) (4,3) (4,3)
(4,3) (4,3) (5,6)
(4,3) (4,3) (6,5)
(4,3) (5,6) (5,6)
(4,3) (5,6) (6,5)
(4,3) (6,5) (5,6)
(4,3) (6,5) (6,5)
(5,6) (3,4) (5,6)
(5,6) (3,4) (6,5)
(5,6) (4,3) (3,4)
(5,6) (4,3) (4,3)
(5,6) (4,3) (5,6)
(5,6) (4,3) (6,5)
(5,6) (5,6) (5,6)
(5,6) (5,6) (6,5)
(5,6) (6,5) (5,6)
(5,6) (6,5) (6,5)
(6,5) (6,5) (5,6)
(6,5) (6,5) (6,5)
#  Ruby program for
#  Print all combinations of n natural number
#  whose pair element difference is one
class Combination 
	def subSequences(result, start, count, n) 
		if (count == n) 
			i = 0
			#  Display resultant sequence
			while (i < n - 1) 
				print("(", result[i] ,",", 
                      result[i + 1] ,") ")
				i += 2
			end

			print("\n")
		elsif (count > n) 
			return
		else
 
			i = start
			while (i < n) 
				#  Set pair element
				result[count] = i + 1
				result[count + 1] = i + 2
				self.subSequences(result, 
                                  start + 2, 
                                  count + 2, n)
				result[count] = i + 2
				result[count + 1] = i + 1
				self.subSequences(result, 
                                  i, 
                                  count + 2, 
                                  n)
				i += 2
			end

		end

	end

	def pairDifferences1s(n) 
		if (n % 2 != 0) 
			print("\n Given n : ", 
                  n ," is not even \n")
		end

		if (n <= 0) 
			return
		end

		print(" Given : ", n ," \n")
		#  Auxiliary array which is collect result
		result = Array.new(n) {0}
		self.subSequences(result, 0, 0, n)
	end

end

def main() 
	task = Combination.new()
	#   Length and natural number 1..n
	n = 4
	#    n = 4
	#    ----------
	#    (1,2) (3,4) 
	#    (1,2) (4,3) 
	#    (2,1) (1,2) 
	#    (2,1) (2,1) 
	#    (2,1) (3,4) 
	#    (2,1) (4,3) 
	#    (3,4) (3,4) 
	#    (3,4) (4,3) 
	#    (4,3) (3,4) 
	#    (4,3) (4,3)
	#  Test A
	task.pairDifferences1s(n)
	n = 6
	#    n = 6
	#    pair n/2 = 3 pair in each result
	#    ----------
	#    (1,2) (3,4) (5,6) 
	#    (1,2) (3,4) (6,5) 
	#    (1,2) (4,3) (3,4) 
	#    (1,2) (4,3) (4,3) 
	#    (1,2) (4,3) (5,6) 
	#    (1,2) (4,3) (6,5) 
	#    (1,2) (5,6) (5,6) 
	#    (1,2) (5,6) (6,5) 
	#    (1,2) (6,5) (5,6) 
	#    (1,2) (6,5) (6,5) 
	#    (2,1) (1,2) (3,4) 
	#    (2,1) (1,2) (4,3) 
	#    (2,1) (1,2) (5,6) 
	#    (2,1) (1,2) (6,5) 
	#    (2,1) (2,1) (1,2) 
	#    (2,1) (2,1) (2,1) 
	#    (2,1) (2,1) (3,4) 
	#    (2,1) (2,1) (4,3) 
	#    (2,1) (2,1) (5,6) 
	#    (2,1) (2,1) (6,5) 
	#    (2,1) (3,4) (3,4) 
	#    (2,1) (3,4) (4,3) 
	#    (2,1) (3,4) (5,6) 
	#    (2,1) (3,4) (6,5) 
	#    (2,1) (4,3) (3,4) 
	#    (2,1) (4,3) (4,3) 
	#    (2,1) (4,3) (5,6) 
	#    (2,1) (4,3) (6,5) 
	#    (2,1) (5,6) (3,4) 
	#    (2,1) (5,6) (4,3) 
	#    (2,1) (5,6) (5,6) 
	#    (2,1) (5,6) (6,5) 
	#    (2,1) (6,5) (5,6) 
	#    (2,1) (6,5) (6,5) 
	#    (3,4) (3,4) (5,6) 
	#    (3,4) (3,4) (6,5) 
	#    (3,4) (4,3) (3,4) 
	#    (3,4) (4,3) (4,3) 
	#    (3,4) (4,3) (5,6) 
	#    (3,4) (4,3) (6,5) 
	#    (3,4) (5,6) (5,6) 
	#    (3,4) (5,6) (6,5) 
	#    (3,4) (6,5) (5,6) 
	#    (3,4) (6,5) (6,5) 
	#    (4,3) (3,4) (5,6) 
	#    (4,3) (3,4) (6,5) 
	#    (4,3) (4,3) (3,4) 
	#    (4,3) (4,3) (4,3) 
	#    (4,3) (4,3) (5,6) 
	#    (4,3) (4,3) (6,5) 
	#    (4,3) (5,6) (5,6) 
	#    (4,3) (5,6) (6,5) 
	#    (4,3) (6,5) (5,6) 
	#    (4,3) (6,5) (6,5) 
	#    (5,6) (3,4) (5,6) 
	#    (5,6) (3,4) (6,5) 
	#    (5,6) (4,3) (3,4) 
	#    (5,6) (4,3) (4,3) 
	#    (5,6) (4,3) (5,6) 
	#    (5,6) (4,3) (6,5) 
	#    (5,6) (5,6) (5,6) 
	#    (5,6) (5,6) (6,5) 
	#    (5,6) (6,5) (5,6) 
	#    (5,6) (6,5) (6,5) 
	#    (6,5) (6,5) (5,6) 
	#    (6,5) (6,5) (6,5)
	#  Test B
	task.pairDifferences1s(n)
end

main()

Output

 Given : 4 
(1,2) (3,4) 
(1,2) (4,3) 
(2,1) (1,2) 
(2,1) (2,1) 
(2,1) (3,4) 
(2,1) (4,3) 
(3,4) (3,4) 
(3,4) (4,3) 
(4,3) (3,4) 
(4,3) (4,3) 
 Given : 6 
(1,2) (3,4) (5,6) 
(1,2) (3,4) (6,5) 
(1,2) (4,3) (3,4) 
(1,2) (4,3) (4,3) 
(1,2) (4,3) (5,6) 
(1,2) (4,3) (6,5) 
(1,2) (5,6) (5,6) 
(1,2) (5,6) (6,5) 
(1,2) (6,5) (5,6) 
(1,2) (6,5) (6,5) 
(2,1) (1,2) (3,4) 
(2,1) (1,2) (4,3) 
(2,1) (1,2) (5,6) 
(2,1) (1,2) (6,5) 
(2,1) (2,1) (1,2) 
(2,1) (2,1) (2,1) 
(2,1) (2,1) (3,4) 
(2,1) (2,1) (4,3) 
(2,1) (2,1) (5,6) 
(2,1) (2,1) (6,5) 
(2,1) (3,4) (3,4) 
(2,1) (3,4) (4,3) 
(2,1) (3,4) (5,6) 
(2,1) (3,4) (6,5) 
(2,1) (4,3) (3,4) 
(2,1) (4,3) (4,3) 
(2,1) (4,3) (5,6) 
(2,1) (4,3) (6,5) 
(2,1) (5,6) (3,4) 
(2,1) (5,6) (4,3) 
(2,1) (5,6) (5,6) 
(2,1) (5,6) (6,5) 
(2,1) (6,5) (5,6) 
(2,1) (6,5) (6,5) 
(3,4) (3,4) (5,6) 
(3,4) (3,4) (6,5) 
(3,4) (4,3) (3,4) 
(3,4) (4,3) (4,3) 
(3,4) (4,3) (5,6) 
(3,4) (4,3) (6,5) 
(3,4) (5,6) (5,6) 
(3,4) (5,6) (6,5) 
(3,4) (6,5) (5,6) 
(3,4) (6,5) (6,5) 
(4,3) (3,4) (5,6) 
(4,3) (3,4) (6,5) 
(4,3) (4,3) (3,4) 
(4,3) (4,3) (4,3) 
(4,3) (4,3) (5,6) 
(4,3) (4,3) (6,5) 
(4,3) (5,6) (5,6) 
(4,3) (5,6) (6,5) 
(4,3) (6,5) (5,6) 
(4,3) (6,5) (6,5) 
(5,6) (3,4) (5,6) 
(5,6) (3,4) (6,5) 
(5,6) (4,3) (3,4) 
(5,6) (4,3) (4,3) 
(5,6) (4,3) (5,6) 
(5,6) (4,3) (6,5) 
(5,6) (5,6) (5,6) 
(5,6) (5,6) (6,5) 
(5,6) (6,5) (5,6) 
(5,6) (6,5) (6,5) 
(6,5) (6,5) (5,6) 
(6,5) (6,5) (6,5) 
// Scala program for
// Print all combinations of n natural number
// whose pair element difference is one
class Combination()
{
	def subSequences(result: Array[Int], 
      start: Int, count: Int, 
        n: Int): Unit = {
		if (count == n)
		{
			var i: Int = 0;
			// Display resultant sequence
			while (i < n - 1)
			{
				print("(" + result(i) + "," + 
                      result(i + 1) + ") ");
				i += 2;
			}
			print("\n");
		}
		else if (count > n)
		{
			return;
		}
		else
		{
			var i: Int = start;
			while (i < n)
			{
				// Set pair element
				result(count) = i + 1;
				result(count + 1) = i + 2;
				subSequences(result, 
                             start + 2, 
                             count + 2, 
                             n);
				result(count) = i + 2;
				result(count + 1) = i + 1;
				subSequences(result, i, count + 2, n);
				i += 2;
			}
		}
	}
	def pairDifferences1s(n: Int): Unit = {
		if (n % 2 != 0)
		{
			print("\n Given n : " + n + " is not even \n");
		}
		if (n <= 0)
		{
			return;
		}
		print(" Given : " + n + " \n");
		// Auxiliary array which is collect result
		var result: Array[Int] = Array.fill[Int](n)(0);
		subSequences(result, 0, 0, n);
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var task: Combination = new Combination();
		//  Length and natural number 1..n
		var n: Int = 4;
		/*
		    n = 4
		    ----------
		    (1,2) (3,4) 
		    (1,2) (4,3) 
		    (2,1) (1,2) 
		    (2,1) (2,1) 
		    (2,1) (3,4) 
		    (2,1) (4,3) 
		    (3,4) (3,4) 
		    (3,4) (4,3) 
		    (4,3) (3,4) 
		    (4,3) (4,3)
		  
		*/
		// Test A
		task.pairDifferences1s(n);
		n = 6;
		/*
		    n = 6
		    pair n/2 = 3 pair in each result
		    ----------
		    (1,2) (3,4) (5,6) 
		    (1,2) (3,4) (6,5) 
		    (1,2) (4,3) (3,4) 
		    (1,2) (4,3) (4,3) 
		    (1,2) (4,3) (5,6) 
		    (1,2) (4,3) (6,5) 
		    (1,2) (5,6) (5,6) 
		    (1,2) (5,6) (6,5) 
		    (1,2) (6,5) (5,6) 
		    (1,2) (6,5) (6,5) 
		    (2,1) (1,2) (3,4) 
		    (2,1) (1,2) (4,3) 
		    (2,1) (1,2) (5,6) 
		    (2,1) (1,2) (6,5) 
		    (2,1) (2,1) (1,2) 
		    (2,1) (2,1) (2,1) 
		    (2,1) (2,1) (3,4) 
		    (2,1) (2,1) (4,3) 
		    (2,1) (2,1) (5,6) 
		    (2,1) (2,1) (6,5) 
		    (2,1) (3,4) (3,4) 
		    (2,1) (3,4) (4,3) 
		    (2,1) (3,4) (5,6) 
		    (2,1) (3,4) (6,5) 
		    (2,1) (4,3) (3,4) 
		    (2,1) (4,3) (4,3) 
		    (2,1) (4,3) (5,6) 
		    (2,1) (4,3) (6,5) 
		    (2,1) (5,6) (3,4) 
		    (2,1) (5,6) (4,3) 
		    (2,1) (5,6) (5,6) 
		    (2,1) (5,6) (6,5) 
		    (2,1) (6,5) (5,6) 
		    (2,1) (6,5) (6,5) 
		    (3,4) (3,4) (5,6) 
		    (3,4) (3,4) (6,5) 
		    (3,4) (4,3) (3,4) 
		    (3,4) (4,3) (4,3) 
		    (3,4) (4,3) (5,6) 
		    (3,4) (4,3) (6,5) 
		    (3,4) (5,6) (5,6) 
		    (3,4) (5,6) (6,5) 
		    (3,4) (6,5) (5,6) 
		    (3,4) (6,5) (6,5) 
		    (4,3) (3,4) (5,6) 
		    (4,3) (3,4) (6,5) 
		    (4,3) (4,3) (3,4) 
		    (4,3) (4,3) (4,3) 
		    (4,3) (4,3) (5,6) 
		    (4,3) (4,3) (6,5) 
		    (4,3) (5,6) (5,6) 
		    (4,3) (5,6) (6,5) 
		    (4,3) (6,5) (5,6) 
		    (4,3) (6,5) (6,5) 
		    (5,6) (3,4) (5,6) 
		    (5,6) (3,4) (6,5) 
		    (5,6) (4,3) (3,4) 
		    (5,6) (4,3) (4,3) 
		    (5,6) (4,3) (5,6) 
		    (5,6) (4,3) (6,5) 
		    (5,6) (5,6) (5,6) 
		    (5,6) (5,6) (6,5) 
		    (5,6) (6,5) (5,6) 
		    (5,6) (6,5) (6,5) 
		    (6,5) (6,5) (5,6) 
		    (6,5) (6,5) (6,5)
		  
		*/
		// Test B
		task.pairDifferences1s(n);
	}
}

Output

 Given : 4
(1,2) (3,4)
(1,2) (4,3)
(2,1) (1,2)
(2,1) (2,1)
(2,1) (3,4)
(2,1) (4,3)
(3,4) (3,4)
(3,4) (4,3)
(4,3) (3,4)
(4,3) (4,3)
 Given : 6
(1,2) (3,4) (5,6)
(1,2) (3,4) (6,5)
(1,2) (4,3) (3,4)
(1,2) (4,3) (4,3)
(1,2) (4,3) (5,6)
(1,2) (4,3) (6,5)
(1,2) (5,6) (5,6)
(1,2) (5,6) (6,5)
(1,2) (6,5) (5,6)
(1,2) (6,5) (6,5)
(2,1) (1,2) (3,4)
(2,1) (1,2) (4,3)
(2,1) (1,2) (5,6)
(2,1) (1,2) (6,5)
(2,1) (2,1) (1,2)
(2,1) (2,1) (2,1)
(2,1) (2,1) (3,4)
(2,1) (2,1) (4,3)
(2,1) (2,1) (5,6)
(2,1) (2,1) (6,5)
(2,1) (3,4) (3,4)
(2,1) (3,4) (4,3)
(2,1) (3,4) (5,6)
(2,1) (3,4) (6,5)
(2,1) (4,3) (3,4)
(2,1) (4,3) (4,3)
(2,1) (4,3) (5,6)
(2,1) (4,3) (6,5)
(2,1) (5,6) (3,4)
(2,1) (5,6) (4,3)
(2,1) (5,6) (5,6)
(2,1) (5,6) (6,5)
(2,1) (6,5) (5,6)
(2,1) (6,5) (6,5)
(3,4) (3,4) (5,6)
(3,4) (3,4) (6,5)
(3,4) (4,3) (3,4)
(3,4) (4,3) (4,3)
(3,4) (4,3) (5,6)
(3,4) (4,3) (6,5)
(3,4) (5,6) (5,6)
(3,4) (5,6) (6,5)
(3,4) (6,5) (5,6)
(3,4) (6,5) (6,5)
(4,3) (3,4) (5,6)
(4,3) (3,4) (6,5)
(4,3) (4,3) (3,4)
(4,3) (4,3) (4,3)
(4,3) (4,3) (5,6)
(4,3) (4,3) (6,5)
(4,3) (5,6) (5,6)
(4,3) (5,6) (6,5)
(4,3) (6,5) (5,6)
(4,3) (6,5) (6,5)
(5,6) (3,4) (5,6)
(5,6) (3,4) (6,5)
(5,6) (4,3) (3,4)
(5,6) (4,3) (4,3)
(5,6) (4,3) (5,6)
(5,6) (4,3) (6,5)
(5,6) (5,6) (5,6)
(5,6) (5,6) (6,5)
(5,6) (6,5) (5,6)
(5,6) (6,5) (6,5)
(6,5) (6,5) (5,6)
(6,5) (6,5) (6,5)
// Swift 4 program for
// Print all combinations of n natural number
// whose pair element difference is one
class Combination
{
	func subSequences(_ result: inout[Int], 
  	_ start: Int, 
    _ count: Int, 
      _ n: Int)
	{
		if (count == n)
		{
			var i: Int = 0;
			// Display resultant sequence
			while (i < n - 1)
			{
				print("(", result[i] ,",",
                      result[i + 1] ,") ", 
                      terminator: "");
				i += 2;
			}
			print(terminator: "\n");
		}
		else if (count > n)
		{
			return;
		}
		else
		{
			var i: Int = start;
			while (i < n)
			{
				// Set pair element
				result[count] = i + 1;
				result[count + 1] = i + 2;
				self.subSequences(&result, start + 2, count + 2, n);
				result[count] = i + 2;
				result[count + 1] = i + 1;
				self.subSequences(&result, i, count + 2, n);
				i += 2;
			}
		}
	}
	func pairDifferences1s(_ n: Int)
	{
		if (n % 2  != 0)
		{
			print("\n Given n : ", n ," is not even ");
		}
		if (n <= 0)
		{
			return;
		}
		print(" Given : ", n ," ");
		// Auxiliary array which is collect result
		var result: [Int] = Array(repeating: 0, count: n);
		self.subSequences(&result, 0, 0, n);
	}
}
func main()
{
	let task: Combination = Combination();
	//  Length and natural number 1..n
	var n: Int = 4;
	/*
	    n = 4
	    ----------
	    (1,2) (3,4) 
	    (1,2) (4,3) 
	    (2,1) (1,2) 
	    (2,1) (2,1) 
	    (2,1) (3,4) 
	    (2,1) (4,3) 
	    (3,4) (3,4) 
	    (3,4) (4,3) 
	    (4,3) (3,4) 
	    (4,3) (4,3)
	  
	*/
	// Test A
	task.pairDifferences1s(n);
	n = 6;
	/*
	    n = 6
	    pair n/2 = 3 pair in each result
	    ----------
	    (1,2) (3,4) (5,6) 
	    (1,2) (3,4) (6,5) 
	    (1,2) (4,3) (3,4) 
	    (1,2) (4,3) (4,3) 
	    (1,2) (4,3) (5,6) 
	    (1,2) (4,3) (6,5) 
	    (1,2) (5,6) (5,6) 
	    (1,2) (5,6) (6,5) 
	    (1,2) (6,5) (5,6) 
	    (1,2) (6,5) (6,5) 
	    (2,1) (1,2) (3,4) 
	    (2,1) (1,2) (4,3) 
	    (2,1) (1,2) (5,6) 
	    (2,1) (1,2) (6,5) 
	    (2,1) (2,1) (1,2) 
	    (2,1) (2,1) (2,1) 
	    (2,1) (2,1) (3,4) 
	    (2,1) (2,1) (4,3) 
	    (2,1) (2,1) (5,6) 
	    (2,1) (2,1) (6,5) 
	    (2,1) (3,4) (3,4) 
	    (2,1) (3,4) (4,3) 
	    (2,1) (3,4) (5,6) 
	    (2,1) (3,4) (6,5) 
	    (2,1) (4,3) (3,4) 
	    (2,1) (4,3) (4,3) 
	    (2,1) (4,3) (5,6) 
	    (2,1) (4,3) (6,5) 
	    (2,1) (5,6) (3,4) 
	    (2,1) (5,6) (4,3) 
	    (2,1) (5,6) (5,6) 
	    (2,1) (5,6) (6,5) 
	    (2,1) (6,5) (5,6) 
	    (2,1) (6,5) (6,5) 
	    (3,4) (3,4) (5,6) 
	    (3,4) (3,4) (6,5) 
	    (3,4) (4,3) (3,4) 
	    (3,4) (4,3) (4,3) 
	    (3,4) (4,3) (5,6) 
	    (3,4) (4,3) (6,5) 
	    (3,4) (5,6) (5,6) 
	    (3,4) (5,6) (6,5) 
	    (3,4) (6,5) (5,6) 
	    (3,4) (6,5) (6,5) 
	    (4,3) (3,4) (5,6) 
	    (4,3) (3,4) (6,5) 
	    (4,3) (4,3) (3,4) 
	    (4,3) (4,3) (4,3) 
	    (4,3) (4,3) (5,6) 
	    (4,3) (4,3) (6,5) 
	    (4,3) (5,6) (5,6) 
	    (4,3) (5,6) (6,5) 
	    (4,3) (6,5) (5,6) 
	    (4,3) (6,5) (6,5) 
	    (5,6) (3,4) (5,6) 
	    (5,6) (3,4) (6,5) 
	    (5,6) (4,3) (3,4) 
	    (5,6) (4,3) (4,3) 
	    (5,6) (4,3) (5,6) 
	    (5,6) (4,3) (6,5) 
	    (5,6) (5,6) (5,6) 
	    (5,6) (5,6) (6,5) 
	    (5,6) (6,5) (5,6) 
	    (5,6) (6,5) (6,5) 
	    (6,5) (6,5) (5,6) 
	    (6,5) (6,5) (6,5)
	  
	*/
	// Test B
	task.pairDifferences1s(n);
}
main();

Output

 Given :  4
( 1 , 2 ) ( 3 , 4 )
( 1 , 2 ) ( 4 , 3 )
( 2 , 1 ) ( 1 , 2 )
( 2 , 1 ) ( 2 , 1 )
( 2 , 1 ) ( 3 , 4 )
( 2 , 1 ) ( 4 , 3 )
( 3 , 4 ) ( 3 , 4 )
( 3 , 4 ) ( 4 , 3 )
( 4 , 3 ) ( 3 , 4 )
( 4 , 3 ) ( 4 , 3 )
 Given :  6
( 1 , 2 ) ( 3 , 4 ) ( 5 , 6 )
( 1 , 2 ) ( 3 , 4 ) ( 6 , 5 )
( 1 , 2 ) ( 4 , 3 ) ( 3 , 4 )
( 1 , 2 ) ( 4 , 3 ) ( 4 , 3 )
( 1 , 2 ) ( 4 , 3 ) ( 5 , 6 )
( 1 , 2 ) ( 4 , 3 ) ( 6 , 5 )
( 1 , 2 ) ( 5 , 6 ) ( 5 , 6 )
( 1 , 2 ) ( 5 , 6 ) ( 6 , 5 )
( 1 , 2 ) ( 6 , 5 ) ( 5 , 6 )
( 1 , 2 ) ( 6 , 5 ) ( 6 , 5 )
( 2 , 1 ) ( 1 , 2 ) ( 3 , 4 )
( 2 , 1 ) ( 1 , 2 ) ( 4 , 3 )
( 2 , 1 ) ( 1 , 2 ) ( 5 , 6 )
( 2 , 1 ) ( 1 , 2 ) ( 6 , 5 )
( 2 , 1 ) ( 2 , 1 ) ( 1 , 2 )
( 2 , 1 ) ( 2 , 1 ) ( 2 , 1 )
( 2 , 1 ) ( 2 , 1 ) ( 3 , 4 )
( 2 , 1 ) ( 2 , 1 ) ( 4 , 3 )
( 2 , 1 ) ( 2 , 1 ) ( 5 , 6 )
( 2 , 1 ) ( 2 , 1 ) ( 6 , 5 )
( 2 , 1 ) ( 3 , 4 ) ( 3 , 4 )
( 2 , 1 ) ( 3 , 4 ) ( 4 , 3 )
( 2 , 1 ) ( 3 , 4 ) ( 5 , 6 )
( 2 , 1 ) ( 3 , 4 ) ( 6 , 5 )
( 2 , 1 ) ( 4 , 3 ) ( 3 , 4 )
( 2 , 1 ) ( 4 , 3 ) ( 4 , 3 )
( 2 , 1 ) ( 4 , 3 ) ( 5 , 6 )
( 2 , 1 ) ( 4 , 3 ) ( 6 , 5 )
( 2 , 1 ) ( 5 , 6 ) ( 3 , 4 )
( 2 , 1 ) ( 5 , 6 ) ( 4 , 3 )
( 2 , 1 ) ( 5 , 6 ) ( 5 , 6 )
( 2 , 1 ) ( 5 , 6 ) ( 6 , 5 )
( 2 , 1 ) ( 6 , 5 ) ( 5 , 6 )
( 2 , 1 ) ( 6 , 5 ) ( 6 , 5 )
( 3 , 4 ) ( 3 , 4 ) ( 5 , 6 )
( 3 , 4 ) ( 3 , 4 ) ( 6 , 5 )
( 3 , 4 ) ( 4 , 3 ) ( 3 , 4 )
( 3 , 4 ) ( 4 , 3 ) ( 4 , 3 )
( 3 , 4 ) ( 4 , 3 ) ( 5 , 6 )
( 3 , 4 ) ( 4 , 3 ) ( 6 , 5 )
( 3 , 4 ) ( 5 , 6 ) ( 5 , 6 )
( 3 , 4 ) ( 5 , 6 ) ( 6 , 5 )
( 3 , 4 ) ( 6 , 5 ) ( 5 , 6 )
( 3 , 4 ) ( 6 , 5 ) ( 6 , 5 )
( 4 , 3 ) ( 3 , 4 ) ( 5 , 6 )
( 4 , 3 ) ( 3 , 4 ) ( 6 , 5 )
( 4 , 3 ) ( 4 , 3 ) ( 3 , 4 )
( 4 , 3 ) ( 4 , 3 ) ( 4 , 3 )
( 4 , 3 ) ( 4 , 3 ) ( 5 , 6 )
( 4 , 3 ) ( 4 , 3 ) ( 6 , 5 )
( 4 , 3 ) ( 5 , 6 ) ( 5 , 6 )
( 4 , 3 ) ( 5 , 6 ) ( 6 , 5 )
( 4 , 3 ) ( 6 , 5 ) ( 5 , 6 )
( 4 , 3 ) ( 6 , 5 ) ( 6 , 5 )
( 5 , 6 ) ( 3 , 4 ) ( 5 , 6 )
( 5 , 6 ) ( 3 , 4 ) ( 6 , 5 )
( 5 , 6 ) ( 4 , 3 ) ( 3 , 4 )
( 5 , 6 ) ( 4 , 3 ) ( 4 , 3 )
( 5 , 6 ) ( 4 , 3 ) ( 5 , 6 )
( 5 , 6 ) ( 4 , 3 ) ( 6 , 5 )
( 5 , 6 ) ( 5 , 6 ) ( 5 , 6 )
( 5 , 6 ) ( 5 , 6 ) ( 6 , 5 )
( 5 , 6 ) ( 6 , 5 ) ( 5 , 6 )
( 5 , 6 ) ( 6 , 5 ) ( 6 , 5 )
( 6 , 5 ) ( 6 , 5 ) ( 5 , 6 )
( 6 , 5 ) ( 6 , 5 ) ( 6 , 5 )
// Kotlin program for
// Print all combinations of n natural number
// whose pair element difference is one
class Combination
{
	fun subSequences(result: Array < Int > , 
                      start: Int, 
                      count: Int,
                      n: Int): Unit
	{
		if (count == n)
		{
			var i: Int = 0;
			// Display resultant sequence
			while (i < n - 1)
			{
				print("(" + result[i] + "," + 
                      result[i + 1] + ") ");
				i += 2;
			}
			print("\n");
		}
		else if (count > n)
		{
			return;
		}
		else
		{
			var i: Int = start;
			while (i < n)
			{
				// Set pair element
				result[count] = i + 1;
				result[count + 1] = i + 2;
				this.subSequences(result, start + 2, count + 2, n);
				result[count] = i + 2;
				result[count + 1] = i + 1;
				this.subSequences(result, i, count + 2, n);
				i += 2;
			}
		}
	}
	fun pairDifferences1s(n: Int): Unit
	{
		if (n % 2 != 0)
		{
			print("\n Given n : " + n + " is not even \n");
		}
		if (n <= 0)
		{
			return;
		}
		print(" Given : " + n + " \n");
		// Auxiliary array which is collect result
		val result: Array < Int > = Array(n)
		{
			0
		};
		this.subSequences(result, 0, 0, n);
	}
}
fun main(args: Array < String > ): Unit
{
	val task: Combination = Combination();
	//  Length and natural number 1..n
	var n: Int = 4;
	/*
	    n = 4
	    ----------
	    (1,2) (3,4) 
	    (1,2) (4,3) 
	    (2,1) (1,2) 
	    (2,1) (2,1) 
	    (2,1) (3,4) 
	    (2,1) (4,3) 
	    (3,4) (3,4) 
	    (3,4) (4,3) 
	    (4,3) (3,4) 
	    (4,3) (4,3)
	  
	*/
	// Test A
	task.pairDifferences1s(n);
	n = 6;
	/*
	    n = 6
	    pair n/2 = 3 pair in each result
	    ----------
	    (1,2) (3,4) (5,6) 
	    (1,2) (3,4) (6,5) 
	    (1,2) (4,3) (3,4) 
	    (1,2) (4,3) (4,3) 
	    (1,2) (4,3) (5,6) 
	    (1,2) (4,3) (6,5) 
	    (1,2) (5,6) (5,6) 
	    (1,2) (5,6) (6,5) 
	    (1,2) (6,5) (5,6) 
	    (1,2) (6,5) (6,5) 
	    (2,1) (1,2) (3,4) 
	    (2,1) (1,2) (4,3) 
	    (2,1) (1,2) (5,6) 
	    (2,1) (1,2) (6,5) 
	    (2,1) (2,1) (1,2) 
	    (2,1) (2,1) (2,1) 
	    (2,1) (2,1) (3,4) 
	    (2,1) (2,1) (4,3) 
	    (2,1) (2,1) (5,6) 
	    (2,1) (2,1) (6,5) 
	    (2,1) (3,4) (3,4) 
	    (2,1) (3,4) (4,3) 
	    (2,1) (3,4) (5,6) 
	    (2,1) (3,4) (6,5) 
	    (2,1) (4,3) (3,4) 
	    (2,1) (4,3) (4,3) 
	    (2,1) (4,3) (5,6) 
	    (2,1) (4,3) (6,5) 
	    (2,1) (5,6) (3,4) 
	    (2,1) (5,6) (4,3) 
	    (2,1) (5,6) (5,6) 
	    (2,1) (5,6) (6,5) 
	    (2,1) (6,5) (5,6) 
	    (2,1) (6,5) (6,5) 
	    (3,4) (3,4) (5,6) 
	    (3,4) (3,4) (6,5) 
	    (3,4) (4,3) (3,4) 
	    (3,4) (4,3) (4,3) 
	    (3,4) (4,3) (5,6) 
	    (3,4) (4,3) (6,5) 
	    (3,4) (5,6) (5,6) 
	    (3,4) (5,6) (6,5) 
	    (3,4) (6,5) (5,6) 
	    (3,4) (6,5) (6,5) 
	    (4,3) (3,4) (5,6) 
	    (4,3) (3,4) (6,5) 
	    (4,3) (4,3) (3,4) 
	    (4,3) (4,3) (4,3) 
	    (4,3) (4,3) (5,6) 
	    (4,3) (4,3) (6,5) 
	    (4,3) (5,6) (5,6) 
	    (4,3) (5,6) (6,5) 
	    (4,3) (6,5) (5,6) 
	    (4,3) (6,5) (6,5) 
	    (5,6) (3,4) (5,6) 
	    (5,6) (3,4) (6,5) 
	    (5,6) (4,3) (3,4) 
	    (5,6) (4,3) (4,3) 
	    (5,6) (4,3) (5,6) 
	    (5,6) (4,3) (6,5) 
	    (5,6) (5,6) (5,6) 
	    (5,6) (5,6) (6,5) 
	    (5,6) (6,5) (5,6) 
	    (5,6) (6,5) (6,5) 
	    (6,5) (6,5) (5,6) 
	    (6,5) (6,5) (6,5)
	  
	*/
	// Test B
	task.pairDifferences1s(n);
}

Output

 Given : 4
(1,2) (3,4)
(1,2) (4,3)
(2,1) (1,2)
(2,1) (2,1)
(2,1) (3,4)
(2,1) (4,3)
(3,4) (3,4)
(3,4) (4,3)
(4,3) (3,4)
(4,3) (4,3)
 Given : 6
(1,2) (3,4) (5,6)
(1,2) (3,4) (6,5)
(1,2) (4,3) (3,4)
(1,2) (4,3) (4,3)
(1,2) (4,3) (5,6)
(1,2) (4,3) (6,5)
(1,2) (5,6) (5,6)
(1,2) (5,6) (6,5)
(1,2) (6,5) (5,6)
(1,2) (6,5) (6,5)
(2,1) (1,2) (3,4)
(2,1) (1,2) (4,3)
(2,1) (1,2) (5,6)
(2,1) (1,2) (6,5)
(2,1) (2,1) (1,2)
(2,1) (2,1) (2,1)
(2,1) (2,1) (3,4)
(2,1) (2,1) (4,3)
(2,1) (2,1) (5,6)
(2,1) (2,1) (6,5)
(2,1) (3,4) (3,4)
(2,1) (3,4) (4,3)
(2,1) (3,4) (5,6)
(2,1) (3,4) (6,5)
(2,1) (4,3) (3,4)
(2,1) (4,3) (4,3)
(2,1) (4,3) (5,6)
(2,1) (4,3) (6,5)
(2,1) (5,6) (3,4)
(2,1) (5,6) (4,3)
(2,1) (5,6) (5,6)
(2,1) (5,6) (6,5)
(2,1) (6,5) (5,6)
(2,1) (6,5) (6,5)
(3,4) (3,4) (5,6)
(3,4) (3,4) (6,5)
(3,4) (4,3) (3,4)
(3,4) (4,3) (4,3)
(3,4) (4,3) (5,6)
(3,4) (4,3) (6,5)
(3,4) (5,6) (5,6)
(3,4) (5,6) (6,5)
(3,4) (6,5) (5,6)
(3,4) (6,5) (6,5)
(4,3) (3,4) (5,6)
(4,3) (3,4) (6,5)
(4,3) (4,3) (3,4)
(4,3) (4,3) (4,3)
(4,3) (4,3) (5,6)
(4,3) (4,3) (6,5)
(4,3) (5,6) (5,6)
(4,3) (5,6) (6,5)
(4,3) (6,5) (5,6)
(4,3) (6,5) (6,5)
(5,6) (3,4) (5,6)
(5,6) (3,4) (6,5)
(5,6) (4,3) (3,4)
(5,6) (4,3) (4,3)
(5,6) (4,3) (5,6)
(5,6) (4,3) (6,5)
(5,6) (5,6) (5,6)
(5,6) (5,6) (6,5)
(5,6) (6,5) (5,6)
(5,6) (6,5) (6,5)
(6,5) (6,5) (5,6)
(6,5) (6,5) (6,5)




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