Print all intervals of given number
In this article, we will discuss a problem that involves printing all intervals of a given number. We will provide a detailed explanation of the problem statement, present a suitable example, and describe an algorithm to solve it. Furthermore, we will analyze the time complexity of the algorithm. Finally, we will explain the resultant output and provide a step-by-step explanation of the code.
Problem Statement
The problem is to print all intervals of a given number. An interval is a sequence of numbers where the given number appears twice, with a specific distance between the two occurrences. For example, if the given number is 4, the intervals could be [4 1 3 1], [2 4 3 2], etc. The goal is to find and print all possible intervals for a given number.
Example
Let's take the example of finding intervals for the number 4. The expected output for this example would be:
Intervals size 4 4 1 3 1 2 4 3 2 2 3 4 2 1 3 1 4
Pseudocode Algorithm
To solve this problem, we can use a recursive approach. Here is the pseudocode algorithm for finding and printing all intervals of a given number:
function display(auxiliary[], size):
for i = 0 to size:
print auxiliary[i]
end for
print a newline
end function
function findIntervals(auxiliary[], element, size, n):
if element > n:
display(auxiliary, size)
return
end if
for i = 0 to size:
if auxiliary[i] == 0 and i + element + 1 < size and auxiliary[i + element + 1] == 0:
auxiliary[i] = element
auxiliary[i + element + 1] = element
findIntervals(auxiliary, element + 1, size, n)
auxiliary[i] = 0
auxiliary[i + element + 1] = 0
end if
end for
end function
function printIntervals(intervals):
if intervals <= 1:
return
end if
print "Intervals size " + intervals
auxiliary[intervals * 2]
for i = 0 to intervals * 2:
auxiliary[i] = 0
end for
findIntervals(auxiliary, 1, intervals * 2, intervals)
print a newline
end function
main():
printIntervals(4)
printIntervals(7)
Code Solution
// C Program
// Print all intervals of given number
#include <stdio.h>
// Display calculated intervals
void display(int auxiliary[], int size)
{
for (int i = 0; i < size; ++i)
{
printf(" %d", auxiliary[i]);
}
printf("\n");
}
// Find the elements from 1 to n in specific intervals
void findIntervals(int auxiliary[], int element, int size, int n)
{
if (element > n)
{
// Display calculated result
display(auxiliary, size);
return;
}
for (int i = 0; i < size; ++i)
{
if (auxiliary[i] == 0 && i + element + 1 < size && auxiliary[i + element + 1] == 0)
{
// Insert element on particular distance
auxiliary[i] = element;
auxiliary[i + element + 1] = element;
findIntervals(auxiliary, element + 1, size, n);
// Reset value
auxiliary[i] = 0;
auxiliary[i + element + 1] = 0;
}
}
}
// Handles the request of printing number intervals
void printIntervals(int intervals)
{
if (intervals <= 1)
{
return;
}
printf("Intervals size %d \n", intervals);
// Used to store results
int auxiliary[intervals *2];
for (int i = 0; i < intervals *2; ++i)
{
auxiliary[i] = 0;
}
// print all intervals
findIntervals(auxiliary, 1, intervals *2, intervals);
printf("\n");
}
int main(int argc, char
const *argv[])
{
// Test case
printIntervals(4);
printIntervals(7);
return 0;
}
Output
Intervals size 4
4 1 3 1 2 4 3 2
2 3 4 2 1 3 1 4
Intervals size 7
1 7 1 2 5 6 2 3 4 7 5 3 6 4
1 7 1 2 6 4 2 5 3 7 4 6 3 5
1 6 1 7 2 4 5 2 6 3 4 7 5 3
1 5 1 6 7 2 4 5 2 3 6 4 7 3
1 4 1 5 6 7 4 2 3 5 2 6 3 7
1 4 1 6 7 3 4 5 2 3 6 2 7 5
1 6 1 3 5 7 4 3 6 2 5 4 2 7
1 5 1 7 3 4 6 5 3 2 4 7 2 6
1 5 1 6 3 7 4 5 3 2 6 4 2 7
1 5 1 4 6 7 3 5 4 2 3 6 2 7
5 1 7 1 6 2 5 4 2 3 7 6 4 3
4 1 7 1 6 4 2 5 3 2 7 6 3 5
4 1 6 1 7 4 3 5 2 6 3 2 7 5
7 1 3 1 6 4 3 5 7 2 4 6 2 5
7 1 4 1 6 3 5 4 7 3 2 6 5 2
6 1 5 1 7 3 4 6 5 3 2 4 7 2
4 6 1 7 1 4 5 2 6 3 2 7 5 3
7 3 1 6 1 3 4 5 7 2 6 4 2 5
4 6 1 7 1 4 3 5 6 2 3 7 2 5
5 6 1 7 1 3 5 4 6 3 2 7 4 2
7 4 1 5 1 6 4 3 7 5 2 3 6 2
5 7 1 4 1 6 5 3 4 7 2 3 6 2
3 6 7 1 3 1 4 5 6 2 7 4 2 5
5 7 4 1 6 1 5 4 3 7 2 6 3 2
2 6 7 2 1 5 1 4 6 3 7 5 4 3
4 5 6 7 1 4 1 5 3 6 2 7 3 2
2 3 7 2 6 3 5 1 4 1 7 6 5 4
3 4 5 7 3 6 4 1 5 1 2 7 6 2
2 3 6 2 7 3 4 5 1 6 1 4 7 5
5 2 4 7 2 6 5 4 1 3 1 7 6 3
2 6 3 2 7 4 3 5 6 1 4 1 7 5
2 6 3 2 5 7 3 4 6 1 5 1 4 7
2 4 7 2 3 6 4 5 3 1 7 1 6 5
5 2 7 3 2 6 5 3 4 1 7 1 6 4
5 2 4 6 2 7 5 4 3 1 6 1 3 7
3 5 7 2 3 6 2 5 4 1 7 1 6 4
2 7 4 2 3 5 6 4 3 7 1 5 1 6
2 5 6 2 3 7 4 5 3 6 1 4 1 7
5 2 6 4 2 7 5 3 4 6 1 3 1 7
5 7 2 3 6 2 5 3 4 7 1 6 1 4
5 3 6 7 2 3 5 2 4 6 1 7 1 4
3 4 6 7 3 2 4 5 2 6 1 7 1 5
7 2 6 3 2 4 5 3 7 6 4 1 5 1
7 2 4 6 2 3 5 4 7 3 6 1 5 1
6 2 7 4 2 3 5 6 4 3 7 1 5 1
7 2 4 5 2 6 3 4 7 5 3 1 6 1
5 7 2 6 3 2 5 4 3 7 6 1 4 1
7 3 6 2 5 3 2 4 7 6 5 1 4 1
3 7 4 6 3 2 5 4 2 7 6 1 5 1
3 5 7 4 3 6 2 5 4 2 7 1 6 1
5 3 6 4 7 3 5 2 4 6 2 1 7 1
4 6 3 5 7 4 3 2 6 5 2 1 7 1
/*
Java Program
Print all intervals of given number
*/
class Interval
{
// Display calculated intervals
public void display(int[] auxiliary, int size)
{
for (int i = 0; i < size; ++i)
{
System.out.print(" " + auxiliary[i]);
}
System.out.print("\n");
}
// Find the elements from 1 to n in specific intervals
public void findIntervals(int[] auxiliary, int element, int size, int n)
{
if (element > n)
{
// Display calculated result
display(auxiliary, size);
return;
}
for (int i = 0; i < size; ++i)
{
if (auxiliary[i] == 0 && i + element + 1 < size && auxiliary[i + element + 1] == 0)
{
// Insert element on particular distance
auxiliary[i] = element;
auxiliary[i + element + 1] = element;
findIntervals(auxiliary, element + 1, size, n);
// Reset value
auxiliary[i] = 0;
auxiliary[i + element + 1] = 0;
}
}
}
// Handles the request of printing number intervals
public void printIntervals(int intervals)
{
if (intervals <= 1)
{
return;
}
System.out.print(" Intervals size " + intervals + " \n");
// Used to store results
int[] auxiliary = new int[intervals * 2];
for (int i = 0; i < intervals * 2; ++i)
{
auxiliary[i] = 0;
}
// print all intervals
findIntervals(auxiliary, 1, intervals * 2, intervals);
System.out.print("\n");
}
public static void main(String[] args)
{
Interval task = new Interval();
// Test case
task.printIntervals(4);
task.printIntervals(7);
}
}
Output
Intervals size 4
4 1 3 1 2 4 3 2
2 3 4 2 1 3 1 4
Intervals size 7
1 7 1 2 5 6 2 3 4 7 5 3 6 4
1 7 1 2 6 4 2 5 3 7 4 6 3 5
1 6 1 7 2 4 5 2 6 3 4 7 5 3
1 5 1 6 7 2 4 5 2 3 6 4 7 3
1 4 1 5 6 7 4 2 3 5 2 6 3 7
1 4 1 6 7 3 4 5 2 3 6 2 7 5
1 6 1 3 5 7 4 3 6 2 5 4 2 7
1 5 1 7 3 4 6 5 3 2 4 7 2 6
1 5 1 6 3 7 4 5 3 2 6 4 2 7
1 5 1 4 6 7 3 5 4 2 3 6 2 7
5 1 7 1 6 2 5 4 2 3 7 6 4 3
4 1 7 1 6 4 2 5 3 2 7 6 3 5
4 1 6 1 7 4 3 5 2 6 3 2 7 5
7 1 3 1 6 4 3 5 7 2 4 6 2 5
7 1 4 1 6 3 5 4 7 3 2 6 5 2
6 1 5 1 7 3 4 6 5 3 2 4 7 2
4 6 1 7 1 4 5 2 6 3 2 7 5 3
7 3 1 6 1 3 4 5 7 2 6 4 2 5
4 6 1 7 1 4 3 5 6 2 3 7 2 5
5 6 1 7 1 3 5 4 6 3 2 7 4 2
7 4 1 5 1 6 4 3 7 5 2 3 6 2
5 7 1 4 1 6 5 3 4 7 2 3 6 2
3 6 7 1 3 1 4 5 6 2 7 4 2 5
5 7 4 1 6 1 5 4 3 7 2 6 3 2
2 6 7 2 1 5 1 4 6 3 7 5 4 3
4 5 6 7 1 4 1 5 3 6 2 7 3 2
2 3 7 2 6 3 5 1 4 1 7 6 5 4
3 4 5 7 3 6 4 1 5 1 2 7 6 2
2 3 6 2 7 3 4 5 1 6 1 4 7 5
5 2 4 7 2 6 5 4 1 3 1 7 6 3
2 6 3 2 7 4 3 5 6 1 4 1 7 5
2 6 3 2 5 7 3 4 6 1 5 1 4 7
2 4 7 2 3 6 4 5 3 1 7 1 6 5
5 2 7 3 2 6 5 3 4 1 7 1 6 4
5 2 4 6 2 7 5 4 3 1 6 1 3 7
3 5 7 2 3 6 2 5 4 1 7 1 6 4
2 7 4 2 3 5 6 4 3 7 1 5 1 6
2 5 6 2 3 7 4 5 3 6 1 4 1 7
5 2 6 4 2 7 5 3 4 6 1 3 1 7
5 7 2 3 6 2 5 3 4 7 1 6 1 4
5 3 6 7 2 3 5 2 4 6 1 7 1 4
3 4 6 7 3 2 4 5 2 6 1 7 1 5
7 2 6 3 2 4 5 3 7 6 4 1 5 1
7 2 4 6 2 3 5 4 7 3 6 1 5 1
6 2 7 4 2 3 5 6 4 3 7 1 5 1
7 2 4 5 2 6 3 4 7 5 3 1 6 1
5 7 2 6 3 2 5 4 3 7 6 1 4 1
7 3 6 2 5 3 2 4 7 6 5 1 4 1
3 7 4 6 3 2 5 4 2 7 6 1 5 1
3 5 7 4 3 6 2 5 4 2 7 1 6 1
5 3 6 4 7 3 5 2 4 6 2 1 7 1
4 6 3 5 7 4 3 2 6 5 2 1 7 1
// Include header file
#include <iostream>
using namespace std;
/*
C++ Program
Print all intervals of given number
*/
class Interval
{
public:
// Display calculated intervals
void display(int auxiliary[], int size)
{
for (int i = 0; i < size; ++i)
{
cout << " " << auxiliary[i];
}
cout << "\n";
}
// Find the elements from 1 to n in specific intervals
void findIntervals(int auxiliary[], int element, int size, int n)
{
if (element > n)
{
// Display calculated result
this->display(auxiliary, size);
return;
}
for (int i = 0; i < size; ++i)
{
if (auxiliary[i] == 0 && i + element + 1 < size && auxiliary[i + element + 1] == 0)
{
// Insert element on particular distance
auxiliary[i] = element;
auxiliary[i + element + 1] = element;
this->findIntervals(auxiliary, element + 1, size, n);
// Reset value
auxiliary[i] = 0;
auxiliary[i + element + 1] = 0;
}
}
}
// Handles the request of printing number intervals
void printIntervals(int intervals)
{
if (intervals <= 1)
{
return;
}
cout << " Intervals size " << intervals << " \n";
// Used to store results
int auxiliary[intervals *2];
for (int i = 0; i < intervals *2; ++i)
{
auxiliary[i] = 0;
}
// print all intervals
this->findIntervals(auxiliary, 1, intervals *2, intervals);
cout << "\n";
}
};
int main()
{
Interval task = Interval();
// Test case
task.printIntervals(4);
task.printIntervals(7);
return 0;
}
Output
Intervals size 4
4 1 3 1 2 4 3 2
2 3 4 2 1 3 1 4
Intervals size 7
1 7 1 2 5 6 2 3 4 7 5 3 6 4
1 7 1 2 6 4 2 5 3 7 4 6 3 5
1 6 1 7 2 4 5 2 6 3 4 7 5 3
1 5 1 6 7 2 4 5 2 3 6 4 7 3
1 4 1 5 6 7 4 2 3 5 2 6 3 7
1 4 1 6 7 3 4 5 2 3 6 2 7 5
1 6 1 3 5 7 4 3 6 2 5 4 2 7
1 5 1 7 3 4 6 5 3 2 4 7 2 6
1 5 1 6 3 7 4 5 3 2 6 4 2 7
1 5 1 4 6 7 3 5 4 2 3 6 2 7
5 1 7 1 6 2 5 4 2 3 7 6 4 3
4 1 7 1 6 4 2 5 3 2 7 6 3 5
4 1 6 1 7 4 3 5 2 6 3 2 7 5
7 1 3 1 6 4 3 5 7 2 4 6 2 5
7 1 4 1 6 3 5 4 7 3 2 6 5 2
6 1 5 1 7 3 4 6 5 3 2 4 7 2
4 6 1 7 1 4 5 2 6 3 2 7 5 3
7 3 1 6 1 3 4 5 7 2 6 4 2 5
4 6 1 7 1 4 3 5 6 2 3 7 2 5
5 6 1 7 1 3 5 4 6 3 2 7 4 2
7 4 1 5 1 6 4 3 7 5 2 3 6 2
5 7 1 4 1 6 5 3 4 7 2 3 6 2
3 6 7 1 3 1 4 5 6 2 7 4 2 5
5 7 4 1 6 1 5 4 3 7 2 6 3 2
2 6 7 2 1 5 1 4 6 3 7 5 4 3
4 5 6 7 1 4 1 5 3 6 2 7 3 2
2 3 7 2 6 3 5 1 4 1 7 6 5 4
3 4 5 7 3 6 4 1 5 1 2 7 6 2
2 3 6 2 7 3 4 5 1 6 1 4 7 5
5 2 4 7 2 6 5 4 1 3 1 7 6 3
2 6 3 2 7 4 3 5 6 1 4 1 7 5
2 6 3 2 5 7 3 4 6 1 5 1 4 7
2 4 7 2 3 6 4 5 3 1 7 1 6 5
5 2 7 3 2 6 5 3 4 1 7 1 6 4
5 2 4 6 2 7 5 4 3 1 6 1 3 7
3 5 7 2 3 6 2 5 4 1 7 1 6 4
2 7 4 2 3 5 6 4 3 7 1 5 1 6
2 5 6 2 3 7 4 5 3 6 1 4 1 7
5 2 6 4 2 7 5 3 4 6 1 3 1 7
5 7 2 3 6 2 5 3 4 7 1 6 1 4
5 3 6 7 2 3 5 2 4 6 1 7 1 4
3 4 6 7 3 2 4 5 2 6 1 7 1 5
7 2 6 3 2 4 5 3 7 6 4 1 5 1
7 2 4 6 2 3 5 4 7 3 6 1 5 1
6 2 7 4 2 3 5 6 4 3 7 1 5 1
7 2 4 5 2 6 3 4 7 5 3 1 6 1
5 7 2 6 3 2 5 4 3 7 6 1 4 1
7 3 6 2 5 3 2 4 7 6 5 1 4 1
3 7 4 6 3 2 5 4 2 7 6 1 5 1
3 5 7 4 3 6 2 5 4 2 7 1 6 1
5 3 6 4 7 3 5 2 4 6 2 1 7 1
4 6 3 5 7 4 3 2 6 5 2 1 7 1
// Include namespace system
using System;
/*
C# Program
Print all intervals of given number
*/
public class Interval
{
// Display calculated intervals
public void display(int[] auxiliary, int size)
{
for (int i = 0; i < size; ++i)
{
Console.Write(" " + auxiliary[i]);
}
Console.Write("\n");
}
// Find the elements from 1 to n in specific intervals
public void findIntervals(int[] auxiliary, int element, int size, int n)
{
if (element > n)
{
// Display calculated result
display(auxiliary, size);
return;
}
for (int i = 0; i < size; ++i)
{
if (auxiliary[i] == 0 && i + element + 1 < size && auxiliary[i + element + 1] == 0)
{
// Insert element on particular distance
auxiliary[i] = element;
auxiliary[i + element + 1] = element;
findIntervals(auxiliary, element + 1, size, n);
// Reset value
auxiliary[i] = 0;
auxiliary[i + element + 1] = 0;
}
}
}
// Handles the request of printing number intervals
public void printIntervals(int intervals)
{
if (intervals <= 1)
{
return;
}
Console.Write(" Intervals size " + intervals + " \n");
// Used to store results
int[] auxiliary = new int[intervals * 2];
for (int i = 0; i < intervals * 2; ++i)
{
auxiliary[i] = 0;
}
// print all intervals
findIntervals(auxiliary, 1, intervals * 2, intervals);
Console.Write("\n");
}
public static void Main(String[] args)
{
Interval task = new Interval();
// Test case
task.printIntervals(4);
task.printIntervals(7);
}
}
Output
Intervals size 4
4 1 3 1 2 4 3 2
2 3 4 2 1 3 1 4
Intervals size 7
1 7 1 2 5 6 2 3 4 7 5 3 6 4
1 7 1 2 6 4 2 5 3 7 4 6 3 5
1 6 1 7 2 4 5 2 6 3 4 7 5 3
1 5 1 6 7 2 4 5 2 3 6 4 7 3
1 4 1 5 6 7 4 2 3 5 2 6 3 7
1 4 1 6 7 3 4 5 2 3 6 2 7 5
1 6 1 3 5 7 4 3 6 2 5 4 2 7
1 5 1 7 3 4 6 5 3 2 4 7 2 6
1 5 1 6 3 7 4 5 3 2 6 4 2 7
1 5 1 4 6 7 3 5 4 2 3 6 2 7
5 1 7 1 6 2 5 4 2 3 7 6 4 3
4 1 7 1 6 4 2 5 3 2 7 6 3 5
4 1 6 1 7 4 3 5 2 6 3 2 7 5
7 1 3 1 6 4 3 5 7 2 4 6 2 5
7 1 4 1 6 3 5 4 7 3 2 6 5 2
6 1 5 1 7 3 4 6 5 3 2 4 7 2
4 6 1 7 1 4 5 2 6 3 2 7 5 3
7 3 1 6 1 3 4 5 7 2 6 4 2 5
4 6 1 7 1 4 3 5 6 2 3 7 2 5
5 6 1 7 1 3 5 4 6 3 2 7 4 2
7 4 1 5 1 6 4 3 7 5 2 3 6 2
5 7 1 4 1 6 5 3 4 7 2 3 6 2
3 6 7 1 3 1 4 5 6 2 7 4 2 5
5 7 4 1 6 1 5 4 3 7 2 6 3 2
2 6 7 2 1 5 1 4 6 3 7 5 4 3
4 5 6 7 1 4 1 5 3 6 2 7 3 2
2 3 7 2 6 3 5 1 4 1 7 6 5 4
3 4 5 7 3 6 4 1 5 1 2 7 6 2
2 3 6 2 7 3 4 5 1 6 1 4 7 5
5 2 4 7 2 6 5 4 1 3 1 7 6 3
2 6 3 2 7 4 3 5 6 1 4 1 7 5
2 6 3 2 5 7 3 4 6 1 5 1 4 7
2 4 7 2 3 6 4 5 3 1 7 1 6 5
5 2 7 3 2 6 5 3 4 1 7 1 6 4
5 2 4 6 2 7 5 4 3 1 6 1 3 7
3 5 7 2 3 6 2 5 4 1 7 1 6 4
2 7 4 2 3 5 6 4 3 7 1 5 1 6
2 5 6 2 3 7 4 5 3 6 1 4 1 7
5 2 6 4 2 7 5 3 4 6 1 3 1 7
5 7 2 3 6 2 5 3 4 7 1 6 1 4
5 3 6 7 2 3 5 2 4 6 1 7 1 4
3 4 6 7 3 2 4 5 2 6 1 7 1 5
7 2 6 3 2 4 5 3 7 6 4 1 5 1
7 2 4 6 2 3 5 4 7 3 6 1 5 1
6 2 7 4 2 3 5 6 4 3 7 1 5 1
7 2 4 5 2 6 3 4 7 5 3 1 6 1
5 7 2 6 3 2 5 4 3 7 6 1 4 1
7 3 6 2 5 3 2 4 7 6 5 1 4 1
3 7 4 6 3 2 5 4 2 7 6 1 5 1
3 5 7 4 3 6 2 5 4 2 7 1 6 1
5 3 6 4 7 3 5 2 4 6 2 1 7 1
4 6 3 5 7 4 3 2 6 5 2 1 7 1
<?php
/*
Php Program
Print all intervals of given number
*/
class Interval
{
// Display calculated intervals
public function display( & $auxiliary, $size)
{
for ($i = 0; $i < $size; ++$i)
{
echo " ". $auxiliary[$i];
}
echo "\n";
}
// Find the elements from 1 to n in specific intervals
public function findIntervals( & $auxiliary, $element, $size, $n)
{
if ($element > $n)
{
// Display calculated result
$this->display($auxiliary, $size);
return;
}
for ($i = 0; $i < $size; ++$i)
{
if ($auxiliary[$i] == 0 && $i + $element + 1 < $size && $auxiliary[$i + $element + 1] == 0)
{
// Insert element on particular distance
$auxiliary[$i] = $element;
$auxiliary[$i + $element + 1] = $element;
$this->findIntervals($auxiliary, $element + 1, $size, $n);
// Reset value
$auxiliary[$i] = 0;
$auxiliary[$i + $element + 1] = 0;
}
}
}
// Handles the request of printing number intervals
public function printIntervals($intervals)
{
if ($intervals <= 1)
{
return;
}
echo " Intervals size ". $intervals ." \n";
// Used to store results
$auxiliary = array_fill(0, $intervals * 2, 0);
for ($i = 0; $i < $intervals * 2; ++$i)
{
$auxiliary[$i] = 0;
}
// print all intervals
$this->findIntervals($auxiliary, 1, $intervals * 2, $intervals);
echo "\n";
}
}
function main()
{
$task = new Interval();
// Test case
$task->printIntervals(4);
$task->printIntervals(7);
}
main();
Output
Intervals size 4
4 1 3 1 2 4 3 2
2 3 4 2 1 3 1 4
Intervals size 7
1 7 1 2 5 6 2 3 4 7 5 3 6 4
1 7 1 2 6 4 2 5 3 7 4 6 3 5
1 6 1 7 2 4 5 2 6 3 4 7 5 3
1 5 1 6 7 2 4 5 2 3 6 4 7 3
1 4 1 5 6 7 4 2 3 5 2 6 3 7
1 4 1 6 7 3 4 5 2 3 6 2 7 5
1 6 1 3 5 7 4 3 6 2 5 4 2 7
1 5 1 7 3 4 6 5 3 2 4 7 2 6
1 5 1 6 3 7 4 5 3 2 6 4 2 7
1 5 1 4 6 7 3 5 4 2 3 6 2 7
5 1 7 1 6 2 5 4 2 3 7 6 4 3
4 1 7 1 6 4 2 5 3 2 7 6 3 5
4 1 6 1 7 4 3 5 2 6 3 2 7 5
7 1 3 1 6 4 3 5 7 2 4 6 2 5
7 1 4 1 6 3 5 4 7 3 2 6 5 2
6 1 5 1 7 3 4 6 5 3 2 4 7 2
4 6 1 7 1 4 5 2 6 3 2 7 5 3
7 3 1 6 1 3 4 5 7 2 6 4 2 5
4 6 1 7 1 4 3 5 6 2 3 7 2 5
5 6 1 7 1 3 5 4 6 3 2 7 4 2
7 4 1 5 1 6 4 3 7 5 2 3 6 2
5 7 1 4 1 6 5 3 4 7 2 3 6 2
3 6 7 1 3 1 4 5 6 2 7 4 2 5
5 7 4 1 6 1 5 4 3 7 2 6 3 2
2 6 7 2 1 5 1 4 6 3 7 5 4 3
4 5 6 7 1 4 1 5 3 6 2 7 3 2
2 3 7 2 6 3 5 1 4 1 7 6 5 4
3 4 5 7 3 6 4 1 5 1 2 7 6 2
2 3 6 2 7 3 4 5 1 6 1 4 7 5
5 2 4 7 2 6 5 4 1 3 1 7 6 3
2 6 3 2 7 4 3 5 6 1 4 1 7 5
2 6 3 2 5 7 3 4 6 1 5 1 4 7
2 4 7 2 3 6 4 5 3 1 7 1 6 5
5 2 7 3 2 6 5 3 4 1 7 1 6 4
5 2 4 6 2 7 5 4 3 1 6 1 3 7
3 5 7 2 3 6 2 5 4 1 7 1 6 4
2 7 4 2 3 5 6 4 3 7 1 5 1 6
2 5 6 2 3 7 4 5 3 6 1 4 1 7
5 2 6 4 2 7 5 3 4 6 1 3 1 7
5 7 2 3 6 2 5 3 4 7 1 6 1 4
5 3 6 7 2 3 5 2 4 6 1 7 1 4
3 4 6 7 3 2 4 5 2 6 1 7 1 5
7 2 6 3 2 4 5 3 7 6 4 1 5 1
7 2 4 6 2 3 5 4 7 3 6 1 5 1
6 2 7 4 2 3 5 6 4 3 7 1 5 1
7 2 4 5 2 6 3 4 7 5 3 1 6 1
5 7 2 6 3 2 5 4 3 7 6 1 4 1
7 3 6 2 5 3 2 4 7 6 5 1 4 1
3 7 4 6 3 2 5 4 2 7 6 1 5 1
3 5 7 4 3 6 2 5 4 2 7 1 6 1
5 3 6 4 7 3 5 2 4 6 2 1 7 1
4 6 3 5 7 4 3 2 6 5 2 1 7 1
/*
Node Js Program
Print all intervals of given number
*/
class Interval
{
// Display calculated intervals
display(auxiliary, size)
{
for (var i = 0; i < size; ++i)
{
process.stdout.write(" " + auxiliary[i]);
}
process.stdout.write("\n");
}
// Find the elements from 1 to n in specific intervals
findIntervals(auxiliary, element, size, n)
{
if (element > n)
{
// Display calculated result
this.display(auxiliary, size);
return;
}
for (var i = 0; i < size; ++i)
{
if (auxiliary[i] == 0 && i + element + 1 < size && auxiliary[i + element + 1] == 0)
{
// Insert element on particular distance
auxiliary[i] = element;
auxiliary[i + element + 1] = element;
this.findIntervals(auxiliary, element + 1, size, n);
// Reset value
auxiliary[i] = 0;
auxiliary[i + element + 1] = 0;
}
}
}
// Handles the request of printing number intervals
printIntervals(intervals)
{
if (intervals <= 1)
{
return;
}
process.stdout.write(" Intervals size " + intervals + " \n");
// Used to store results
var auxiliary = Array(intervals * 2).fill(0);
for (var i = 0; i < intervals * 2; ++i)
{
auxiliary[i] = 0;
}
// print all intervals
this.findIntervals(auxiliary, 1, intervals * 2, intervals);
process.stdout.write("\n");
}
}
function main()
{
var task = new Interval();
// Test case
task.printIntervals(4);
task.printIntervals(7);
}
main();
Output
Intervals size 4
4 1 3 1 2 4 3 2
2 3 4 2 1 3 1 4
Intervals size 7
1 7 1 2 5 6 2 3 4 7 5 3 6 4
1 7 1 2 6 4 2 5 3 7 4 6 3 5
1 6 1 7 2 4 5 2 6 3 4 7 5 3
1 5 1 6 7 2 4 5 2 3 6 4 7 3
1 4 1 5 6 7 4 2 3 5 2 6 3 7
1 4 1 6 7 3 4 5 2 3 6 2 7 5
1 6 1 3 5 7 4 3 6 2 5 4 2 7
1 5 1 7 3 4 6 5 3 2 4 7 2 6
1 5 1 6 3 7 4 5 3 2 6 4 2 7
1 5 1 4 6 7 3 5 4 2 3 6 2 7
5 1 7 1 6 2 5 4 2 3 7 6 4 3
4 1 7 1 6 4 2 5 3 2 7 6 3 5
4 1 6 1 7 4 3 5 2 6 3 2 7 5
7 1 3 1 6 4 3 5 7 2 4 6 2 5
7 1 4 1 6 3 5 4 7 3 2 6 5 2
6 1 5 1 7 3 4 6 5 3 2 4 7 2
4 6 1 7 1 4 5 2 6 3 2 7 5 3
7 3 1 6 1 3 4 5 7 2 6 4 2 5
4 6 1 7 1 4 3 5 6 2 3 7 2 5
5 6 1 7 1 3 5 4 6 3 2 7 4 2
7 4 1 5 1 6 4 3 7 5 2 3 6 2
5 7 1 4 1 6 5 3 4 7 2 3 6 2
3 6 7 1 3 1 4 5 6 2 7 4 2 5
5 7 4 1 6 1 5 4 3 7 2 6 3 2
2 6 7 2 1 5 1 4 6 3 7 5 4 3
4 5 6 7 1 4 1 5 3 6 2 7 3 2
2 3 7 2 6 3 5 1 4 1 7 6 5 4
3 4 5 7 3 6 4 1 5 1 2 7 6 2
2 3 6 2 7 3 4 5 1 6 1 4 7 5
5 2 4 7 2 6 5 4 1 3 1 7 6 3
2 6 3 2 7 4 3 5 6 1 4 1 7 5
2 6 3 2 5 7 3 4 6 1 5 1 4 7
2 4 7 2 3 6 4 5 3 1 7 1 6 5
5 2 7 3 2 6 5 3 4 1 7 1 6 4
5 2 4 6 2 7 5 4 3 1 6 1 3 7
3 5 7 2 3 6 2 5 4 1 7 1 6 4
2 7 4 2 3 5 6 4 3 7 1 5 1 6
2 5 6 2 3 7 4 5 3 6 1 4 1 7
5 2 6 4 2 7 5 3 4 6 1 3 1 7
5 7 2 3 6 2 5 3 4 7 1 6 1 4
5 3 6 7 2 3 5 2 4 6 1 7 1 4
3 4 6 7 3 2 4 5 2 6 1 7 1 5
7 2 6 3 2 4 5 3 7 6 4 1 5 1
7 2 4 6 2 3 5 4 7 3 6 1 5 1
6 2 7 4 2 3 5 6 4 3 7 1 5 1
7 2 4 5 2 6 3 4 7 5 3 1 6 1
5 7 2 6 3 2 5 4 3 7 6 1 4 1
7 3 6 2 5 3 2 4 7 6 5 1 4 1
3 7 4 6 3 2 5 4 2 7 6 1 5 1
3 5 7 4 3 6 2 5 4 2 7 1 6 1
5 3 6 4 7 3 5 2 4 6 2 1 7 1
4 6 3 5 7 4 3 2 6 5 2 1 7 1
# Python 3 Program
# Print all intervals of given number
class Interval :
# Display calculated intervals
def display(self, auxiliary, size) :
i = 0
while (i < size) :
print(" ", auxiliary[i], end = "")
i += 1
print(end = "\n")
# Find the elements from 1 to n in specific intervals
def findIntervals(self, auxiliary, element, size, n) :
if (element > n) :
# Display calculated result
self.display(auxiliary, size)
return
i = 0
while (i < size) :
if (auxiliary[i] == 0 and i + element + 1 < size and auxiliary[i + element + 1] == 0) :
# Insert element on particular distance
auxiliary[i] = element
auxiliary[i + element + 1] = element
self.findIntervals(auxiliary, element + 1, size, n)
# Reset value
auxiliary[i] = 0
auxiliary[i + element + 1] = 0
i += 1
# Handles the request of printing number intervals
def printIntervals(self, intervals) :
if (intervals <= 1) :
return
print(" Intervals size ", intervals ," ")
# Used to store results
auxiliary = [0] * (intervals * 2)
# print all intervals
self.findIntervals(auxiliary, 1, intervals * 2, intervals)
print(end = "\n")
def main() :
task = Interval()
# Test case
task.printIntervals(4)
task.printIntervals(7)
if __name__ == "__main__": main()
Output
Intervals size 4
4 1 3 1 2 4 3 2
2 3 4 2 1 3 1 4
Intervals size 7
1 7 1 2 5 6 2 3 4 7 5 3 6 4
1 7 1 2 6 4 2 5 3 7 4 6 3 5
1 6 1 7 2 4 5 2 6 3 4 7 5 3
1 5 1 6 7 2 4 5 2 3 6 4 7 3
1 4 1 5 6 7 4 2 3 5 2 6 3 7
1 4 1 6 7 3 4 5 2 3 6 2 7 5
1 6 1 3 5 7 4 3 6 2 5 4 2 7
1 5 1 7 3 4 6 5 3 2 4 7 2 6
1 5 1 6 3 7 4 5 3 2 6 4 2 7
1 5 1 4 6 7 3 5 4 2 3 6 2 7
5 1 7 1 6 2 5 4 2 3 7 6 4 3
4 1 7 1 6 4 2 5 3 2 7 6 3 5
4 1 6 1 7 4 3 5 2 6 3 2 7 5
7 1 3 1 6 4 3 5 7 2 4 6 2 5
7 1 4 1 6 3 5 4 7 3 2 6 5 2
6 1 5 1 7 3 4 6 5 3 2 4 7 2
4 6 1 7 1 4 5 2 6 3 2 7 5 3
7 3 1 6 1 3 4 5 7 2 6 4 2 5
4 6 1 7 1 4 3 5 6 2 3 7 2 5
5 6 1 7 1 3 5 4 6 3 2 7 4 2
7 4 1 5 1 6 4 3 7 5 2 3 6 2
5 7 1 4 1 6 5 3 4 7 2 3 6 2
3 6 7 1 3 1 4 5 6 2 7 4 2 5
5 7 4 1 6 1 5 4 3 7 2 6 3 2
2 6 7 2 1 5 1 4 6 3 7 5 4 3
4 5 6 7 1 4 1 5 3 6 2 7 3 2
2 3 7 2 6 3 5 1 4 1 7 6 5 4
3 4 5 7 3 6 4 1 5 1 2 7 6 2
2 3 6 2 7 3 4 5 1 6 1 4 7 5
5 2 4 7 2 6 5 4 1 3 1 7 6 3
2 6 3 2 7 4 3 5 6 1 4 1 7 5
2 6 3 2 5 7 3 4 6 1 5 1 4 7
2 4 7 2 3 6 4 5 3 1 7 1 6 5
5 2 7 3 2 6 5 3 4 1 7 1 6 4
5 2 4 6 2 7 5 4 3 1 6 1 3 7
3 5 7 2 3 6 2 5 4 1 7 1 6 4
2 7 4 2 3 5 6 4 3 7 1 5 1 6
2 5 6 2 3 7 4 5 3 6 1 4 1 7
5 2 6 4 2 7 5 3 4 6 1 3 1 7
5 7 2 3 6 2 5 3 4 7 1 6 1 4
5 3 6 7 2 3 5 2 4 6 1 7 1 4
3 4 6 7 3 2 4 5 2 6 1 7 1 5
7 2 6 3 2 4 5 3 7 6 4 1 5 1
7 2 4 6 2 3 5 4 7 3 6 1 5 1
6 2 7 4 2 3 5 6 4 3 7 1 5 1
7 2 4 5 2 6 3 4 7 5 3 1 6 1
5 7 2 6 3 2 5 4 3 7 6 1 4 1
7 3 6 2 5 3 2 4 7 6 5 1 4 1
3 7 4 6 3 2 5 4 2 7 6 1 5 1
3 5 7 4 3 6 2 5 4 2 7 1 6 1
5 3 6 4 7 3 5 2 4 6 2 1 7 1
4 6 3 5 7 4 3 2 6 5 2 1 7 1
# Ruby Program
# Print all intervals of given number
class Interval
# Display calculated intervals
def display(auxiliary, size)
i = 0
while (i < size)
print(" ", auxiliary[i])
i += 1
end
print("\n")
end
# Find the elements from 1 to n in specific intervals
def findIntervals(auxiliary, element, size, n)
if (element > n)
# Display calculated result
self.display(auxiliary, size)
return
end
i = 0
while (i < size)
if (auxiliary[i] == 0 && i + element + 1 < size && auxiliary[i + element + 1] == 0)
# Insert element on particular distance
auxiliary[i] = element
auxiliary[i + element + 1] = element
self.findIntervals(auxiliary, element + 1, size, n)
# Reset value
auxiliary[i] = 0
auxiliary[i + element + 1] = 0
end
i += 1
end
end
# Handles the request of printing number intervals
def printIntervals(intervals)
if (intervals <= 1)
return
end
print(" Intervals size ", intervals ," \n")
# Used to store results
auxiliary = Array.new(intervals * 2) {0}
# print all intervals
self.findIntervals(auxiliary, 1, intervals * 2, intervals)
print("\n")
end
end
def main()
task = Interval.new()
# Test case
task.printIntervals(4)
task.printIntervals(7)
end
main()
Output
Intervals size 4
4 1 3 1 2 4 3 2
2 3 4 2 1 3 1 4
Intervals size 7
1 7 1 2 5 6 2 3 4 7 5 3 6 4
1 7 1 2 6 4 2 5 3 7 4 6 3 5
1 6 1 7 2 4 5 2 6 3 4 7 5 3
1 5 1 6 7 2 4 5 2 3 6 4 7 3
1 4 1 5 6 7 4 2 3 5 2 6 3 7
1 4 1 6 7 3 4 5 2 3 6 2 7 5
1 6 1 3 5 7 4 3 6 2 5 4 2 7
1 5 1 7 3 4 6 5 3 2 4 7 2 6
1 5 1 6 3 7 4 5 3 2 6 4 2 7
1 5 1 4 6 7 3 5 4 2 3 6 2 7
5 1 7 1 6 2 5 4 2 3 7 6 4 3
4 1 7 1 6 4 2 5 3 2 7 6 3 5
4 1 6 1 7 4 3 5 2 6 3 2 7 5
7 1 3 1 6 4 3 5 7 2 4 6 2 5
7 1 4 1 6 3 5 4 7 3 2 6 5 2
6 1 5 1 7 3 4 6 5 3 2 4 7 2
4 6 1 7 1 4 5 2 6 3 2 7 5 3
7 3 1 6 1 3 4 5 7 2 6 4 2 5
4 6 1 7 1 4 3 5 6 2 3 7 2 5
5 6 1 7 1 3 5 4 6 3 2 7 4 2
7 4 1 5 1 6 4 3 7 5 2 3 6 2
5 7 1 4 1 6 5 3 4 7 2 3 6 2
3 6 7 1 3 1 4 5 6 2 7 4 2 5
5 7 4 1 6 1 5 4 3 7 2 6 3 2
2 6 7 2 1 5 1 4 6 3 7 5 4 3
4 5 6 7 1 4 1 5 3 6 2 7 3 2
2 3 7 2 6 3 5 1 4 1 7 6 5 4
3 4 5 7 3 6 4 1 5 1 2 7 6 2
2 3 6 2 7 3 4 5 1 6 1 4 7 5
5 2 4 7 2 6 5 4 1 3 1 7 6 3
2 6 3 2 7 4 3 5 6 1 4 1 7 5
2 6 3 2 5 7 3 4 6 1 5 1 4 7
2 4 7 2 3 6 4 5 3 1 7 1 6 5
5 2 7 3 2 6 5 3 4 1 7 1 6 4
5 2 4 6 2 7 5 4 3 1 6 1 3 7
3 5 7 2 3 6 2 5 4 1 7 1 6 4
2 7 4 2 3 5 6 4 3 7 1 5 1 6
2 5 6 2 3 7 4 5 3 6 1 4 1 7
5 2 6 4 2 7 5 3 4 6 1 3 1 7
5 7 2 3 6 2 5 3 4 7 1 6 1 4
5 3 6 7 2 3 5 2 4 6 1 7 1 4
3 4 6 7 3 2 4 5 2 6 1 7 1 5
7 2 6 3 2 4 5 3 7 6 4 1 5 1
7 2 4 6 2 3 5 4 7 3 6 1 5 1
6 2 7 4 2 3 5 6 4 3 7 1 5 1
7 2 4 5 2 6 3 4 7 5 3 1 6 1
5 7 2 6 3 2 5 4 3 7 6 1 4 1
7 3 6 2 5 3 2 4 7 6 5 1 4 1
3 7 4 6 3 2 5 4 2 7 6 1 5 1
3 5 7 4 3 6 2 5 4 2 7 1 6 1
5 3 6 4 7 3 5 2 4 6 2 1 7 1
4 6 3 5 7 4 3 2 6 5 2 1 7 1
/*
Scala Program
Print all intervals of given number
*/
class Interval
{
// Display calculated intervals
def display(auxiliary: Array[Int], size: Int): Unit = {
var i: Int = 0;
while (i < size)
{
print(" " + auxiliary(i));
i += 1;
}
print("\n");
}
// Find the elements from 1 to n in specific intervals
def findIntervals(auxiliary: Array[Int], element: Int, size: Int, n: Int): Unit = {
if (element > n)
{
// Display calculated result
this.display(auxiliary, size);
return;
}
var i: Int = 0;
while (i < size)
{
if (auxiliary(i) == 0 && i + element + 1 < size && auxiliary(i + element + 1) == 0)
{
// Insert element on particular distance
auxiliary(i) = element;
auxiliary(i + element + 1) = element;
this.findIntervals(auxiliary, element + 1, size, n);
// Reset value
auxiliary(i) = 0;
auxiliary(i + element + 1) = 0;
}
i += 1;
}
}
// Handles the request of printing number intervals
def printIntervals(intervals: Int): Unit = {
if (intervals <= 1)
{
return;
}
print(" Intervals size " + intervals + " \n");
// Used to store results
var auxiliary: Array[Int] = Array.fill[Int](intervals * 2)(0);
// print all intervals
this.findIntervals(auxiliary, 1, intervals * 2, intervals);
print("\n");
}
}
object Main
{
def main(args: Array[String]): Unit = {
var task: Interval = new Interval();
// Test case
task.printIntervals(4);
task.printIntervals(7);
}
}
Output
Intervals size 4
4 1 3 1 2 4 3 2
2 3 4 2 1 3 1 4
Intervals size 7
1 7 1 2 5 6 2 3 4 7 5 3 6 4
1 7 1 2 6 4 2 5 3 7 4 6 3 5
1 6 1 7 2 4 5 2 6 3 4 7 5 3
1 5 1 6 7 2 4 5 2 3 6 4 7 3
1 4 1 5 6 7 4 2 3 5 2 6 3 7
1 4 1 6 7 3 4 5 2 3 6 2 7 5
1 6 1 3 5 7 4 3 6 2 5 4 2 7
1 5 1 7 3 4 6 5 3 2 4 7 2 6
1 5 1 6 3 7 4 5 3 2 6 4 2 7
1 5 1 4 6 7 3 5 4 2 3 6 2 7
5 1 7 1 6 2 5 4 2 3 7 6 4 3
4 1 7 1 6 4 2 5 3 2 7 6 3 5
4 1 6 1 7 4 3 5 2 6 3 2 7 5
7 1 3 1 6 4 3 5 7 2 4 6 2 5
7 1 4 1 6 3 5 4 7 3 2 6 5 2
6 1 5 1 7 3 4 6 5 3 2 4 7 2
4 6 1 7 1 4 5 2 6 3 2 7 5 3
7 3 1 6 1 3 4 5 7 2 6 4 2 5
4 6 1 7 1 4 3 5 6 2 3 7 2 5
5 6 1 7 1 3 5 4 6 3 2 7 4 2
7 4 1 5 1 6 4 3 7 5 2 3 6 2
5 7 1 4 1 6 5 3 4 7 2 3 6 2
3 6 7 1 3 1 4 5 6 2 7 4 2 5
5 7 4 1 6 1 5 4 3 7 2 6 3 2
2 6 7 2 1 5 1 4 6 3 7 5 4 3
4 5 6 7 1 4 1 5 3 6 2 7 3 2
2 3 7 2 6 3 5 1 4 1 7 6 5 4
3 4 5 7 3 6 4 1 5 1 2 7 6 2
2 3 6 2 7 3 4 5 1 6 1 4 7 5
5 2 4 7 2 6 5 4 1 3 1 7 6 3
2 6 3 2 7 4 3 5 6 1 4 1 7 5
2 6 3 2 5 7 3 4 6 1 5 1 4 7
2 4 7 2 3 6 4 5 3 1 7 1 6 5
5 2 7 3 2 6 5 3 4 1 7 1 6 4
5 2 4 6 2 7 5 4 3 1 6 1 3 7
3 5 7 2 3 6 2 5 4 1 7 1 6 4
2 7 4 2 3 5 6 4 3 7 1 5 1 6
2 5 6 2 3 7 4 5 3 6 1 4 1 7
5 2 6 4 2 7 5 3 4 6 1 3 1 7
5 7 2 3 6 2 5 3 4 7 1 6 1 4
5 3 6 7 2 3 5 2 4 6 1 7 1 4
3 4 6 7 3 2 4 5 2 6 1 7 1 5
7 2 6 3 2 4 5 3 7 6 4 1 5 1
7 2 4 6 2 3 5 4 7 3 6 1 5 1
6 2 7 4 2 3 5 6 4 3 7 1 5 1
7 2 4 5 2 6 3 4 7 5 3 1 6 1
5 7 2 6 3 2 5 4 3 7 6 1 4 1
7 3 6 2 5 3 2 4 7 6 5 1 4 1
3 7 4 6 3 2 5 4 2 7 6 1 5 1
3 5 7 4 3 6 2 5 4 2 7 1 6 1
5 3 6 4 7 3 5 2 4 6 2 1 7 1
4 6 3 5 7 4 3 2 6 5 2 1 7 1
/*
Swift 4 Program
Print all intervals of given number
*/
class Interval
{
// Display calculated intervals
func display(_ auxiliary: [Int], _ size: Int)
{
var i: Int = 0;
while (i < size)
{
print(" ", auxiliary[i], terminator: "");
i += 1;
}
print(terminator: "\n");
}
// Find the elements from 1 to n in specific intervals
func findIntervals(_ auxiliary: inout[Int], _ element: Int, _ size: Int, _ n: Int)
{
if (element > n)
{
// Display calculated result
self.display(auxiliary, size);
return;
}
var i: Int = 0;
while (i < size)
{
if (auxiliary[i] == 0 && i + element + 1 < size && auxiliary[i + element + 1] == 0)
{
// Insert element on particular distance
auxiliary[i] = element;
auxiliary[i + element + 1] = element;
self.findIntervals(&auxiliary, element + 1, size, n);
// Reset value
auxiliary[i] = 0;
auxiliary[i + element + 1] = 0;
}
i += 1;
}
}
// Handles the request of printing number intervals
func printIntervals(_ intervals: Int)
{
if (intervals <= 1)
{
return;
}
print(" Intervals size ", intervals ," ");
// Used to store results
var auxiliary: [Int] = Array(repeating: 0, count: intervals * 2);
// print all intervals
self.findIntervals(&auxiliary, 1, intervals * 2, intervals);
print(terminator: "\n");
}
}
func main()
{
let task: Interval = Interval();
// Test case
task.printIntervals(4);
task.printIntervals(7);
}
main();
Output
Intervals size 4
4 1 3 1 2 4 3 2
2 3 4 2 1 3 1 4
Intervals size 7
1 7 1 2 5 6 2 3 4 7 5 3 6 4
1 7 1 2 6 4 2 5 3 7 4 6 3 5
1 6 1 7 2 4 5 2 6 3 4 7 5 3
1 5 1 6 7 2 4 5 2 3 6 4 7 3
1 4 1 5 6 7 4 2 3 5 2 6 3 7
1 4 1 6 7 3 4 5 2 3 6 2 7 5
1 6 1 3 5 7 4 3 6 2 5 4 2 7
1 5 1 7 3 4 6 5 3 2 4 7 2 6
1 5 1 6 3 7 4 5 3 2 6 4 2 7
1 5 1 4 6 7 3 5 4 2 3 6 2 7
5 1 7 1 6 2 5 4 2 3 7 6 4 3
4 1 7 1 6 4 2 5 3 2 7 6 3 5
4 1 6 1 7 4 3 5 2 6 3 2 7 5
7 1 3 1 6 4 3 5 7 2 4 6 2 5
7 1 4 1 6 3 5 4 7 3 2 6 5 2
6 1 5 1 7 3 4 6 5 3 2 4 7 2
4 6 1 7 1 4 5 2 6 3 2 7 5 3
7 3 1 6 1 3 4 5 7 2 6 4 2 5
4 6 1 7 1 4 3 5 6 2 3 7 2 5
5 6 1 7 1 3 5 4 6 3 2 7 4 2
7 4 1 5 1 6 4 3 7 5 2 3 6 2
5 7 1 4 1 6 5 3 4 7 2 3 6 2
3 6 7 1 3 1 4 5 6 2 7 4 2 5
5 7 4 1 6 1 5 4 3 7 2 6 3 2
2 6 7 2 1 5 1 4 6 3 7 5 4 3
4 5 6 7 1 4 1 5 3 6 2 7 3 2
2 3 7 2 6 3 5 1 4 1 7 6 5 4
3 4 5 7 3 6 4 1 5 1 2 7 6 2
2 3 6 2 7 3 4 5 1 6 1 4 7 5
5 2 4 7 2 6 5 4 1 3 1 7 6 3
2 6 3 2 7 4 3 5 6 1 4 1 7 5
2 6 3 2 5 7 3 4 6 1 5 1 4 7
2 4 7 2 3 6 4 5 3 1 7 1 6 5
5 2 7 3 2 6 5 3 4 1 7 1 6 4
5 2 4 6 2 7 5 4 3 1 6 1 3 7
3 5 7 2 3 6 2 5 4 1 7 1 6 4
2 7 4 2 3 5 6 4 3 7 1 5 1 6
2 5 6 2 3 7 4 5 3 6 1 4 1 7
5 2 6 4 2 7 5 3 4 6 1 3 1 7
5 7 2 3 6 2 5 3 4 7 1 6 1 4
5 3 6 7 2 3 5 2 4 6 1 7 1 4
3 4 6 7 3 2 4 5 2 6 1 7 1 5
7 2 6 3 2 4 5 3 7 6 4 1 5 1
7 2 4 6 2 3 5 4 7 3 6 1 5 1
6 2 7 4 2 3 5 6 4 3 7 1 5 1
7 2 4 5 2 6 3 4 7 5 3 1 6 1
5 7 2 6 3 2 5 4 3 7 6 1 4 1
7 3 6 2 5 3 2 4 7 6 5 1 4 1
3 7 4 6 3 2 5 4 2 7 6 1 5 1
3 5 7 4 3 6 2 5 4 2 7 1 6 1
5 3 6 4 7 3 5 2 4 6 2 1 7 1
4 6 3 5 7 4 3 2 6 5 2 1 7 1
/*
Kotlin Program
Print all intervals of given number
*/
class Interval
{
// Display calculated intervals
fun display(auxiliary: Array<Int> , size: Int): Unit
{
var i: Int = 0;
while (i < size)
{
print(" " + auxiliary[i]);
i += 1;
}
print("\n");
}
// Find the elements from 1 to n in specific intervals
fun findIntervals(auxiliary: Array<Int> , element: Int, size: Int, n: Int): Unit
{
if (element > n)
{
// Display calculated result
this.display(auxiliary, size);
return;
}
var i: Int = 0;
while (i < size)
{
if (auxiliary[i] == 0 && i + element + 1 < size && auxiliary[i + element + 1] == 0)
{
// Insert element on particular distance
auxiliary[i] = element;
auxiliary[i + element + 1] = element;
this.findIntervals(auxiliary, element + 1, size, n);
// Reset value
auxiliary[i] = 0;
auxiliary[i + element + 1] = 0;
}
i += 1;
}
}
// Handles the request of printing number intervals
fun printIntervals(intervals: Int): Unit
{
if (intervals <= 1)
{
return;
}
print(" Intervals size " + intervals + " \n");
// Used to store results
var auxiliary: Array < Int > = Array(intervals * 2)
{
0
};
// print all intervals
this.findIntervals(auxiliary, 1, intervals * 2, intervals);
print("\n");
}
}
fun main(args: Array < String > ): Unit
{
var task: Interval = Interval();
// Test case
task.printIntervals(4);
task.printIntervals(7);
}
Output
Intervals size 4
4 1 3 1 2 4 3 2
2 3 4 2 1 3 1 4
Intervals size 7
1 7 1 2 5 6 2 3 4 7 5 3 6 4
1 7 1 2 6 4 2 5 3 7 4 6 3 5
1 6 1 7 2 4 5 2 6 3 4 7 5 3
1 5 1 6 7 2 4 5 2 3 6 4 7 3
1 4 1 5 6 7 4 2 3 5 2 6 3 7
1 4 1 6 7 3 4 5 2 3 6 2 7 5
1 6 1 3 5 7 4 3 6 2 5 4 2 7
1 5 1 7 3 4 6 5 3 2 4 7 2 6
1 5 1 6 3 7 4 5 3 2 6 4 2 7
1 5 1 4 6 7 3 5 4 2 3 6 2 7
5 1 7 1 6 2 5 4 2 3 7 6 4 3
4 1 7 1 6 4 2 5 3 2 7 6 3 5
4 1 6 1 7 4 3 5 2 6 3 2 7 5
7 1 3 1 6 4 3 5 7 2 4 6 2 5
7 1 4 1 6 3 5 4 7 3 2 6 5 2
6 1 5 1 7 3 4 6 5 3 2 4 7 2
4 6 1 7 1 4 5 2 6 3 2 7 5 3
7 3 1 6 1 3 4 5 7 2 6 4 2 5
4 6 1 7 1 4 3 5 6 2 3 7 2 5
5 6 1 7 1 3 5 4 6 3 2 7 4 2
7 4 1 5 1 6 4 3 7 5 2 3 6 2
5 7 1 4 1 6 5 3 4 7 2 3 6 2
3 6 7 1 3 1 4 5 6 2 7 4 2 5
5 7 4 1 6 1 5 4 3 7 2 6 3 2
2 6 7 2 1 5 1 4 6 3 7 5 4 3
4 5 6 7 1 4 1 5 3 6 2 7 3 2
2 3 7 2 6 3 5 1 4 1 7 6 5 4
3 4 5 7 3 6 4 1 5 1 2 7 6 2
2 3 6 2 7 3 4 5 1 6 1 4 7 5
5 2 4 7 2 6 5 4 1 3 1 7 6 3
2 6 3 2 7 4 3 5 6 1 4 1 7 5
2 6 3 2 5 7 3 4 6 1 5 1 4 7
2 4 7 2 3 6 4 5 3 1 7 1 6 5
5 2 7 3 2 6 5 3 4 1 7 1 6 4
5 2 4 6 2 7 5 4 3 1 6 1 3 7
3 5 7 2 3 6 2 5 4 1 7 1 6 4
2 7 4 2 3 5 6 4 3 7 1 5 1 6
2 5 6 2 3 7 4 5 3 6 1 4 1 7
5 2 6 4 2 7 5 3 4 6 1 3 1 7
5 7 2 3 6 2 5 3 4 7 1 6 1 4
5 3 6 7 2 3 5 2 4 6 1 7 1 4
3 4 6 7 3 2 4 5 2 6 1 7 1 5
7 2 6 3 2 4 5 3 7 6 4 1 5 1
7 2 4 6 2 3 5 4 7 3 6 1 5 1
6 2 7 4 2 3 5 6 4 3 7 1 5 1
7 2 4 5 2 6 3 4 7 5 3 1 6 1
5 7 2 6 3 2 5 4 3 7 6 1 4 1
7 3 6 2 5 3 2 4 7 6 5 1 4 1
3 7 4 6 3 2 5 4 2 7 6 1 5 1
3 5 7 4 3 6 2 5 4 2 7 1 6 1
5 3 6 4 7 3 5 2 4 6 2 1 7 1
4 6 3 5 7 4 3 2 6 5 2 1 7 1
The program will generate all possible intervals for the given numbers. The output is displayed in the following format: each line represents an interval, and the numbers are separated by spaces. For example, the output "4 1 3 1 2 4 3 2" represents one interval for the number 4.
Time Complexity
The time complexity of this algorithm depends on the size of the intervals, denoted as 'n'. Since the algorithm uses recursion, the time complexity can be expressed as O(2^n). This is because, in the worst case, the algorithm explores all possible combinations of intervals.
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