fork(4) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define SIZE 40
  5. #define RADIUS 3
  6. #define LEN 50
  7. #define COUNT 30
  8. int main(void) {
  9. // your code goes here
  10. int board[SIZE][SIZE]={0};
  11. int listx[LEN]={0};
  12. int listy[LEN]={0};
  13. int i=0;
  14. int count=COUNT;
  15. srand((unsigned)time(NULL));
  16. for(i=0;i<LEN;i++){
  17. listx[i] = rand() % SIZE;
  18. listy[i] = rand() % SIZE;
  19. }
  20. for(i=0;i<LEN;i++){
  21.  
  22. if(count==0)
  23. break;
  24.  
  25. int x=listx[i];
  26. int y=listy[i];
  27.  
  28. if(board[x][y]!=0){
  29. listx[i]=-1;
  30. listy[i]=-1;
  31. continue;
  32. }
  33. int k=0;
  34. int j=0;
  35. int ok=1;
  36. for(j=x-RADIUS;j<=x+RADIUS;j++){
  37. int k=0;
  38. for(k=y-RADIUS;k<=y+RADIUS;k++){
  39. double a=abs(x-j);
  40. double b=abs(y-k);
  41. double c=RADIUS;
  42. if((a * a) + (b * b) > (c * c)){
  43. continue;
  44. }
  45. int j2=j;
  46. int k2=k;
  47. if(j<0){
  48. j2 += SIZE;
  49. }
  50. if(j>=SIZE){
  51. j2 = j % SIZE;
  52. }
  53. if(k<0){
  54. k2 += SIZE;
  55. }
  56. if(k>=SIZE){
  57. k2 = k % SIZE;
  58. }
  59. if(board[j2][k2]!=0){
  60. ok=0;
  61. break;
  62. }
  63. }
  64. if(ok==0){
  65. break;
  66. }
  67. }
  68. if(ok==0){
  69. listx[i]=-1;
  70. listy[i]=-1;
  71. }
  72. else{
  73. count--;
  74. for(j=x-RADIUS;j<=x+RADIUS;j++){
  75. int k=0;
  76. for(k=y-RADIUS;k<=y+RADIUS;k++){
  77. double a=abs(x-j);
  78. double b=abs(y-k);
  79. double c=RADIUS;
  80. if((a * a) + (b * b)>(c * c)){
  81. continue;
  82. }
  83. int j2=j;
  84. int k2=k;
  85. if(j<0){
  86. j2 += SIZE;
  87. }
  88. if(j>=SIZE){
  89. j2 = j % SIZE;
  90. }
  91. if(k<0){
  92. k2 += SIZE;
  93. }
  94. if(k>=SIZE){
  95. k2 = k%SIZE;
  96. }
  97. board[j2][k2]=2;
  98. }
  99. }
  100. board[x][y]=3;
  101. }
  102. }
  103. for(i=0;i<SIZE;i++){
  104. int j=0;
  105. for(j=0;j<SIZE;j++){
  106. printf("%d",board[i][j]);
  107. }
  108. printf("\n");
  109. }
  110. printf("\n");
  111. for(i=0;i<SIZE;i++){
  112. int j=0;
  113. for(j=0;j<SIZE;j++){
  114. if(board[i][j]==3)
  115. printf("#");
  116. else
  117. printf(" ");
  118. }
  119. printf("\n");
  120. }
  121.  
  122. printf(" ----y\n");
  123. printf("|\n");
  124. printf("|\n");
  125. printf("x\n");
  126.  
  127. printf("点の位置\n");
  128. for(i=0;i<COUNT;i++){
  129. if(listx[i]!=-1){
  130. printf("(x,y)=(%d,%d)\n",listx[i],listy[i]);
  131. }
  132. }
  133. return 0;
  134. }
Success #stdin #stdout 0s 2292KB
stdin
Standard input is empty
stdout
2232220000000002000000000202223222000002
2222200000000000000000022222222220000000
2222200000000000000000022222222220000000
0020000000000000000000222322202000000000
0000000000000000000000022222000000000000
0000000000000000000000022222000000000000
0000000000000020000000000200000000000002
2200000000002222200000000000000000000222
2200000000002222200000000000000000000222
2220000000022232220000000000000000002223
2200000000002222200000000000000000000222
2200000000002222200000000000000000000222
0000000000000020000000000000000000000002
0000000000000000000200000000000000000000
0000002000000000022222000000000000000000
0000222220000000022222000000000000000000
0000222220000000222322200002000000000000
0002223222000000022222000222220000000000
0000222220000000022222000222220000000200
0000222220000000000200002223222000022222
0000022000000000000000000222220000022222
2002222200000000000000000222220000222322
0002222200000000000000000002020000022222
0022232220000000000000000002222200022222
2002222200000000000000000002222200000200
2222222200000000000000000022232220000022
2220020000000000000000000002222200000022
3222000000000000002000000002222200000222
2220000000000000222220000000020000000022
2220020000000000222220000000000000000022
2002222200000002223222000000020000000000
0002222200000000222220000002222200020000
0022232220000000222220020002222202222200
0002222200000000002002222222232222222200
0002222200000002000002222202222222232220
0000020000000222220022232222222202222200
0000000000000222220002222200020002222200
0020000000002223222002222200002000020000
2222200000000222220000020000222220000000
2222200000000222220000000000222220000000

  #                           #         
                                        
                                        
                         #              
                                        
                                        
                                        
                                        
                                        
              #                        #
                                        
                                        
                                        
                                        
                                        
                                        
                   #                    
      #                                 
                                        
                           #            
                                        
                                     #  
                                        
     #                                  
                                        
                             #          
                                        
#                                       
                                        
                                        
                  #                     
                                        
     #                                  
                             #          
                                   #    
                       #                
                                        
               #                        
                                        
                                        
 ----y
|
|
x
点の位置
(x,y)=(21,37)
(x,y)=(0,2)
(x,y)=(33,29)
(x,y)=(27,0)
(x,y)=(35,23)
(x,y)=(37,15)
(x,y)=(9,14)
(x,y)=(16,19)
(x,y)=(17,6)
(x,y)=(30,18)
(x,y)=(9,39)
(x,y)=(32,5)
(x,y)=(25,29)