Cody

# Problem 1649. Magic - Faro Shuffle

Solution 273963

Submitted on 5 Jul 2013 by Tim
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

### Test Suite

Test Status Code Input and Output
1   Pass
%% n=52; % Quiz answer : Takes 8 Faro Shuffles deck = Faro(n); deck_exp=[1 27 2 28 3 29 4 30 5 31 6 32 7 33 8 34 9 35 10 36 11 37 12 38 13 39 14 40 15 41 16 42 17 43 18 44 19 45 20 46 21 47 22 48 23 49 24 50 25 51 26 52 1 14 27 40 2 15 28 41 3 16 29 42 4 17 30 43 5 18 31 44 6 19 32 45 7 20 33 46 8 21 34 47 9 22 35 48 10 23 36 49 11 24 37 50 12 25 38 51 13 26 39 52 1 33 14 46 27 8 40 21 2 34 15 47 28 9 41 22 3 35 16 48 29 10 42 23 4 36 17 49 30 11 43 24 5 37 18 50 31 12 44 25 6 38 19 51 32 13 45 26 7 39 20 52 1 17 33 49 14 30 46 11 27 43 8 24 40 5 21 37 2 18 34 50 15 31 47 12 28 44 9 25 41 6 22 38 3 19 35 51 16 32 48 13 29 45 10 26 42 7 23 39 4 20 36 52 1 9 17 25 33 41 49 6 14 22 30 38 46 3 11 19 27 35 43 51 8 16 24 32 40 48 5 13 21 29 37 45 2 10 18 26 34 42 50 7 15 23 31 39 47 4 12 20 28 36 44 52 1 5 9 13 17 21 25 29 33 37 41 45 49 2 6 10 14 18 22 26 30 34 38 42 46 50 3 7 11 15 19 23 27 31 35 39 43 47 51 4 8 12 16 20 24 28 32 36 40 44 48 52 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 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 52]; assert(isequal(deck,deck_exp))

``` ```

2   Pass
%% n=16; deck = Faro(n); deck_exp=[1 9 2 10 3 11 4 12 5 13 6 14 7 15 8 16 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 1 3 5 7 9 11 13 15 2 4 6 8 10 12 14 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ]; assert(isequal(deck,deck_exp))

``` ```

3   Pass
%% n=32; deck = Faro(n); deck_exp=[1 17 2 18 3 19 4 20 5 21 6 22 7 23 8 24 9 25 10 26 11 27 12 28 13 29 14 30 15 31 16 32 1 9 17 25 2 10 18 26 3 11 19 27 4 12 20 28 5 13 21 29 6 14 22 30 7 15 23 31 8 16 24 32 1 5 9 13 17 21 25 29 2 6 10 14 18 22 26 30 3 7 11 15 19 23 27 31 4 8 12 16 20 24 28 32 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 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 ]; assert(isequal(deck,deck_exp))

``` ```

4   Pass
%% n=64; deck = Faro(n); deck_exp=[1 33 2 34 3 35 4 36 5 37 6 38 7 39 8 40 9 41 10 42 11 43 12 44 13 45 14 46 15 47 16 48 17 49 18 50 19 51 20 52 21 53 22 54 23 55 24 56 25 57 26 58 27 59 28 60 29 61 30 62 31 63 32 64 1 17 33 49 2 18 34 50 3 19 35 51 4 20 36 52 5 21 37 53 6 22 38 54 7 23 39 55 8 24 40 56 9 25 41 57 10 26 42 58 11 27 43 59 12 28 44 60 13 29 45 61 14 30 46 62 15 31 47 63 16 32 48 64 1 9 17 25 33 41 49 57 2 10 18 26 34 42 50 58 3 11 19 27 35 43 51 59 4 12 20 28 36 44 52 60 5 13 21 29 37 45 53 61 6 14 22 30 38 46 54 62 7 15 23 31 39 47 55 63 8 16 24 32 40 48 56 64 1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 2 6 10 14 18 22 26 30 34 38 42 46 50 54 58 62 3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 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 52 53 54 55 56 57 58 59 60 61 62 63 64 ]; assert(isequal(deck,deck_exp))

``` ```

