回答編集履歴

9

語単語

2021/08/11 01:47

投稿

jimbe
jimbe

スコア12545

test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
  ```
54
54
 
55
- ```Plain text
55
+ ```text
56
56
 
57
57
  [1, 1, 1, 1, 1, 1]
58
58
 

8

誤字

2021/08/11 01:47

投稿

jimbe
jimbe

スコア12545

test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
  ```
54
54
 
55
- ```plain text
55
+ ```Plain text
56
56
 
57
57
  [1, 1, 1, 1, 1, 1]
58
58
 

7

if の条件を for に組み込み

2021/08/11 01:46

投稿

jimbe
jimbe

スコア12545

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  if(i > 0) buf[i-1] ++;
38
38
 
39
- if(--buf[i--] > 0) for(int j=buf[i+1]; j > 0; j--) buf[++i] = 1;
39
+ for(int j=--buf[i--]; j > 0; j--) buf[++i] = 1;
40
40
 
41
41
  //既存チェック・表示
42
42
 

6

行数削減

2021/08/10 19:24

投稿

jimbe
jimbe

スコア12545

test CHANGED
@@ -36,25 +36,13 @@
36
36
 
37
37
  if(i > 0) buf[i-1] ++;
38
38
 
39
- if(--buf[i] > 0) {
40
-
41
- for(int j=buf[i]; j > 0; j--) buf[i++] = 1;
39
+ if(--buf[i--] > 0) for(int j=buf[i+1]; j > 0; j--) buf[++i] = 1;
42
-
43
- }
44
-
45
- i --;
46
40
 
47
41
  //既存チェック・表示
48
42
 
49
43
  String s = Arrays.toString(Arrays.stream(buf, 0, i+1).sorted().toArray());
50
44
 
51
- if(!done.contains(s)) {
52
-
53
- System.out.println(s);
45
+ if(done.add(s)) System.out.println(s);
54
-
55
- done.add(s);
56
-
57
- }
58
46
 
59
47
  } while(i > 0);
60
48
 

5

一部 stream 化

2021/08/10 19:11

投稿

jimbe
jimbe

スコア12545

test CHANGED
@@ -46,11 +46,7 @@
46
46
 
47
47
  //既存チェック・表示
48
48
 
49
- int[] t = Arrays.copyOf(buf, i+1);
50
-
51
- Arrays.sort(t);
52
-
53
- String s = Arrays.toString(t);
49
+ String s = Arrays.toString(Arrays.stream(buf, 0, i+1).sorted().toArray());
54
50
 
55
51
  if(!done.contains(s)) {
56
52
 

4

バグ

2021/08/10 18:54

投稿

jimbe
jimbe

スコア12545

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  if(i > 0) buf[i-1] ++;
38
38
 
39
- if(--buf[i] == 0) {
39
+ if(--buf[i] > 0) {
40
40
 
41
41
  for(int j=buf[i]; j > 0; j--) buf[i++] = 1;
42
42
 

3

最適化?

2021/08/10 18:07

投稿

jimbe
jimbe

スコア12545

test CHANGED
@@ -38,19 +38,11 @@
38
38
 
39
39
  if(--buf[i] == 0) {
40
40
 
41
- i --;
42
-
43
- } else {
44
-
45
- for(int j=i; buf[j] > 1;) {
41
+ for(int j=buf[i]; j > 0; j--) buf[i++] = 1;
46
-
47
- buf[j] --;
48
-
49
- buf[++i] ++;
50
-
51
- }
52
42
 
53
43
  }
44
+
45
+ i --;
54
46
 
55
47
  //既存チェック・表示
56
48
 

2

実行結果追加

2021/08/10 18:06

投稿

jimbe
jimbe

スコア12545

test CHANGED
@@ -75,3 +75,29 @@
75
75
  }
76
76
 
77
77
  ```
78
+
79
+ ```plain text
80
+
81
+ [1, 1, 1, 1, 1, 1]
82
+
83
+ [1, 1, 1, 1, 2]
84
+
85
+ [1, 1, 1, 3]
86
+
87
+ [1, 1, 2, 2]
88
+
89
+ [1, 1, 4]
90
+
91
+ [1, 2, 3]
92
+
93
+ [1, 5]
94
+
95
+ [2, 2, 2]
96
+
97
+ [2, 4]
98
+
99
+ [3, 3]
100
+
101
+ [6]
102
+
103
+ ```

1

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

2021/08/10 17:25

投稿

jimbe
jimbe

スコア12545

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