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
┘
解答
G ← {r‿c 𝕊 m : 0¨⌾(c⊸⊏⎉r)m}
G ← {r‿c𝕊m:0¨⌾(c⊸⊏⎉r)m} # code golf版
G ← {0¨⌾((1⊑𝕨)⊸⊏⎉(⊑𝕨))𝕩} # another code golf