fork download
  1. #include <stdio.h>
  2.  
  3. #define F0(N1, N2, N3, N4)\
  4.   for ( ; ; ) {\
  5.   printf("[%s%s%s%s%s%s ] の中から数字を選んでください\n",\
  6.   (N1 != '1' && N2 != '1' && N3 != '1' && N4 != '1' ? " 1" : ""),\
  7.   (N1 != '2' && N2 != '2' && N3 != '2' && N4 != '2' ? " 2" : ""),\
  8.   (N1 != '3' && N2 != '3' && N3 != '3' && N4 != '3' ? " 3" : ""),\
  9.   (N1 != '4' && N2 != '4' && N3 != '4' && N4 != '4' ? " 4" : ""),\
  10.   (N1 != '5' && N2 != '5' && N3 != '5' && N4 != '5' ? " 5" : ""),\
  11.   (N1 != '6' && N2 != '6' && N3 != '6' && N4 != '6' ? " 6" : ""));\
  12.   scanf("%c%*c", &n);\
  13.   if (n != N1 && n != N2 && n != N3 && n != N4 && n >= '1' && n <= '6') break;\
  14.   printf("無視されました\n");\
  15.   }
  16.  
  17. #define F1(N1)\
  18.   F0(N1, 0, 0, 0)\
  19.   switch (n) {\
  20.   case '1': F2('1', N1)\
  21.   case '2': F2('2', N1)\
  22.   case '3': F2('3', N1)\
  23.   case '4': F2('4', N1)\
  24.   case '5': F2('5', N1)\
  25.   case '6': F2('6', N1)\
  26.   }
  27.  
  28. #define F2(N1, N2)\
  29.   F0(N1, N2, 0, 0)\
  30.   switch (n) {\
  31.   case '1': F3('1', N1, N2)\
  32.   case '2': F3('2', N1, N2)\
  33.   case '3': F3('3', N1, N2)\
  34.   case '4': F3('4', N1, N2)\
  35.   case '5': F3('5', N1, N2)\
  36.   case '6': F3('6', N1, N2)\
  37.   }
  38.  
  39. #define F3(N1, N2, N3)\
  40.   F0(N1, N2, N3, 0)\
  41.   switch (n) {\
  42.   case '1': F4('1', N1, N2, N3)\
  43.   case '2': F4('2', N1, N2, N3)\
  44.   case '3': F4('3', N1, N2, N3)\
  45.   case '4': F4('4', N1, N2, N3)\
  46.   case '5': F4('5', N1, N2, N3)\
  47.   case '6': F4('6', N1, N2, N3)\
  48.   }
  49.  
  50. #define F4(N1, N2, N3, N4)\
  51.   F0(N1, N2, N3, N4)\
  52.   printf("%c%c%c%c%c%c\n", 309 - n - N1 - N2 - N3 - N4, n, N1, N2, N3, N4);\
  53.   return 0;
  54.  
  55. int main()
  56. {
  57. char n;
  58. F0(0, 0, 0, 0)
  59. switch (n) {
  60. case '1': F1('1')
  61. case '2': F1('2')
  62. case '3': F1('3')
  63. case '4': F1('4')
  64. case '5': F1('5')
  65. case '6': F1('6')
  66. }
  67. }
  68.  
Success #stdin #stdout 0.01s 2448KB
stdin
5
3
q
5
2
6
1
stdout
[ 1 2 3 4 5 6 ] の中から数字を選んでください
[ 1 2 3 4 6 ] の中から数字を選んでください
[ 1 2 4 6 ] の中から数字を選んでください
無視されました
[ 1 2 4 6 ] の中から数字を選んでください
無視されました
[ 1 2 4 6 ] の中から数字を選んでください
[ 1 4 6 ] の中から数字を選んでください
[ 1 4 ] の中から数字を選んでください
416235