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" "",""