Skip to main content
We’ve updated our Terms of Service. A new AI Addendum clarifies how Stack Overflow utilizes AI interactions.
Code Golf

Return to Answer

Code shortening
Source Link
ErikF
  • 4.8k
  • 9
  • 11

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++]);}}

Try it online! Try it online!

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]);}}

Try it online!

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++]);}

Try it online!

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++]);
}
Source Link
ErikF
  • 4.8k
  • 9
  • 11

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]);}}

Try it online!

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]);
 }
}

AltStyle によって変換されたページ (->オリジナル) /