[배열] 카드 셔플
2023. 12. 5.
트럼프 카드 컷 (기리, 키리) , 셔플 (riffle) 배열 섞기
cut은 카드의 반을 잘라 섞지 않고 윗부분을 아래로 나머지 반을 그 위로.
riffle 은 반으로 나눈 카드를 B(윗부분), A(아랫부분)로 분리 A부터 B 순서로 번갈아가며
한장씩 맨 아래 카드부터 바닥에 쌓는다.
1,2,3, 4,5,6 일 때
6,3 ,5,2 ,4,1 순서로 쌓으면
카드 배열은 1,4,2,5,3,6 으로 섞인다는 결과.
riffle, cut , riffle 순으로 섞으면
1. riffle - 1,4,2,5,3,6
2. cut - 5,3,6,1,4,2
3. riffle - 5,1,3,4,6,2
public class CardShuffle {
private static String[] numbers = {"1", "2", "3", "4", "5", "6"};
private static String[] shuffles = {"riffle", "cut", "riffle"};
public static void main(String[] args) {
try {
String[] answer = new String[numbers.length];
for(String cond : shuffles){
answer = getShuffle(cond, numbers);
}
for(int i = 0 ; i<answer.length ; i++){
if(i>0) System.out.print(",");
System.out.print(answer[i]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static String[] getShuffle(String cond, String[] array){
String[] result = array;
int half_length = array.length / 2;
String[] part_a = new String[half_length];
String[] part_b = new String[half_length];
for(int i=0; i<half_length ; i++){
part_a[i] = array[i+half_length];
part_b[i] = array[i];
}
if("cut".equals(cond)){
for(int i=0; i<half_length; i++){
result[i] = part_a[i];
result[i+half_length] = part_b[i];
}
}else if("riffle".equals(cond)){
int index = array.length - 1;
for(int i=half_length - 1; i >= 0; i-- ){
result[index] = part_a[i];
index--;
result[index] = part_b[i];
index--;
}
}
return result;
}
}
'ETC' 카테고리의 다른 글
[Windows11] 우클릭 컨텍스트 메뉴 예전 스타일 win10 버전으로 (0) | 2024.03.25 |
---|---|
[tmax] Jeus/WebtoB 라이센스 신청 주소 (0) | 2024.02.26 |
[Mustache] mustache의 사용법 간단 정리 (출처: 두더지개발자) (0) | 2023.07.14 |
[Windows] symbolic 링크 (심볼릭 링크) 만들기 (0) | 2022.07.21 |
[배경화면] 아이폰13배경화면 (0) | 2022.03.23 |