7.4 配列変形演習2

設問1

以下のrank = 3の配列mがあるとする。

    m ← ⥊⟜(↕×´)5‿5‿5
┌─
╎   0   1   2   3   4
    5   6   7   8   9
   10  11  12  13  14
   15  16  17  18  19
   20  21  22  23  24

   25  26  27  28  29
   30  31  32  33  34
   35  36  37  38  39
   40  41  42  43  44
   45  46  47  48  49

   50  51  52  53  54
   55  56  57  58  59
   60  61  62  63  64
   65  66  67  68  69
   70  71  72  73  74

   75  76  77  78  79
   80  81  82  83  84
   85  86  87  88  89
   90  91  92  93  94
   95  96  97  98  99

  100 101 102 103 104
  105 106 107 108 109
  110 111 112 113 114
  115 116 117 118 119
  120 121 122 123 124
                      ┘

以下のように、配列𝕨の下から数えて⊑𝕨番目(1から数える)のrankで1⊑𝕨番目のセル(0から数える)に含まれる要素を全て0にした配列を返す関数Gを関数定義ブロックを使って実現せよ。

    1‿0 G m
┌─
╎ 0   1   2   3   4
  0   6   7   8   9
  0  11  12  13  14
  0  16  17  18  19
  0  21  22  23  24

  0  26  27  28  29
  0  31  32  33  34
  0  36  37  38  39
  0  41  42  43  44
  0  46  47  48  49

  0  51  52  53  54
  0  56  57  58  59
  0  61  62  63  64
  0  66  67  68  69
  0  71  72  73  74

  0  76  77  78  79
  0  81  82  83  84
  0  86  87  88  89
  0  91  92  93  94
  0  96  97  98  99

  0 101 102 103 104
  0 106 107 108 109
  0 111 112 113 114
  0 116 117 118 119
  0 121 122 123 124
                    ┘
    1‿2 G m
┌─
╎   0   1 0   3   4
    5   6 0   8   9
   10  11 0  13  14
   15  16 0  18  19
   20  21 0  23  24

   25  26 0  28  29
   30  31 0  33  34
   35  36 0  38  39
   40  41 0  43  44
   45  46 0  48  49

   50  51 0  53  54
   55  56 0  58  59
   60  61 0  63  64
   65  66 0  68  69
   70  71 0  73  74

   75  76 0  78  79
   80  81 0  83  84
   85  86 0  88  89
   90  91 0  93  94
   95  96 0  98  99

  100 101 0 103 104
  105 106 0 108 109
  110 111 0 113 114
  115 116 0 118 119
  120 121 0 123 124
                    ┘
    2‿3 G m
┌─
╎   0   1   2   3   4
    5   6   7   8   9
   10  11  12  13  14
    0   0   0   0   0
   20  21  22  23  24

   25  26  27  28  29
   30  31  32  33  34
   35  36  37  38  39
    0   0   0   0   0
   45  46  47  48  49

   50  51  52  53  54
   55  56  57  58  59
   60  61  62  63  64
    0   0   0   0   0
   70  71  72  73  74

   75  76  77  78  79
   80  81  82  83  84
   85  86  87  88  89
    0   0   0   0   0
   95  96  97  98  99

  100 101 102 103 104
  105 106 107 108 109
  110 111 112 113 114
    0   0   0   0   0
  120 121 122 123 124
                      ┘
    3‿¯1 G m
┌─
╎  0  1  2  3  4
   5  6  7  8  9
  10 11 12 13 14
  15 16 17 18 19
  20 21 22 23 24

  25 26 27 28 29
  30 31 32 33 34
  35 36 37 38 39
  40 41 42 43 44
  45 46 47 48 49

  50 51 52 53 54
  55 56 57 58 59
  60 61 62 63 64
  65 66 67 68 69
  70 71 72 73 74

  75 76 77 78 79
  80 81 82 83 84
  85 86 87 88 89
  90 91 92 93 94
  95 96 97 98 99

   0  0  0  0  0
   0  0  0  0  0
   0  0  0  0  0
   0  0  0  0  0
   0  0  0  0  0
                 ┘

Try it online⌨️

解答

     G ← {r‿c 𝕊 m : 0¨⌾(c⊸⊏⎉r)m}
     G ← {r‿c𝕊m:0¨⌾(c⊸⊏⎉r)m}     # code golf版
     G ← {0¨⌾((1⊑𝕨)⊸⊏⎉(⊑𝕨))𝕩}    # another code golf