Problem Statement
The signature of a permutation is a string that is computed as follows: for each pair of consecutive elements of the permutation, write down the letter 'I' (increasing) if the second element is greater than the first one, otherwise write down the letter 'D' (decreasing).
For example, the signature of the permutation {3,1,2,7,4,6,5} is "DIIDID".
Your task is to reverse this computation: You are given a
Definition
- Class:
- PermutationSignature
- Method:
- reconstruct
- Parameters:
- String
- Returns:
- int[]
- Method signature:
- int[] reconstruct(String signature)
- (be sure your method is public)
Notes
- For any positive integer N, a permutation of N elements is a sequence of length N that contains each of the integers 1 through N exactly once.
- To compare two permutations A and B, find the smallest index i such that A[i] and B[i] differ. If A[i] < B[i], we say that A is lexicographically smaller than B, and vice versa.
Constraints
- signature will contain between 1 and 50 characters, inclusive.
- Each character in signature will be either 'I' or 'D'.
Examples
"IIIII"
Returns: {1, 2, 3, 4, 5, 6 }
"DI"
Returns: {2, 1, 3 }
There are two permutations with this signature: {3,1,2} and {2,1,3}. You must return the lexicographically smaller one.
"IIIID"
Returns: {1, 2, 3, 4, 6, 5 }
"DIIDID"
Returns: {2, 1, 3, 5, 4, 7, 6 }
This is the signature from the problem statement. Note that the correct answer is not the permutation from the problem statement.
"D"
Returns: {2, 1 }
"I"
Returns: {1, 2 }
"DD"
Returns: {3, 2, 1 }
"DI"
Returns: {2, 1, 3 }
"ID"
Returns: {1, 3, 2 }
"II"
Returns: {1, 2, 3 }
"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII"
Returns: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 }
"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"
Returns: {51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }
"DIDIIIDIDIDIDIDIDIIDIDIDIDIDDDDD"
Returns: {2, 1, 4, 3, 5, 6, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15, 18, 17, 19, 21, 20, 23, 22, 25, 24, 27, 26, 33, 32, 31, 30, 29, 28 }
"IIIDIDIDIDIIDDIDDDIDDIDIIIIIII"
Returns: {1, 2, 3, 5, 4, 7, 6, 9, 8, 11, 10, 12, 15, 14, 13, 19, 18, 17, 16, 22, 21, 20, 24, 23, 25, 26, 27, 28, 29, 30, 31 }
"IDIIDIDIDIDIDIDDDDDDDDDDDIIIIIIIIDIDDDDDI"
Returns: {1, 3, 2, 4, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 27, 28, 29, 30, 31, 32, 33, 35, 34, 41, 40, 39, 38, 37, 36, 42 }
"IDIIDIDIDIDIDIDDDDDDDDDDDIIIIIIIIDIDDDDDIDDDDD"
Returns: {1, 3, 2, 4, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 27, 28, 29, 30, 31, 32, 33, 35, 34, 41, 40, 39, 38, 37, 36, 47, 46, 45, 44, 43, 42 }
"IDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDID"
Returns: {1, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14, 17, 16, 19, 18, 21, 20, 23, 22, 25, 24, 27, 26, 29, 28, 31, 30, 33, 32, 35, 34, 37, 36, 39, 38, 41, 40, 43, 42, 45, 44, 47, 46, 49, 48, 51, 50 }
"DIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDIDI"
Returns: {2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15, 18, 17, 20, 19, 22, 21, 24, 23, 26, 25, 28, 27, 30, 29, 32, 31, 34, 33, 36, 35, 38, 37, 40, 39, 42, 41, 44, 43, 46, 45, 48, 47, 50, 49, 51 }
"IDIDIDIDIDIDIDIDIDIDIIIDIDIDIDIDIDIDIDIDIDIDIDIDID"
Returns: {1, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14, 17, 16, 19, 18, 21, 20, 22, 23, 25, 24, 27, 26, 29, 28, 31, 30, 33, 32, 35, 34, 37, 36, 39, 38, 41, 40, 43, 42, 45, 44, 47, 46, 49, 48, 51, 50 }
"IDIDIDIDIDIDIDIDIDIDIIIDIDIDIDIDIDIDDDIDIDIDIDIDID"
Returns: {1, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14, 17, 16, 19, 18, 21, 20, 22, 23, 25, 24, 27, 26, 29, 28, 31, 30, 33, 32, 35, 34, 39, 38, 37, 36, 41, 40, 43, 42, 45, 44, 47, 46, 49, 48, 51, 50 }
"IIIIIIIIIIIIIIDIDIDIIIIIIIIIIDIIIIIIIIIIIIIIIIII"
Returns: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 15, 18, 17, 20, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 }
"IIIIIIIIIIIIIIDIDIDIIIIIIIIIIDIIIIIIIIIIIIIIIIIID"
Returns: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 15, 18, 17, 20, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 49 }
"DIIIIIIIIIIIIIIDIDIDIIIIIIIIIIDIIIIIIIIIIIIIIIIII"
Returns: {2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 16, 19, 18, 21, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 }
"DDDDDDDDDDDDDDDIIDDDDDDIDDDDDDDDDDDDDDDDDDDID"
Returns: {16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 17, 24, 23, 22, 21, 20, 19, 18, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 46, 45 }
"DIIDIDIDIIDIID"
Returns: {2, 1, 3, 5, 4, 7, 6, 9, 8, 10, 12, 11, 13, 15, 14 }
"IIIIDIDIDIIDIDIID"
Returns: {1, 2, 3, 4, 6, 5, 8, 7, 10, 9, 11, 13, 12, 15, 14, 16, 18, 17 }
"DIIDIDIIDIDDIDID"
Returns: {2, 1, 3, 5, 4, 7, 6, 8, 10, 9, 13, 12, 11, 15, 14, 17, 16 }
"IIIIIIIIDIDIDIDIDII"
Returns: {1, 2, 3, 4, 5, 6, 7, 8, 10, 9, 12, 11, 14, 13, 16, 15, 18, 17, 19, 20 }
"IDDDIDI"
Returns: {1, 5, 4, 3, 2, 7, 6, 8 }
"IIIIIIIIIDIDIDIIIIDIDIDIDDID"
Returns: {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 10, 13, 12, 15, 14, 16, 17, 18, 20, 19, 22, 21, 24, 23, 27, 26, 25, 29, 28 }
"DIIIIIIIDIIIIIIIDIDIDIIIIIIIIDDDDDDD"
Returns: {2, 1, 3, 4, 5, 6, 7, 8, 10, 9, 11, 12, 13, 14, 15, 16, 18, 17, 20, 19, 22, 21, 23, 24, 25, 26, 27, 28, 29, 37, 36, 35, 34, 33, 32, 31, 30 }
"DIIDDIIIDIDIDDDDIIIIIIIIIIIDDDIDDDIIIIIIIDIDIDIDI"
Returns: {2, 1, 3, 6, 5, 4, 7, 8, 10, 9, 12, 11, 17, 16, 15, 14, 13, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 31, 30, 29, 28, 35, 34, 33, 32, 36, 37, 38, 39, 40, 41, 43, 42, 45, 44, 47, 46, 49, 48, 50 }
"IDDDIIDDDIDDDIDDDIDDDDIIDIDIDDDDDDIIDDDDDIDIDDIDDI"
Returns: {1, 5, 4, 3, 2, 6, 10, 9, 8, 7, 14, 13, 12, 11, 18, 17, 16, 15, 23, 22, 21, 20, 19, 24, 26, 25, 28, 27, 35, 34, 33, 32, 31, 30, 29, 36, 42, 41, 40, 39, 38, 37, 44, 43, 47, 46, 45, 50, 49, 48, 51 }
"DDDDDDDDDDDIIDDDDDDDDDDIIIDDDDDDDDDIDDDDDDDDDDDDD"
Returns: {12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 13, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 25, 26, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37 }
"DDDDDDDDDIDDDDDDDDIDDDDDDDDDDDDDIIIIIIIDDDDDDDID"
Returns: {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 19, 18, 17, 16, 15, 14, 13, 12, 11, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 34, 35, 36, 37, 38, 39, 47, 46, 45, 44, 43, 42, 41, 40, 49, 48 }
"DDDDDIDIDDDDDDDDDDDDIDDDDDDDIIIIDDDDDDIIDDDDDDDDID"
Returns: {6, 5, 4, 3, 2, 1, 8, 7, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 29, 28, 27, 26, 25, 24, 23, 22, 30, 31, 32, 39, 38, 37, 36, 35, 34, 33, 40, 49, 48, 47, 46, 45, 44, 43, 42, 41, 51, 50 }
"DDD"
Returns: {4, 3, 2, 1 }
"IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII"
Returns: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34 }
"IDDDDDDDDDDDDDDDDII"
Returns: {1, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 19, 20 }
"DDI"
Returns: {3, 2, 1, 4 }
"DDDIIIIDDD"
Returns: {4, 3, 2, 1, 5, 6, 7, 11, 10, 9, 8 }
"DDDDI"
Returns: {5, 4, 3, 2, 1, 6 }
"DDIIIIDIIDDIIDDDDIDIDDD"
Returns: {3, 2, 1, 4, 5, 6, 8, 7, 9, 12, 11, 10, 13, 18, 17, 16, 15, 14, 20, 19, 24, 23, 22, 21 }
"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDIIIIIIIIIIDDDDDDDDDDD"
Returns: {30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 31, 32, 33, 34, 35, 36, 37, 38, 39, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40 }
"DIDDID"
Returns: {2, 1, 5, 4, 3, 7, 6 }
"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"
Returns: {49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }
"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"
Returns: {41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }
"DDDDDDDDDDDDD"
Returns: {14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }
"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"
Returns: {48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }
"DDDDDDDDD"
Returns: {10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }
"DDDIDDD"
Returns: {4, 3, 2, 1, 8, 7, 6, 5 }
"DDDDDIIIIIDDDDDIIIIIDDDDDIIIIIDDDDDIIIIIDDDDDIIIII"
Returns: {6, 5, 4, 3, 2, 1, 7, 8, 9, 10, 16, 15, 14, 13, 12, 11, 17, 18, 19, 20, 26, 25, 24, 23, 22, 21, 27, 28, 29, 30, 36, 35, 34, 33, 32, 31, 37, 38, 39, 40, 46, 45, 44, 43, 42, 41, 47, 48, 49, 50, 51 }
"DDDIIIIDDDIIIIIDDDDDDDIIIIIIIIIIIIIDDDDDDDDDDDD"
Returns: {4, 3, 2, 1, 5, 6, 7, 11, 10, 9, 8, 12, 13, 14, 15, 23, 22, 21, 20, 19, 18, 17, 16, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36 }
"IDDDDDDDDDDDDDDDDIIDDDDDDDDDDDD"
Returns: {1, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 19, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20 }
"IDDDDDIIDDDDIIDDDDIIDDDIIDDDDDDIIDDDDDDDIIDDDDIIDD"
Returns: {1, 7, 6, 5, 4, 3, 2, 8, 13, 12, 11, 10, 9, 14, 19, 18, 17, 16, 15, 20, 24, 23, 22, 21, 25, 32, 31, 30, 29, 28, 27, 26, 33, 41, 40, 39, 38, 37, 36, 35, 34, 42, 47, 46, 45, 44, 43, 48, 51, 50, 49 }
"DDIDIIDIIDDDDDDIIIIIIDDDDIIIDDIDIIDIDD"
Returns: {3, 2, 1, 5, 4, 6, 8, 7, 9, 16, 15, 14, 13, 12, 11, 10, 17, 18, 19, 20, 21, 26, 25, 24, 23, 22, 27, 28, 31, 30, 29, 33, 32, 34, 36, 35, 39, 38, 37 }
"DDDDDD"
Returns: {7, 6, 5, 4, 3, 2, 1 }
"DDDDDDIIIIIIIDDDDDDIIIIIIIIIDDDDDDDIIIIIIDIDIDIDDD"
Returns: {7, 6, 5, 4, 3, 2, 1, 8, 9, 10, 11, 12, 13, 20, 19, 18, 17, 16, 15, 14, 21, 22, 23, 24, 25, 26, 27, 28, 36, 35, 34, 33, 32, 31, 30, 29, 37, 38, 39, 40, 41, 43, 42, 45, 44, 47, 46, 51, 50, 49, 48 }
"DDDDDDDDDDDDDDIIIIIIIIIIIIIIIIIIIIIIDDDDDIIIIIIIII"
Returns: {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 42, 41, 40, 39, 38, 37, 43, 44, 45, 46, 47, 48, 49, 50, 51 }
"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"
Returns: {50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }
"IDDDDD"
Returns: {1, 7, 6, 5, 4, 3, 2 }
"DDIDIDIDIDDDIDIDIDDDIDDIDIIIDIIDIDIDIDIDIIDIIIDIID"
Returns: {3, 2, 1, 5, 4, 7, 6, 9, 8, 13, 12, 11, 10, 15, 14, 17, 16, 21, 20, 19, 18, 24, 23, 22, 26, 25, 27, 28, 30, 29, 31, 33, 32, 35, 34, 37, 36, 39, 38, 41, 40, 42, 44, 43, 45, 46, 48, 47, 49, 51, 50 }
"DDDDIIIIDDIIDDDDIDIDIDDDDD"
Returns: {5, 4, 3, 2, 1, 6, 7, 8, 11, 10, 9, 12, 17, 16, 15, 14, 13, 19, 18, 21, 20, 27, 26, 25, 24, 23, 22 }
"DIDDDIIDIIDDDDDIIIDDDDDDIIDDIDDDIDIDDDIDIIDIDDD"
Returns: {2, 1, 6, 5, 4, 3, 7, 9, 8, 10, 16, 15, 14, 13, 12, 11, 17, 18, 25, 24, 23, 22, 21, 20, 19, 26, 29, 28, 27, 33, 32, 31, 30, 35, 34, 39, 38, 37, 36, 41, 40, 42, 44, 43, 48, 47, 46, 45 }
"DDDDDDDDDDIIIIIIIIIIDDDDDDDDDDIIIIIIIIIIDDDDDIIIII"
Returns: {11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 12, 13, 14, 15, 16, 17, 18, 19, 20, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 32, 33, 34, 35, 36, 37, 38, 39, 40, 46, 45, 44, 43, 42, 41, 47, 48, 49, 50, 51 }
"DDDDDDDDDIDDDDDDDDIDDDDDDDDDIDDDIIDDIIIDIDIIDI"
Returns: {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 19, 18, 17, 16, 15, 14, 13, 12, 11, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 33, 32, 31, 30, 34, 37, 36, 35, 38, 39, 41, 40, 43, 42, 44, 46, 45, 47 }
"DDDDIIIIDDDD"
Returns: {5, 4, 3, 2, 1, 6, 7, 8, 13, 12, 11, 10, 9 }
"DDDDDDDDDDDDDDD"
Returns: {16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }
"DIIIDDDDDDDIDIDIDDDID"
Returns: {2, 1, 3, 4, 12, 11, 10, 9, 8, 7, 6, 5, 14, 13, 16, 15, 20, 19, 18, 17, 22, 21 }
"DDDDDDDDDDDDDDDDDDDDDDDDIDDDDDDDDDDDDDDDDIDDDDDDDD"
Returns: {25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 51, 50, 49, 48, 47, 46, 45, 44, 43 }
"IIDDDI"
Returns: {1, 2, 6, 5, 4, 3, 7 }
"DIDIDI"
Returns: {2, 1, 4, 3, 6, 5, 7 }
"DDDIIIIDDDIDIDIDDDD"
Returns: {4, 3, 2, 1, 5, 6, 7, 11, 10, 9, 8, 13, 12, 15, 14, 20, 19, 18, 17, 16 }
"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDI"
Returns: {50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 51 }
"IIDDI"
Returns: {1, 2, 5, 4, 3, 6 }
"DIIDDD"
Returns: {2, 1, 3, 7, 6, 5, 4 }
"DIIDIDDIIDIDDIIDIDDIIDIDDIIDIDDIIDIDDIIDIDDIID"
Returns: {2, 1, 3, 5, 4, 8, 7, 6, 9, 11, 10, 14, 13, 12, 15, 17, 16, 20, 19, 18, 21, 23, 22, 26, 25, 24, 27, 29, 28, 32, 31, 30, 33, 35, 34, 38, 37, 36, 39, 41, 40, 44, 43, 42, 45, 47, 46 }
"DDDDDDDDIIIIIIIIIIIIIIIIIIIDDDDDDDIIIIIIIIIIIIIIII"
Returns: {9, 8, 7, 6, 5, 4, 3, 2, 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 35, 34, 33, 32, 31, 30, 29, 28, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 }
"IDDIIDDDIIIDDDDIIIIDDDDDIIIIIDDDDDDDDDDDDDDDDDDDDI"
Returns: {1, 4, 3, 2, 5, 9, 8, 7, 6, 10, 11, 16, 15, 14, 13, 12, 17, 18, 19, 25, 24, 23, 22, 21, 20, 26, 27, 28, 29, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 51 }
"DDDDDDDDDDDDDDDDDDD"
Returns: {20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }
"IDD"
Returns: {1, 4, 3, 2 }
"DDDIIDDDDIIDDDI"
Returns: {4, 3, 2, 1, 5, 10, 9, 8, 7, 6, 11, 15, 14, 13, 12, 16 }
"DDDDDDDIIDDDIDDIDDDD"
Returns: {8, 7, 6, 5, 4, 3, 2, 1, 9, 13, 12, 11, 10, 16, 15, 14, 21, 20, 19, 18, 17 }
"DDDIIIDDDIIIDDDIIIDDDIIIDDD"
Returns: {4, 3, 2, 1, 5, 6, 10, 9, 8, 7, 11, 12, 16, 15, 14, 13, 17, 18, 22, 21, 20, 19, 23, 24, 28, 27, 26, 25 }
"IDDDDDDDDDDDDIIIIIIIIIIIIIDIID"
Returns: {1, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 27, 29, 31, 30 }
"DDDDD"
Returns: {6, 5, 4, 3, 2, 1 }
"IDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"
Returns: {1, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 }
"IIDIDIDDDIDIDIDDDIDIDIDIDIDDDIDIIIDDDIIIIDDDIDIDID"
Returns: {1, 2, 4, 3, 6, 5, 10, 9, 8, 7, 12, 11, 14, 13, 18, 17, 16, 15, 20, 19, 22, 21, 24, 23, 26, 25, 30, 29, 28, 27, 32, 31, 33, 34, 38, 37, 36, 35, 39, 40, 41, 45, 44, 43, 42, 47, 46, 49, 48, 51, 50 }
"IDDI"
Returns: {1, 4, 3, 2, 5 }
"DIIDIDDIIDIDDIIDIDDIIDIDDDIIIDDDDDDDDDDIIIIIII"
Returns: {2, 1, 3, 5, 4, 8, 7, 6, 9, 11, 10, 14, 13, 12, 15, 17, 16, 20, 19, 18, 21, 23, 22, 27, 26, 25, 24, 28, 29, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 41, 42, 43, 44, 45, 46, 47 }
"IIIDIDIDDIDIDIDIIIDIDIDIIDDDDDIDIDIDDDDDDDIIIIIIID"
Returns: {1, 2, 3, 5, 4, 7, 6, 10, 9, 8, 12, 11, 14, 13, 16, 15, 17, 18, 20, 19, 22, 21, 24, 23, 25, 31, 30, 29, 28, 27, 26, 33, 32, 35, 34, 43, 42, 41, 40, 39, 38, 37, 36, 44, 45, 46, 47, 48, 49, 51, 50 }
"IDDIDDIDDDIIDIIDIIDIDIDD"
Returns: {1, 4, 3, 2, 7, 6, 5, 11, 10, 9, 8, 12, 14, 13, 15, 17, 16, 18, 20, 19, 22, 21, 25, 24, 23 }
"DDDDDDDDDDDDDI"
Returns: {14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 15 }
"DDIIDDIIDDII"
Returns: {3, 2, 1, 4, 7, 6, 5, 8, 11, 10, 9, 12, 13 }
"IDDD"
Returns: {1, 5, 4, 3, 2 }
"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDIII"
Returns: {31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 32, 33, 34 }
"DIDIDIDIDIDIDDIIDIDIDIDIDIDIDIDIDIDIIDDIDIDIDIDDI"
Returns: {2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 15, 14, 13, 16, 18, 17, 20, 19, 22, 21, 24, 23, 26, 25, 28, 27, 30, 29, 32, 31, 34, 33, 36, 35, 37, 40, 39, 38, 42, 41, 44, 43, 46, 45, 49, 48, 47, 50 }
"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"
Returns: {43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }
"DDIDDI"
Returns: {3, 2, 1, 6, 5, 4, 7 }
"DDDIDI"
Returns: {4, 3, 2, 1, 6, 5, 7 }
"DIDIDIIDIIDIDDIDIIIIIDDIIIIDDIDIDDIIIDIIDDDDIDIIDI"
Returns: {2, 1, 4, 3, 6, 5, 7, 9, 8, 10, 12, 11, 15, 14, 13, 17, 16, 18, 19, 20, 21, 24, 23, 22, 25, 26, 27, 30, 29, 28, 32, 31, 35, 34, 33, 36, 37, 39, 38, 40, 45, 44, 43, 42, 41, 47, 46, 48, 50, 49, 51 }
"DDDDDDDDDD"
Returns: {11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }
"DIIDIDD"
Returns: {2, 1, 3, 5, 4, 8, 7, 6 }
"IIDDDIIDDDIIDDIDDDDDDDDDIIIIDIIDDDIDDIDDDDIIII"
Returns: {1, 2, 6, 5, 4, 3, 7, 11, 10, 9, 8, 12, 15, 14, 13, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 26, 27, 28, 30, 29, 31, 35, 34, 33, 32, 38, 37, 36, 43, 42, 41, 40, 39, 44, 45, 46, 47 }
"DDDDDDDDDDDDDDDDDDDIDDDDIIDIIIDIIDDDIDIIDDIDIIDDDI"
Returns: {20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 25, 24, 23, 22, 21, 26, 28, 27, 29, 30, 32, 31, 33, 37, 36, 35, 34, 39, 38, 40, 43, 42, 41, 45, 44, 46, 50, 49, 48, 47, 51 }
"DDDIDDDI"
Returns: {4, 3, 2, 1, 8, 7, 6, 5, 9 }
"DIDIIDIDDIIDDIIIDIDDDIIIIDDDDIDIDIDIDIDIDIDIDIDIDI"
Returns: {2, 1, 4, 3, 5, 7, 6, 10, 9, 8, 11, 14, 13, 12, 15, 16, 18, 17, 22, 21, 20, 19, 23, 24, 25, 30, 29, 28, 27, 26, 32, 31, 34, 33, 36, 35, 38, 37, 40, 39, 42, 41, 44, 43, 46, 45, 48, 47, 50, 49, 51 }