C (gcc), 262(削除) 262 (削除ここまで) 225 bytes
- -37 thanks to c--
a[6][5]={L"BINGO"L"BINGO"};f(n,i,j,k,r){for(;n--;putsn&&puts("""",f(n)){for(j=!memset;for(a[1],0,200);j<5;j++j=5;j--;)for(k=i=0;k||++i<6;k||(a[i][j]=r))for(r=j*15+rand(k=i)%15+1,k=i;%15+1;--k&&a[k][j]-r;);for(a[3][2]=i=0;i<6;putsi=0;i<6;i+=puts(""""),i++)for(j=0;j<5;)printf(a[i][j++]i*j-9?i?"%d\t""%d ":"%c\t""%c ":"free\t""free ",a[i][j]a[i][j++]);}}
Ungolfed (` used instead of literal tab character):
a[6][5]={L"BINGO"}; // bingo array, with header
f(n, // number of cards to generate
i,j, // row and column
k, // random number row checker
r // random number
) {
for(;n--;puts("")) {
n && for(j=!memsetputs(a[1],0"",200f(n)); // clearrecursively arrayprint ofcards, previousadding valuesnewline
j<5;j++for(j=5;j--;) // for each column
for(k=i=0;k||++i<6;k||(a[i][j]=r)) // for each row (redo duplicates)
for(r=j*15+rand(k=i)%15+1,k=i;%15+1;--k&&a[k][j]-r;); // detect duplicates
for(a[3][2]=i=0;i<6;putsi=0;i<6;i+=puts(""),i++) // mark middle item as free; print board
for(j=0;j<5;)
printf(a[i][j++]i*j-9?i?"%d\t""%d`":"%c\t""%c`":"free\t""free`",a[i][j]a[i][j++]);
}
}
C (gcc), 262 bytes
a[6][5]={L"BINGO"};f(n,i,j,k,r){for(;n--;puts("")){for(j=!memset(a[1],0,200);j<5;j++)for(k=i=0;k||++i<6;k||(a[i][j]=r))for(r=j*15+rand()%15+1,k=i;--k&&a[k][j]-r;);for(a[3][2]=i=0;i<6;puts(""),i++)for(j=0;j<5;)printf(a[i][j++]?i?"%d\t":"%c\t":"free\t",a[i][j]);}}
Ungolfed:
a[6][5]={L"BINGO"}; // bingo array, with header
f(n, // number of cards to generate
i,j, // row and column
k, // random number row checker
r // random number
) {
for(;n--;puts("")) {
for(j=!memset(a[1],0,200); // clear array of previous values
j<5;j++) // for each column
for(k=i=0;k||++i<6;k||(a[i][j]=r)) // for each row (redo duplicates)
for(r=j*15+rand()%15+1,k=i;--k&&a[k][j]-r;); // detect duplicates
for(a[3][2]=i=0;i<6;puts(""),i++) // mark middle item as free; print board
for(j=0;j<5;)
printf(a[i][j++]?i?"%d\t":"%c\t":"free\t",a[i][j]);
}
}
C (gcc), (削除) 262 (削除ここまで) 225 bytes
- -37 thanks to c--
a[6][5]={L"BINGO"};f(n,i,j,k,r){--n&&puts("",f(n));for(j=5;j--;)for(k=i=0;k||++i<6;k||(a[i][j]=r))for(r=j*15+rand(k=i)%15+1;--k&&a[k][j]-r;);for(i=0;i<6;i+=puts(""))for(j=0;j<5;)printf(i*j-9?i?"%d ":"%c ":"free ",a[i][j++]);}
Ungolfed (` used instead of literal tab character):
a[6][5]={L"BINGO"}; // bingo array, with header
f(n, // number of cards to generate
i,j, // row and column
k, // random number row checker
r // random number
) {
--n && puts("",f(n)); // recursively print cards, adding newline
for(j=5;j--;) // for each column
for(k=i=0;k||++i<6;k||(a[i][j]=r)) // for each row (redo duplicates)
for(r=j*15+rand(k=i)%15+1;--k&&a[k][j]-r;); // detect duplicates
for(i=0;i<6;i+=puts("")) // mark middle item as free; print board
for(j=0;j<5;)
printf(i*j-9?i?"%d`":"%c`":"free`",a[i][j++]);
}
C (gcc), 262 bytes
a[6][5]={L"BINGO"};f(n,i,j,k,r){for(;n--;puts("")){for(j=!memset(a[1],0,200);j<5;j++)for(k=i=0;k||++i<6;k||(a[i][j]=r))for(r=j*15+rand()%15+1,k=i;--k&&a[k][j]-r;);for(a[3][2]=i=0;i<6;puts(""),i++)for(j=0;j<5;)printf(a[i][j++]?i?"%d\t":"%c\t":"free\t",a[i][j]);}}
Ungolfed:
a[6][5]={L"BINGO"}; // bingo array, with header
f(n, // number of cards to generate
i,j, // row and column
k, // random number row checker
r // random number
) {
for(;n--;puts("")) {
for(j=!memset(a[1],0,200); // clear array of previous values
j<5;j++) // for each column
for(k=i=0;k||++i<6;k||(a[i][j]=r)) // for each row (redo duplicates)
for(r=j*15+rand()%15+1,k=i;--k&&a[k][j]-r;); // detect duplicates
for(a[3][2]=i=0;i<6;puts(""),i++) // mark middle item as free; print board
for(j=0;j<5;)
printf(a[i][j++]?i?"%d\t":"%c\t":"free\t",a[i][j]);
}
}