#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void shuffle(int [][13]);
void print_trump(int [][13], int*, int*);
int main(void){
int trump_mark[4] = {100, 200, 300, 400}; //トランプの「柄」を格納する配列(print_trump関数内での表示用)
int trump_num[13] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; //トランプの「数字」を格納する配列(print_trump関数内での表示用)
int deck[4][13]={0}; //52枚のトランプの各要素は、それぞれどのトランプなのか決まっている(例:deck[0][0]:ハートのエース)。この配列に順番を記録する
shuffle(deck);
print_trump(deck, trump_mark, trump_num);
return 0;
}
void shuffle(int de[][13]) //初期化(すべての配列の値0)された(つまり、まだ引く順番が決まっていない)トランプを受け取る
{
int card_num, row, column;
for(card_num=1; card_num<=52; card_num++){ //シャッフルによって、デッキからランダムに引かれたトランプ(の要素)に1-52の数字を格納していく
do{
row
= rand()%4; //要素番号:0,1,2,3のいずれか1つを選択 column
= rand()%13; //要素番号:0,1,2,3,4,5,6,7,8,9,10,11,12のいずれか1つを選択
}while(de[row][column] !=0); //選択したトランプ(例:エースの1)に「順番」が既に割り当てられているならやり直し(再度トランプを選択)
de[row][column] = card_num; //トランプの各要素に1-52までの番号を振る
}
}
//card_numの番号通りにカードを表示する関数(シャッフルされたトランプを表示する関数)
void print_trump(int de[][13], int *tm, int *tn)
{
int card_num, row, column;
for(card_num=1; card_num<=52; card_num++){
for(row=0; row<4; row++){
for(column=0; column<13; column++){
if(de[row][column] == card_num){ //トランプが引かれる順番とcard_num番号が一致したら表示する
printf("%2d:%d-%d\n", card_num
, tm
[row
], tn
[column
]); }
}
}
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8dGltZS5oPgogdm9pZCBzaHVmZmxlKGludCBbXVsxM10pOwogdm9pZCBwcmludF90cnVtcChpbnQgW11bMTNdLCBpbnQqLCBpbnQqKTsKIGludCBtYWluKHZvaWQpewogICAgaW50IHRydW1wX21hcmtbNF0gPSB7MTAwLCAyMDAsIDMwMCwgNDAwfTsgIC8v44OI44Op44Oz44OX44Gu44CM5p+E44CN44KS5qC857SN44GZ44KL6YWN5YiX77yIcHJpbnRfdHJ1bXDplqLmlbDlhoXjgafjga7ooajnpLrnlKjvvIkKICAgIGludCB0cnVtcF9udW1bMTNdID0gezEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzfTsgICAvL+ODiOODqeODs+ODl+OBruOAjOaVsOWtl+OAjeOCkuagvOe0jeOBmeOCi+mFjeWIl++8iHByaW50X3RydW1w6Zai5pWw5YaF44Gn44Gu6KGo56S655So77yJCiAgICAKICAgIGludCBkZWNrWzRdWzEzXT17MH07ICAvLzUy5p6a44Gu44OI44Op44Oz44OX44Gu5ZCE6KaB57Sg44Gv44CB44Gd44KM44Ge44KM44Gp44Gu44OI44Op44Oz44OX44Gq44Gu44GL5rG644G+44Gj44Gm44GE44KL77yI5L6L77yaZGVja1swXVswXe+8muODj+ODvOODiOOBruOCqOODvOOCue+8ieOAguOBk+OBrumFjeWIl+OBq+mghueVquOCkuiomOmMsuOBmeOCiwogICAKICAgIHNyYW5kKHRpbWUoTlVMTCkpOwogICAgc2h1ZmZsZShkZWNrKTsKICAgIHByaW50X3RydW1wKGRlY2ssIHRydW1wX21hcmssIHRydW1wX251bSk7CiAgICAKICAgIHJldHVybiAwOyAKfQp2b2lkIHNodWZmbGUoaW50IGRlW11bMTNdKSAgIC8v5Yid5pyf5YyW77yI44GZ44G544Gm44Gu6YWN5YiX44Gu5YCkMO+8ieOBleOCjOOBn++8iOOBpOOBvuOCiuOAgeOBvuOBoOW8leOBj+mghueVquOBjOaxuuOBvuOBo+OBpuOBhOOBquOBhO+8ieODiOODqeODs+ODl+OCkuWPl+OBkeWPluOCiwp7CiAgICBpbnQgY2FyZF9udW0sIHJvdywgY29sdW1uOwogICAgCiAgICBmb3IoY2FyZF9udW09MTsgY2FyZF9udW08PTUyOyBjYXJkX251bSsrKXsgIC8v44K344Oj44OD44OV44Or44Gr44KI44Gj44Gm44CB44OH44OD44Kt44GL44KJ44Op44Oz44OA44Og44Gr5byV44GL44KM44Gf44OI44Op44Oz44OX77yI44Gu6KaB57Sg77yJ44GrMS01MuOBruaVsOWtl+OCkuagvOe0jeOBl+OBpuOBhOOBjwogICAgICAgIGRvewogICAgICAgICAgICByb3cgPSByYW5kKCklNDsgICAgICAgICAvL+imgee0oOeVquWPt++8mjAsMSwyLDPjga7jgYTjgZrjgozjgYsx44Gk44KS6YG45oqeCiAgICAgICAgICAgIGNvbHVtbiA9IHJhbmQoKSUxMzsgICAgIC8v6KaB57Sg55Wq5Y+377yaMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMuOBruOBhOOBmuOCjOOBizHjgaTjgpLpgbjmip4KICAgICAgICAgICAKICAgICAgICB9d2hpbGUoZGVbcm93XVtjb2x1bW5dICE9MCk7ICAgIC8v6YG45oqe44GX44Gf44OI44Op44Oz44OX77yI5L6L77ya44Ko44O844K544GuMe+8ieOBq+OAjOmghueVquOAjeOBjOaXouOBq+WJsuOCiuW9k+OBpuOCieOCjOOBpuOBhOOCi+OBquOCieOChOOCiuebtOOBl++8iOWGjeW6puODiOODqeODs+ODl+OCkumBuOaKnu+8iQogICAgICAgIAogICAgICAgIGRlW3Jvd11bY29sdW1uXSA9IGNhcmRfbnVtOyAgLy/jg4jjg6njg7Pjg5fjga7lkITopoHntKDjgasxLTUy44G+44Gn44Gu55Wq5Y+344KS5oyv44KLCiAgICB9CiB9CiAvL2NhcmRfbnVt44Gu55Wq5Y+36YCa44KK44Gr44Kr44O844OJ44KS6KGo56S644GZ44KL6Zai5pWw77yI44K344Oj44OD44OV44Or44GV44KM44Gf44OI44Op44Oz44OX44KS6KGo56S644GZ44KL6Zai5pWw77yJCnZvaWQgcHJpbnRfdHJ1bXAoaW50IGRlW11bMTNdLCBpbnQgKnRtLCBpbnQgKnRuKQogewogICAgaW50IGNhcmRfbnVtLCByb3csIGNvbHVtbjsKICAgIAogICAgZm9yKGNhcmRfbnVtPTE7IGNhcmRfbnVtPD01MjsgY2FyZF9udW0rKyl7CiAgICAgICAgZm9yKHJvdz0wOyByb3c8NDsgcm93KyspewogICAgICAgICAgICBmb3IoY29sdW1uPTA7IGNvbHVtbjwxMzsgY29sdW1uKyspewogICAgICAgICAgICAgICAgaWYoZGVbcm93XVtjb2x1bW5dID09IGNhcmRfbnVtKXsgICAgIC8v44OI44Op44Oz44OX44GM5byV44GL44KM44KL6aCG55Wq44GoY2FyZF9udW3nlarlj7fjgYzkuIDoh7TjgZfjgZ/jgonooajnpLrjgZnjgosKICAgICAgICAgICAgICAgICAgICBwcmludGYoIiUyZDolZC0lZFxuIiwgY2FyZF9udW0sIHRtW3Jvd10sIHRuW2NvbHVtbl0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogfQ==