CSES - KILO 2017 3/5 - Results
Submission details
Task:Card Trick
Sender:Koodi Ilolle
Submission time:2017-09-19 17:31:23 +0300
Language:Java
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.14 sdetails
#2ACCEPTED0.12 sdetails
#3ACCEPTED0.15 sdetails
#4ACCEPTED0.13 sdetails
#5ACCEPTED0.12 sdetails
#6ACCEPTED0.12 sdetails
#7ACCEPTED0.12 sdetails
#8ACCEPTED0.10 sdetails
#9ACCEPTED0.16 sdetails
#10ACCEPTED0.14 sdetails
#11ACCEPTED0.12 sdetails
#12ACCEPTED0.16 sdetails
#13ACCEPTED0.11 sdetails

Code

import java.util.*;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author henpeura
 */
public class CardTrick {

    public static void main(String[] args) {
        IO io = new IO();
        int length = io.nextInt();
        io.println(cardDeck(length));
        io.close();
    }

    /**
     * Kasataan pakka.
     *
     * @param length Pakassa olevien patakorttien lukumäärä
     * @return Pakan järjestys
     */
    private static String cardDeck(int length) {
        ArrayDeque<Integer> deck = new ArrayDeque<>();

        int card = length - 1;

        // Pistä pakkaan viimeinen kortti
        deck.addLast(length);

        while (card != 0) {
            // Lisää toinen kortti pakkaan
            deck.addFirst(card);

            // Shuffle
            deck = shuffle(deck, card);

            card--;
        }
        StringBuilder sb = new StringBuilder();
        for (Integer integer : deck) {
            sb.append(integer).append(" ");
        }
        return sb.toString().trim();
    }

    private static ArrayDeque<Integer> shuffle(ArrayDeque<Integer> deck, int n) {

        for (int i = 0; i < n; i++) {
            int card = deck.removeLast();
            deck.addFirst(card);
        }
        return deck;
    }
}

Test details

Test 1

Verdict: ACCEPTED

input
1

correct output
1

user output
1

Test 2

Verdict: ACCEPTED

input
2

correct output
2 1

user output
2 1

Test 3

Verdict: ACCEPTED

input
3

correct output
3 1 2

user output
3 1 2

Test 4

Verdict: ACCEPTED

input
4

correct output
2 1 4 3

user output
2 1 4 3

Test 5

Verdict: ACCEPTED

input
5

correct output
3 1 4 5 2

user output
3 1 4 5 2

Test 6

Verdict: ACCEPTED

input
6

correct output
4 1 6 3 2 5

user output
4 1 6 3 2 5

Test 7

Verdict: ACCEPTED

input
7

correct output
5 1 3 4 2 6 7

user output
5 1 3 4 2 6 7

Test 8

Verdict: ACCEPTED

input
8

correct output
3 1 7 5 2 6 8 4

user output
3 1 7 5 2 6 8 4

Test 9

Verdict: ACCEPTED

input
9

correct output
7 1 8 6 2 9 4 5 3

user output
7 1 8 6 2 9 4 5 3

Test 10

Verdict: ACCEPTED

input
10

correct output
9 1 8 5 2 4 7 6 3 10

user output
9 1 8 5 2 4 7 6 3 10

Test 11

Verdict: ACCEPTED

input
11

correct output
5 1 6 4 2 10 11 7 3 8 9

user output
5 1 6 4 2 10 11 7 3 8 9

Test 12

Verdict: ACCEPTED

input
12

correct output
7 1 4 9 2 11 10 8 3 6 5 12

user output
7 1 4 9 2 11 10 8 3 6 5 12

Test 13

Verdict: ACCEPTED

input
13

correct output
4 1 13 11 2 10 6 7 3 5 12 9 8

user output
4 1 13 11 2 10 6 7 3 5 12 9 8