10分コーディング

via http://ameblo.jp/programming/entry-10001721422.html
15分くらいかかったのでダメプログラマです!

package example;

public class Main {
    public static void main(String[] args) {
        Cards cards = new Cards();

        dump(cards.deal(4, "123123123"));
        dump(cards.deal(6, "012345012345012345"));
        dump(cards.deal(4, "111122223333"));
        dump(cards.deal(1, "012345012345012345"));
        dump(cards.deal(2, ""));
    }

    private static void dump(String[] arg) {
        StringBuilder sb = new StringBuilder();
        for (String s : arg) {
            sb.append("\"").append(s).append("\"").append(",");
        }
        sb.delete(sb.length() - 1, sb.length());
        System.out.println(sb);
    }
}

class Cards {
    public String[] deal(int numPlayers, String deck) {
        char[] newDeckArray = resizeDeck(numPlayers, deck.toCharArray());

        String[] ret = new String[numPlayers];
        for (int i = 0; i < numPlayers; i++) {
            ret[i] = pick(i, numPlayers, newDeckArray);
        }
        return ret;
    }

    private char[] resizeDeck(int numPlayers, char[] deckArray) {
        int residue = deckArray.length % numPlayers;
        char[] newDeckArray = new char[deckArray.length - residue];
        for (int i = 0; i < newDeckArray.length; i++) {
            newDeckArray[i] = deckArray[i];
        }
        return newDeckArray;
    }

    private String pick(int startPos, int addAmount, char[] deckArray) {
        char[] card = new char[deckArray.length / addAmount];
        int count = 0;
        for (int i = startPos; i < deckArray.length; i += addAmount) {
            card[count] = deckArray[i];
            count++;
        }
        return new String(card);
    }
}

出力結果

"12","23","31","12"
"000","111","222","333","444","555"
"123","123","123","123"
"012345012345012345"
"",""