teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

9

語単語

2021/08/11 01:47

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -25,7 +25,7 @@
25
25
  }
26
26
  }
27
27
  ```
28
- ```Plain text
28
+ ```text
29
29
  [1, 1, 1, 1, 1, 1]
30
30
  [1, 1, 1, 1, 2]
31
31
  [1, 1, 1, 3]

8

誤字

2021/08/11 01:47

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -25,7 +25,7 @@
25
25
  }
26
26
  }
27
27
  ```
28
- ```plain text
28
+ ```Plain text
29
29
  [1, 1, 1, 1, 1, 1]
30
30
  [1, 1, 1, 1, 2]
31
31
  [1, 1, 1, 3]

7

if の条件を for に組み込み

2021/08/11 01:46

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -17,7 +17,7 @@
17
17
  do {
18
18
  //パターン生成
19
19
  if(i > 0) buf[i-1] ++;
20
- if(--buf[i--] > 0) for(int j=buf[i+1]; j > 0; j--) buf[++i] = 1;
20
+ for(int j=--buf[i--]; j > 0; j--) buf[++i] = 1;
21
21
  //既存チェック・表示
22
22
  String s = Arrays.toString(Arrays.stream(buf, 0, i+1).sorted().toArray());
23
23
  if(done.add(s)) System.out.println(s);

6

行数削減

2021/08/10 19:24

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -17,16 +17,10 @@
17
17
  do {
18
18
  //パターン生成
19
19
  if(i > 0) buf[i-1] ++;
20
- if(--buf[i] > 0) {
21
- for(int j=buf[i]; j > 0; j--) buf[i++] = 1;
20
+ if(--buf[i--] > 0) for(int j=buf[i+1]; j > 0; j--) buf[++i] = 1;
22
- }
23
- i --;
24
21
  //既存チェック・表示
25
22
  String s = Arrays.toString(Arrays.stream(buf, 0, i+1).sorted().toArray());
26
- if(!done.contains(s)) {
27
- System.out.println(s);
23
+ if(done.add(s)) System.out.println(s);
28
- done.add(s);
29
- }
30
24
  } while(i > 0);
31
25
  }
32
26
  }

5

一部 stream 化

2021/08/10 19:11

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -22,9 +22,7 @@
22
22
  }
23
23
  i --;
24
24
  //既存チェック・表示
25
- int[] t = Arrays.copyOf(buf, i+1);
26
- Arrays.sort(t);
27
- String s = Arrays.toString(t);
25
+ String s = Arrays.toString(Arrays.stream(buf, 0, i+1).sorted().toArray());
28
26
  if(!done.contains(s)) {
29
27
  System.out.println(s);
30
28
  done.add(s);

4

バグ

2021/08/10 18:54

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -17,7 +17,7 @@
17
17
  do {
18
18
  //パターン生成
19
19
  if(i > 0) buf[i-1] ++;
20
- if(--buf[i] == 0) {
20
+ if(--buf[i] > 0) {
21
21
  for(int j=buf[i]; j > 0; j--) buf[i++] = 1;
22
22
  }
23
23
  i --;

3

最適化?

2021/08/10 18:07

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -18,13 +18,9 @@
18
18
  //パターン生成
19
19
  if(i > 0) buf[i-1] ++;
20
20
  if(--buf[i] == 0) {
21
- i --;
22
- } else {
23
- for(int j=i; buf[j] > 1;) {
21
+ for(int j=buf[i]; j > 0; j--) buf[i++] = 1;
24
- buf[j] --;
25
- buf[++i] ++;
26
- }
27
22
  }
23
+ i --;
28
24
  //既存チェック・表示
29
25
  int[] t = Arrays.copyOf(buf, i+1);
30
26
  Arrays.sort(t);

2

実行結果追加

2021/08/10 18:06

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -36,4 +36,17 @@
36
36
  } while(i > 0);
37
37
  }
38
38
  }
39
+ ```
40
+ ```plain text
41
+ [1, 1, 1, 1, 1, 1]
42
+ [1, 1, 1, 1, 2]
43
+ [1, 1, 1, 3]
44
+ [1, 1, 2, 2]
45
+ [1, 1, 4]
46
+ [1, 2, 3]
47
+ [1, 5]
48
+ [2, 2, 2]
49
+ [2, 4]
50
+ [3, 3]
51
+ [6]
39
52
  ```

1

やっぱり違うかもしれない文を削除

2021/08/10 17:25

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -1,6 +1,5 @@
1
1
  要件を満たしていないので答えにはなりませんが、ヒントになるか(ならないか)ということで、動作するモノを出してみます。
2
2
  ハノイの塔のように '1' をあちこちに移動させている感じです。
3
- 「試したこと」に書かれているのはこんな感じのことでしょうか。(重複は Set で弾いています。)
4
3
 
5
4
  ```java
6
5
  import java.util.Arrays;