回答編集履歴

10

Step2

2022/01/28 08:43

投稿

obeSolitary
obeSolitary

スコア106

test CHANGED
@@ -2,8 +2,9 @@
2
2
  **Step1:** 1以上100以下の奇数を Fisher-Yates shuffle しておきます.
3
3
 
4
4
  MATLABなら fy = randperm(100); のあと fyodd=fy(mod(fy,2)==1); など.
5
- python なら import random から fyodd=list(range(1,101,2)) をして
5
+ また,python なら import random から
6
+ fyodd=list(range(1,101,2)) をして random.shuffle(fyodd) など.
6
- random.shuffle(fyodd) など.random.shuffle() はfyoddの中身を直接書きかえてしまうのですね.
7
+ random.shuffle() はfyoddの中身を直接書きかえてしまうのですね.
7
8
 
8
9
  **Step2:** 同様に,1以上100以下の偶数を Fisher-Yates shuffle しておきます.
9
10
 

9

Step2 度重なる修正

2022/01/28 08:42

投稿

obeSolitary
obeSolitary

スコア106

test CHANGED
@@ -2,8 +2,8 @@
2
2
  **Step1:** 1以上100以下の奇数を Fisher-Yates shuffle しておきます.
3
3
 
4
4
  MATLABなら fy = randperm(100); のあと fyodd=fy(mod(fy,2)==1); など.
5
- python なら import random から fyodd=list(range(1,101,2)) をして random.shuffle(fyodd) など.
5
+ python なら import random から fyodd=list(range(1,101,2)) をして
6
- random.shuffle() はfyoddの中身を直接書きかえてしまうのですね.
6
+ random.shuffle(fyodd) など.random.shuffle() はfyoddの中身を直接書きかえてしまうのですね.
7
7
 
8
8
  **Step2:** 同様に,1以上100以下の偶数を Fisher-Yates shuffle しておきます.
9
9
 

8

Step2

2022/01/28 08:41

投稿

obeSolitary
obeSolitary

スコア106

test CHANGED
@@ -1,8 +1,11 @@
1
1
  ### 題意をみたす列を全パターン出せそうな方法(途中,考察をダラダラと記述)
2
2
  **Step1:** 1以上100以下の奇数を Fisher-Yates shuffle しておきます.
3
- **Step2:** 1以上100以下の奇数を Fisher-Yates shuffle しておきます.
4
3
 
4
+ MATLABなら fy = randperm(100); のあと fyodd=fy(mod(fy,2)==1); など.
5
- MATLABなら randperm(),python なら import random から random.shuffle() を使うでしょうか
5
+ python なら import random から fyodd=list(range(1,101,2)) をして random.shuffle(fyodd) など
6
+ random.shuffle() はfyoddの中身を直接書きかえてしまうのですね.
7
+
8
+ **Step2:** 同様に,1以上100以下の偶数を Fisher-Yates shuffle しておきます.
6
9
 
7
10
  次に,偶奇の切り替わり回数は最多で99回,最少で33回です.
8
11
  (切り替わりが最少となる例) 奇奇奇,偶偶偶, ... ,奇奇奇,偶偶偶,奇奇,偶偶(カンマが33個)

7

Step2の後を修正

2022/01/28 08:19

投稿

obeSolitary
obeSolitary

スコア106

test CHANGED
@@ -2,8 +2,7 @@
2
2
  **Step1:** 1以上100以下の奇数を Fisher-Yates shuffle しておきます.
3
3
  **Step2:** 1以上100以下の奇数を Fisher-Yates shuffle しておきます.
4
4
 
5
- MATLABなら randperm(100),
6
- python なら import random からの random.shuffle(range(100)) でしょうか.
5
+ MATLABなら randperm(),python なら import random からの random.shuffle() を使うでしょうか.
7
6
 
8
7
  次に,偶奇の切り替わり回数は最多で99回,最少で33回です.
9
8
  (切り替わりが最少となる例) 奇奇奇,偶偶偶, ... ,奇奇奇,偶偶偶,奇奇,偶偶(カンマが33個)

6

Step7,10の修正

2022/01/28 07:41

投稿

obeSolitary
obeSolitary

スコア106

test CHANGED
@@ -26,13 +26,13 @@
26
26
 
27
27
  **Step5:** 1以上49以下の数をmo個並べてできる列 {ro_1, ro_2, ... , ro_mo}を考えます.また,もしmoの値が0ならばStep8に移ります.
28
28
  **Step6:** 次に「奇,奇, ... ,奇」という(かたまりサイズ1の奇数50個をカンマで区切った)並びを考えます.