5   Pass
%% n=54; deck = Faro(n); deck_exp=[1 28 2 29 3 30 4 31 5 32 6 33 7 34 8 35 9 36 10 37 11 38 12 39 13 40 14 41 15 42 16 43 17 44 18 45 19 46 20 47 21 48 22 49 23 50 24 51 25 52 26 53 27 54 1 41 28 15 2 42 29 16 3 43 30 17 4 44 31 18 5 45 32 19 6 46 33 20 7 47 34 21 8 48 35 22 9 49 36 23 10 50 37 24 11 51 38 25 12 52 39 26 13 53 40 27 14 54 1 21 41 8 28 48 15 35 2 22 42 9 29 49 16 36 3 23 43 10 30 50 17 37 4 24 44 11 31 51 18 38 5 25 45 12 32 52 19 39 6 26 46 13 33 53 20 40 7 27 47 14 34 54 1 11 21 31 41 51 8 18 28 38 48 5 15 25 35 45 2 12 22 32 42 52 9 19 29 39 49 6 16 26 36 46 3 13 23 33 43 53 10 20 30 40 50 7 17 27 37 47 4 14 24 34 44 54 1 6 11 16 21 26 31 36 41 46 51 3 8 13 18 23 28 33 38 43 48 53 5 10 15 20 25 30 35 40 45 50 2 7 12 17 22 27 32 37 42 47 52 4 9 14 19 24 29 34 39 44 49 54 1 30 6 35 11 40 16 45 21 50 26 2 31 7 36 12 41 17 46 22 51 27 3 32 8 37 13 42 18 47 23 52 28 4 33 9 38 14 43 19 48 24 53 29 5 34 10 39 15 44 20 49 25 54 1 42 30 18 6 47 35 23 11 52 40 28 16 4 45 33 21 9 50 38 26 14 2 43 31 19 7 48 36 24 12 53 41 29 17 5 46 34 22 10 51 39 27 15 3 44 32 20 8 49 37 25 13 54 1 48 42 36 30 24 18 12 6 53 47 41 35 29 23 17 11 5 52 46 40 34 28 22 16 10 4 51 45 39 33 27 21 15 9 3 50 44 38 32 26 20 14 8 2 49 43 37 31 25 19 13 7 54 1 51 48 45 42 39 36 33 30 27 24 21 18 15 12 9 6 3 53 50 47 44 41 38 35 32 29 26 23 20 17 14 11 8 5 2 52 49 46 43 40 37 34 31 28 25 22 19 16 13 10 7 4 54 1 26 51 23 48 20 45 17 42 14 39 11 36 8 33 5 30 2 27 52 24 49 21 46 18 43 15 40 12 37 9 34 6 31 3 28 53 25 50 22 47 19 44 16 41 13 38 10 35 7 32 4 29 54 1 40 26 12 51 37 23 9 48 34 20 6 45 31 17 3 42 28 14 53 39 25 11 50 36 22 8 47 33 19 5 44 30 16 2 41 27 13 52 38 24 10 49 35 21 7 46 32 18 4 43 29 15 54 1 47 40 33 26 19 12 5 51 44 37 30 23 16 9 2 48 41 34 27 20 13 6 52 45 38 31 24 17 10 3 49 42 35 28 21 14 7 53 46 39 32 25 18 11 4 50 43 36 29 22 15 8 54 1 24 47 17 40 10 33 3 26 49 19 42 12 35 5 28 51 21 44 14 37 7 30 53 23 46 16 39 9 32 2 25 48 18 41 11 34 4 27 50 20 43 13 36 6 29 52 22 45 15 38 8 31 54 1 39 24 9 47 32 17 2 40 25 10 48 33 18 3 41 26 11 49 34 19 4 42 27 12 50 35 20 5 43 28 13 51 36 21 6 44 29 14 52 37 22 7 45 30 15 53 38 23 8 46 31 16 54 1 20 39 5 24 43 9 28 47 13 32 51 17 36 2 21 40 6 25 44 10 29 48 14 33 52 18 37 3 22 41 7 26 45 11 30 49 15 34 53 19 38 4 23 42 8 27 46 12 31 50 16 35 54 1 37 20 3 39 22 5 41 24 7 43 26 9 45 28 11 47 30 13 49 32 15 51 34 17 53 36 19 2 38 21 4 40 23 6 42 25 8 44 27 10 46 29 12 48 31 14 50 33 16 52 35 18 54 1 19 37 2 20 38 3 21 39 4 22 40 5 23 41 6 24 42 7 25 43 8 26 44 9 27 45 10 28 46 11 29 47 12 30 48 13 31 49 14 32 50 15 33 51 16 34 52 17 35 53 18 36 54 1 10 19 28 37 46 2 11 20 29 38 47 3 12 21 30 39 48 4 13 22 31 40 49 5 14 23 32 41 50 6 15 24 33 42 51 7 16 25 34 43 52 8 17 26 35 44 53 9 18 27 36 45 54 1 32 10 41 19 50 28 6 37 15 46 24 2 33 11 42 20 51 29 7 38 16 47 25 3 34 12 43 21 52 30 8 39 17 48 26 4 35 13 44 22 53 31 9 40 18 49 27 5 36 14 45 23 54 1 43 32 21 10 52 41 30 19 8 50 39 28 17 6 48 37 26 15 4 46 35 24 13 2 44 33 22 11 53 42 31 20 9 51 40 29 18 7 49 38 27 16 5 47 36 25 14 3 45 34 23 12 54 1 22 43 11 32 53 21 42 10 31 52 20 41 9 30 51 19 40 8 29 50 18 39 7 28 49 17 38 6 27 48 16 37 5 26 47 15 36 4 25 46 14 35 3 24 45 13 34 2 23 44 12 33 54 1 38 22 6 43 27 11 48 32 16 53 37 21 5 42 26 10 47 31 15 52 36 20 4 41 25 9 46 30 14 51 35 19 3 40 24 8 45 29 13 50 34 18 2 39 23 7 44 28 12 49 33 17 54 1 46 38 30 22 14 6 51 43 35 27 19 11 3 48 40 32 24 16 8 53 45 37 29 21 13 5 50 42 34 26 18 10 2 47 39 31 23 15 7 52 44 36 28 20 12 4 49 41 33 25 17 9 54 1 50 46 42 38 34 30 26 22 18 14 10 6 2 51 47 43 39 35 31 27 23 19 15 11 7 3 52 48 44 40 36 32 28 24 20 16 12 8 4 53 49 45 41 37 33 29 25 21 17 13 9 5 54 1 52 50 48 46 44 42 40 38 36 34 32 30 28 26 24 22 20 18 16 14 12 10 8 6 4 2 53 51 49 47 45 43 41 39 37 35 33 31 29 27 25 23 21 19 17 15 13 11 9 7 5 3 54 1 53 52 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 54 1 27 53 26 52 25 51 24 50 23 49 22 48 21 47 20 46 19 45 18 44 17 43 16 42 15 41 14 40 13 39 12 38 11 37 10 36 9 35 8 34 7 33 6 32 5 31 4 30 3 29 2 28 54 1 14 27 40 53 13 26 39 52 12 25 38 51 11 24 37 50 10 23 36 49 9 22 35 48 8 21 34 47 7 20 33 46 6 19 32 45 5 18 31 44 4 17 30 43 3 16 29 42 2 15 28 41 54 1 34 14 47 27 7 40 20 53 33 13 46 26 6 39 19 52 32 12 45 25 5 38 18 51 31 11 44 24 4 37 17 50 30 10 43 23 3 36 16 49 29 9 42 22 2 35 15 48 28 8 41 21 54 1 44 34 24 14 4 47 37 27 17 7 50 40 30 20 10 53 43 33 23 13 3 46 36 26 16 6 49 39 29 19 9 52 42 32 22 12 2 45 35 25 15 5 48 38 28 18 8 51 41 31 21 11 54 1 49 44 39 34 29 24 19 14 9 4 52 47 42 37 32 27 22 17 12 7 2 50 45 40 35 30 25 20 15 10 5 53 48 43 38 33 28 23 18 13 8 3 51 46 41 36 31 26 21 16 11 6 54 1 25 49 20 44 15 39 10 34 5 29 53 24 48 19 43 14 38 9 33 4 28 52 23 47 18 42 13 37 8 32 3 27 51 22 46 17 41 12 36 7 31 2 26 50 21 45 16 40 11 35 6 30 54 1 13 25 37 49 8 20 32 44 3 15 27 39 51 10 22 34 46 5 17 29 41 53 12 24 36 48 7 19 31 43 2 14 26 38 50 9 21 33 45 4 16 28 40 52 11 23 35 47 6 18 30 42 54 1 7 13 19 25 31 37 43 49 2 8 14 20 26 32 38 44 50 3 9 15 21 27 33 39 45 51 4 10 16 22 28 34 40 46 52 5 11 17 23 29 35 41 47 53 6 12 18 24 30 36 42 48 54 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 1 29 4 32 7 35 10 38 13 41 16 44 19 47 22 50 25 53 28 3 31 6 34 9 37 12 40 15 43 18 46 21 49 24 52 27 2 30 5 33 8 36 11 39 14 42 17 45 20 48 23 51 26 54 1 15 29 43 4 18 32 46 7 21 35 49 10 24 38 52 13 27 41 2 16 30 44 5 19 33 47 8 22 36 50 11 25 39 53 14 28 42 3 17 31 45 6 20 34 48 9 23 37 51 12 26 40 54 1 8 15 22 29 36 43 50 4 11 18 25 32 39 46 53 7 14 21 28 35 42 49 3 10 17 24 31 38 45 52 6 13 20 27 34 41 48 2 9 16 23 30 37 44 51 5 12 19 26 33 40 47 54 1 31 8 38 15 45 22 52 29 6 36 13 43 20 50 27 4 34 11 41 18 48 25 2 32 9 39 16 46 23 53 30 7 37 14 44 21 51 28 5 35 12 42 19 49 26 3 33 10 40 17 47 24 54 1 16 31 46 8 23 38 53 15 30 45 7 22 37 52 14 29 44 6 21 36 51 13 28 43 5 20 35 50 12 27 42 4 19 34 49 11 26 41 3 18 33 48 10 25 40 2 17 32 47 9 24 39 54 1 35 16 50 31 12 46 27 8 42 23 4 38 19 53 34 15 49 30 11 45 26 7 41 22 3 37 18 52 33 14 48 29 10 44 25 6 40 21 2 36 17 51 32 13 47 28 9 43 24 5 39 20 54 1 18 35 52 16 33 50 14 31 48 12 29 46 10 27 44 8 25 42 6 23 40 4 21 38 2 19 36 53 17 34 51 15 32 49 13 30 47 11 28 45 9 26 43 7 24 41 5 22 39 3 20 37 54 1 36 18 53 35 17 52 34 16 51 33 15 50 32 14 49 31 13 48 30 12 47 29 11 46 28 10 45 27 9 44 26 8 43 25 7 42 24 6 41 23 5 40 22 4 39 21 3 38 20 2 37 19 54 1 45 36 27 18 9 53 44 35 26 17 8 52 43 34 25 16 7 51 42 33 24 15 6 50 41 32 23 14 5 49 40 31 22 13 4 48 39 30 21 12 3 47 38 29 20 11 2 46 37 28 19 10 54 1 23 45 14 36 5 27 49 18 40 9 31 53 22 44 13 35 4 26 48 17 39 8 30 52 21 43 12 34 3 25 47 16 38 7 29 51 20 42 11 33 2 24 46 15 37 6 28 50 19 41 10 32 54 1 12 23 34 45 3 14 25 36 47 5 16 27 38 49 7 18 29 40 51 9 20 31 42 53 11 22 33 44 2 13 24 35 46 4 15 26 37 48 6 17 28 39 50 8 19 30 41 52 10 21 32 43 54 1 33 12 44 23 2 34 13 45 24 3 35 14 46 25 4 36 15 47 26 5 37 16 48 27 6 38 17 49 28 7 39 18 50 29 8 40 19 51 30 9 41 20 52 31 10 42 21 53 32 11 43 22 54 1 17 33 49 12 28 44 7 23 39 2 18 34 50 13 29 45 8 24 40 3 19 35 51 14 30 46 9 25 41 4 20 36 52 15 31 47 10 26 42 5 21 37 53 16 32 48 11 27 43 6 22 38 54 1 9 17 25 33 41 49 4 12 20 28 36 44 52 7 15 23 31 39 47 2 10 18 26 34 42 50 5 13 21 29 37 45 53 8 16 24 32 40 48 3 11 19 27 35 43 51 6 14 22 30 38 46 54 1 5 9 13 17 21 25 29 33 37 41 45 49 53 4 8 12 16 20 24 28 32 36 40 44 48 52 3 7 11 15 19 23 27 31 35 39 43 47 51 2 6 10 14 18 22 26 30 34 38 42 46 50 54 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 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 52 53 54 ]; assert(isequal(deck,deck_exp))

``` ```