回答編集履歴

3

BitSetを使った例に変更

2020/01/29 23:26

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,38 +1,4 @@
1
1
  番外編? List系使わず、要素数も限られるけど、ビット演算で簡単に・・・
2
-
3
-
4
-
5
- ```java
6
-
7
- class Main {
8
-
9
- public static void main(String[] args) {
10
-
11
- String s[] = {"あ", "い", "う", "え", "お"};
12
-
13
-
14
-
15
- var bit = (1 << Integer.parseInt(args[0]))
16
-
17
- | (1 << Integer.parseInt(args[1]));
18
-
19
- for (var e: s) {
20
-
21
- if ((bit & 1) == 0) System.out.println(e);
22
-
23
- bit >>= 1;
24
-
25
- }
26
-
27
- }
28
-
29
- }
30
-
31
- ```
32
-
33
-
34
-
35
- 無理矢理 stream使ってみたり・・・
36
2
 
37
3
 
38
4
 
@@ -50,13 +16,15 @@
50
16
 
51
17
 
52
18
 
19
+ var bit = new java.util.BitSet();
20
+
53
- var bit = Arrays.stream(args).mapToInt(x -> 1<<Integer.parseInt(x)).sum();
21
+ Arrays.stream(args).mapToInt(Integer::parseInt).forEach(bit::set);
22
+
23
+ var i = 0;
54
24
 
55
25
  for (var e: s) {
56
26
 
57
- if ((bit & 1) == 0) System.out.println(e);
27
+ if (!bit.get(i++)) System.out.println(e);
58
-
59
- bit >>= 1;
60
28
 
61
29
  }
62
30
 
@@ -65,3 +33,41 @@
65
33
  }
66
34
 
67
35
  ```
36
+
37
+
38
+
39
+ BitSetを使って制限解除。
40
+
41
+
42
+
43
+ ```java
44
+
45
+ import java.util.Arrays;
46
+
47
+
48
+
49
+ class Main {
50
+
51
+ public static void main(String[] args) {
52
+
53
+ String s[] = {"あ", "い", "う", "え", "お"};
54
+
55
+
56
+
57
+ var bit = new java.util.BitSet();
58
+
59
+ Arrays.stream(args).mapToInt(Integer::parseInt).forEach(bit::set);
60
+
61
+ var i = 0;
62
+
63
+ for (var e: s) {
64
+
65
+ if (!bit.get(i++)) System.out.println(e);
66
+
67
+ }
68
+
69
+ }
70
+
71
+ }
72
+
73
+ ```

2

stream版追記

2020/01/29 23:26

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,4 +1,4 @@
1
- 番外編? List系使わず、要素数も限られるけど、ビット演算で・・・
1
+ 番外編? List系使わず、要素数も限られるけど、ビット演算で簡単に・・・
2
2
 
3
3
 
4
4
 
@@ -29,3 +29,39 @@
29
29
  }
30
30
 
31
31
  ```
32
+
33
+
34
+
35
+ 無理矢理 stream使ってみたり・・・
36
+
37
+
38
+
39
+ ```java
40
+
41
+ import java.util.Arrays;
42
+
43
+
44
+
45
+ class Main {
46
+
47
+ public static void main(String[] args) {
48
+
49
+ String s[] = {"あ", "い", "う", "え", "お"};
50
+
51
+
52
+
53
+ var bit = Arrays.stream(args).mapToInt(x -> 1<<Integer.parseInt(x)).sum();
54
+
55
+ for (var e: s) {
56
+
57
+ if ((bit & 1) == 0) System.out.println(e);
58
+
59
+ bit >>= 1;
60
+
61
+ }
62
+
63
+ }
64
+
65
+ }
66
+
67
+ ```

1

説明変更

2020/01/29 15:11

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,4 +1,4 @@
1
- 要素数限られるけど、ビット演算で・・・
1
+ 番外編? List系使わず、要素数限られるけど、ビット演算で・・・
2
2
 
3
3
 
4
4