29
- **Step7:** i = 1, 2, ... ,mo に対して以下を行います:「もし,左から ro_i番目のカンマを取り除いても奇数が4つ以上連続しないならば左から ro_i番目のカンマを取り除く(これにより,左から ro_i番目のかたまりのサイズが(旧ro_i番目まりサイズ)+(旧(ro_i+1)番目のかたまりのサイズとなる)」
29
+ **Step7:** i = 1, 2, ... ,mo に対して以下を行います:「もし,Step6の時点で左から ro_i番目の位置にあったカンマを取り除いても奇数が4つ以上連続しないならば,そのカンマを取り除く(これにより,取り除くカンマのにあったかたまりのサイズが「取り除くカンマ両脇にあっ2つのかたまりのサイズの和」となる)」
30
30
 
31
31
  同様に,偶数のかたまりの個数を減らしていきます.
32
32
 
33
33
  **Step8:** 1以上49以下の数をme個並べてできる列 {re_1, re_2, ... , re_me}を考えます.また,もしmeの値が0ならばStep11に移ります.
34
34
  **Step9:** 次に「偶,偶, ... ,偶」という(かたまりサイズ1の偶数50個をカンマで区切った)並びを考えます.
35
- **Step10:** i = 1, 2, ... ,me に対して以下を行います:「もし,左から re_i番目のカンマを取り除いても偶数が4つ以上連続しないならば左から re_i番目のカンマを取り除く(これにより,左から re_i番目のかたまりのサイズが(旧re_i番目まりサイズ)+(旧(re_i+1)番目のかたまりのサイズとなる)」
35
+ **Step10:** i = 1, 2, ... ,me に対して以下を行います:「もし,Step6の時点で左から re_i番目の位置にあったカンマを取り除いても偶数が4つ以上連続しないならば,そのカンマを取り除く(これにより,取り除くカンマのにあったかたまりのサイズが「取り除くカンマ両脇にあっ2つのかたまりのサイズの和」となる)」
36
36
 
37
37
  以上の操作によって生成された最大サイズ3の偶奇のかたまりを並べていきます.
38
38
 

5

Step5,8を修正.先の修正が誤り.

2022/01/28 05:36

投稿

obeSolitary
obeSolitary

スコア106

test CHANGED
@@ -24,13 +24,13 @@
24
24
  奇数のかたまりの個数を減らしていきます.
25
25
  かたまりの個数を1つ減らすごとに,いずれか1つのかたまりのサイズが大きくなります(増えるサイズは後述).
26
26
 
27
- **Step5:** 1以上33以下の数mo個からなる列 {ro_1, ro_2, ... , ro_mo}を考えます.また,もしmoの値が0ならばStep8に移ります.
27
+ **Step5:** 1以上49以下の数mo個並べてできる列 {ro_1, ro_2, ... , ro_mo}を考えます.また,もしmoの値が0ならばStep8に移ります.
28
28
  **Step6:** 次に「奇,奇, ... ,奇」という(かたまりサイズ1の奇数50個をカンマで区切った)並びを考えます.
29
29
  **Step7:** i = 1, 2, ... ,mo に対して以下を行います:「もし,左から ro_i番目のカンマを取り除いても奇数が4つ以上連続しないならば左から ro_i番目のカンマを取り除く(これにより,左から ro_i番目のかたまりのサイズが(旧ro_i番目のかたまりのサイズ)+(旧(ro_i+1)番目のかたまりのサイズ)となる)」
30
30
 
31
31
  同様に,偶数のかたまりの個数を減らしていきます.
32
32
 
33
- **Step8:** 1以上33以下の数me個からなる列 {re_1, re_2, ... , re_me}を考えます.また,もしmeの値が0ならばStep11に移ります.
33
+ **Step8:** 1以上49以下の数me個並べてできる列 {re_1, re_2, ... , re_me}を考えます.また,もしmeの値が0ならばStep11に移ります.
34
34
  **Step9:** 次に「偶,偶, ... ,偶」という(かたまりサイズ1の偶数50個をカンマで区切った)並びを考えます.
35
35
  **Step10:** i = 1, 2, ... ,me に対して以下を行います:「もし,左から re_i番目のカンマを取り除いても偶数が4つ以上連続しないならば左から re_i番目のカンマを取り除く(これにより,左から re_i番目のかたまりのサイズが(旧re_i番目のかたまりのサイズ)+(旧(re_i+1)番目のかたまりのサイズ)となる)」
36
36
 

4

Step5,8の加筆,Step11の修正.

2022/01/28 05:30

投稿

obeSolitary
obeSolitary

スコア106

test CHANGED
@@ -24,19 +24,22 @@
24
24
  奇数のかたまりの個数を減らしていきます.
25
25
  かたまりの個数を1つ減らすごとに,いずれか1つのかたまりのサイズが大きくなります(増えるサイズは後述).
26
26
 
27
- **Step5:** 1以上33以下の奇数mo個からなる列 {ro_1, ro_2, ... , ro_mo}を考えます.
27
+ **Step5:** 1以上33以下の奇数mo個からなる列 {ro_1, ro_2, ... , ro_mo}を考えます.また,もしmoの値が0ならばStep8に移ります.
28
28
  **Step6:** 次に「奇,奇, ... ,奇」という(かたまりサイズ1の奇数50個をカンマで区切った)並びを考えます.
29
29
  **Step7:** i = 1, 2, ... ,mo に対して以下を行います:「もし,左から ro_i番目のカンマを取り除いても奇数が4つ以上連続しないならば左から ro_i番目のカンマを取り除く(これにより,左から ro_i番目のかたまりのサイズが(旧ro_i番目のかたまりのサイズ)+(旧(ro_i+1)番目のかたまりのサイズ)となる)」
30
30
 
31
31
  同様に,偶数のかたまりの個数を減らしていきます.
32
32
 
33
- **Step8:** 1以上33以下の偶数me個からなる列 {re_1, re_2, ... , re_me}を考えます.
33
+ **Step8:** 1以上33以下の偶数me個からなる列 {re_1, re_2, ... , re_me}を考えます.また,もしmeの値が0ならばStep11に移ります.
34
34
  **Step9:** 次に「偶,偶, ... ,偶」という(かたまりサイズ1の偶数50個をカンマで区切った)並びを考えます.
35
- **Step10:** i = 1, 2, ... ,me に対して以下を行います:「もし,左から re_i番目のカンマを取り除いても偶数が4つ以上連続しないならば左から re_i番目のカンマを取り除く(これにより,左から re_i番目のかたまりのサイズが(旧ro_i番目のかたまりのサイズ)+(旧(ro_i+1)番目のかたまりのサイズ)となる)」
35
+ **Step10:** i = 1, 2, ... ,me に対して以下を行います:「もし,左から re_i番目のカンマを取り除いても偶数が4つ以上連続しないならば左から re_i番目のカンマを取り除く(これにより,左から re_i番目のかたまりのサイズが(旧re_i番目のかたまりのサイズ)+(旧(re_i+1)番目のかたまりのサイズ)となる)」
36
36
 
37
37
  以上の操作によって生成された最大サイズ3の偶奇のかたまりを並べていきます.
38
38
 
39
- **Step11:** もし mo-me=1 ならば,奇数のかたまりから開始して奇数のかたまりで終わる.また,もし me-mo=1 ならば,偶数のかたまりから開始して偶数のかたまりで終わる.いずれにも該当しなければ,me=moなので,{奇数/偶数}のかたまりから開始すると{数/数}のかたまりで終わる
39
+ **Step11:** もし mo-me=1 ならば,奇数のかたまりから開始して,以下{奇数/偶数}のかたまりを交互に置いていく.また,もし me-mo=1 ならば,偶数のかたまりから開始して{奇数/偶数}のかたまりを交互に置いていく.いずれにも該当しなければ,me=moなので,{奇数/偶数}どちらのかたまりから開始しても良いが,以下{数/数}のかたまりを交互に置いていく
40
+
41
+ その結果,mo-me=1 の場合が奇数のかたまりで終わり,me-mo=1 の場合は偶数のかたまりで終わります.
42
+ また,me=mo で奇数のかたまりから開始した場合は偶数で,偶数のかたまりから開始した場合は奇数で,それぞれ終わります.
40
43
 
41
44
  題意をみたす列は,必ずこの手法で表現し得るのではないかと思っています.
42
45
  ただし,出方が一様かどうかの検証はしていません.

3

直しきれていなかった誤植を直します

2022/01/28 04:25

投稿

obeSolitary
obeSolitary

スコア106

test CHANGED
@@ -22,7 +22,7 @@
22
22
  **Step4:** mが偶数の場合,mo=me=m/2とします.また,mが奇数の場合,moとmeのうち片方を(m+1)/2,もう片方を(m-1)/2とします.
23
23
 
24
24
  奇数のかたまりの個数を減らしていきます.
25
- かたまりの個数を1つ減らすごとに,いずれか1つのかたまりのサイズが1大きくなります.
25
+ かたまりの個数を1つ減らすごとに,いずれか1つのかたまりのサイズが大きくなります(増えるサイズは後述)
26
26
 
27
27
  **Step5:** 1以上33以下の奇数mo個からなる列 {ro_1, ro_2, ... , ro_mo}を考えます.
28
28
  **Step6:** 次に「奇,奇, ... ,奇」という(かたまりサイズ1の奇数50個をカンマで区切った)並びを考えます.

2

加筆した箇所に誤りがあり,さらに訂正します

2022/01/28 04:21

投稿

obeSolitary
obeSolitary

スコア106

test CHANGED
@@ -26,13 +26,13 @@
26
26
 
27
27
  **Step5:** 1以上33以下の奇数mo個からなる列 {ro_1, ro_2, ... , ro_mo}を考えます.
28
28
  **Step6:** 次に「奇,奇, ... ,奇」という(かたまりサイズ1の奇数50個をカンマで区切った)並びを考えます.
29
- **Step7:** i = 1, 2, ... ,mo に対して以下を行います:「もし,左から ro_i番目のカンマを取り除いても奇数が4つ以上連続しないならば左から ro_i番目のカンマを取り除く(これにより,左から ro_i番目のかたまりのサイズが1大きくなる)」
29
+ **Step7:** i = 1, 2, ... ,mo に対して以下を行います:「もし,左から ro_i番目のカンマを取り除いても奇数が4つ以上連続しないならば左から ro_i番目のカンマを取り除く(これにより,左から ro_i番目のかたまりのサイズが(旧ro_i番目のかたまりのサイズ)+(旧(ro_i+1)番目のかたまりのサイズ)となる)」
30
30
 
31
31
  同様に,偶数のかたまりの個数を減らしていきます.
32
32
 
33
33
  **Step8:** 1以上33以下の偶数me個からなる列 {re_1, re_2, ... , re_me}を考えます.
34
34
  **Step9:** 次に「偶,偶, ... ,偶」という(かたまりサイズ1の偶数50個をカンマで区切った)並びを考えます.
35
- **Step10:** i = 1, 2, ... ,me に対して以下を行います:「もし,左から re_i番目のカンマを取り除いても偶数が4つ以上連続しないならば左から re_i番目のカンマを取り除く(これにより,左から re_i番目のかたまりのサイズが1大きくなる)」
35
+ **Step10:** i = 1, 2, ... ,me に対して以下を行います:「もし,左から re_i番目のカンマを取り除いても偶数が4つ以上連続しないならば左から re_i番目のカンマを取り除く(これにより,左から re_i番目のかたまりのサイズが(旧ro_i番目のかたまりのサイズ)+(旧(ro_i+1)番目のかたまりのサイズ)となる)」
36
36
 
37
37
  以上の操作によって生成された最大サイズ3の偶奇のかたまりを並べていきます.
38
38
 

1

誤植があり修正しました.

2022/01/28 04:18

投稿

obeSolitary
obeSolitary

スコア106

test CHANGED
@@ -24,15 +24,15 @@
24
24
  奇数のかたまりの個数を減らしていきます.
25
25
  かたまりの個数を1つ減らすごとに,いずれか1つのかたまりのサイズが1大きくなります.
26
26
 
27
- **Step5:** 1以上49以下の奇数mo個からなる列 {ro_1, ro_2, ... , ro_mo}を考えます.
27
+ **Step5:** 1以上33以下の奇数mo個からなる列 {ro_1, ro_2, ... , ro_mo}を考えます.
28
28
  **Step6:** 次に「奇,奇, ... ,奇」という(かたまりサイズ1の奇数50個をカンマで区切った)並びを考えます.
29
- **Step7:** i = 1, 2, ... ,mo に対して以下を行います:「もし,左から ro_i番目のカンマを取り除いても奇数が4つ以上連続しないならば左から ro_i番目のカンマを取り除く」
29
+ **Step7:** i = 1, 2, ... ,mo に対して以下を行います:「もし,左から ro_i番目のカンマを取り除いても奇数が4つ以上連続しないならば左から ro_i番目のカンマを取り除く(これにより,左から ro_i番目のかたまりのサイズが1大きくなる)
30
30
 
31
31
  同様に,偶数のかたまりの個数を減らしていきます.
32
32
 
33
- **Step8:** 1以上49以下の偶数me個からなる列 {re_1, re_2, ... , re_me}を考えます.
33
+ **Step8:** 1以上33以下の偶数me個からなる列 {re_1, re_2, ... , re_me}を考えます.
34
34
  **Step9:** 次に「偶,偶, ... ,偶」という(かたまりサイズ1の偶数50個をカンマで区切った)並びを考えます.
35
- **Step10:** i = 1, 2, ... ,me に対して以下を行います:「もし,左から re_i番目のカンマを取り除いても偶数が4つ以上連続しないならば左から re_i番目のカンマを取り除く」
35
+ **Step10:** i = 1, 2, ... ,me に対して以下を行います:「もし,左から re_i番目のカンマを取り除いても偶数が4つ以上連続しないならば左から re_i番目のカンマを取り除く(これにより,左から re_i番目のかたまりのサイズが1大きくなる)
36
36
 
37
37
  以上の操作によって生成された最大サイズ3の偶奇のかたまりを並べていきます.
38
38