回答編集履歴

1

2019/04/03 01:58

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -21,3 +21,77 @@
21
21
  console.log(oks.includes("文京区"));
22
22
 
23
23
  ```
24
+
25
+
26
+
27
+ ---
28
+
29
+
30
+
31
+ 「得たいプログラムの記述」をコード化しました。
32
+
33
+
34
+
35
+ ループのやりかたは書いてありましたが、どう結果を得たいのかわからなかったので、stackというのに判定したtrueだか、falseだかを入れてます。
36
+
37
+
38
+
39
+ ```javascript
40
+
41
+ let area = [39, 33, 54];
42
+
43
+
44
+
45
+ let city =[
46
+
47
+ '千代田区OK中央区OK港区OK新宿区OK文京区NG・・・',
48
+
49
+ '横浜市NG川崎市OK横須賀市OK・・・',
50
+
51
+ '千葉市OK銚子市NG市川市NG・・・'
52
+
53
+ ];
54
+
55
+
56
+
57
+ let stack = [];
58
+
59
+ for(let areaIdx = 0; areaIdx < area.length; areaIdx++) {
60
+
61
+ let boolarrayForArea = [];
62
+
63
+ stack.push(boolarrayForArea);
64
+
65
+ const str = city[areaIdx];
66
+
67
+ let fromIdx = 0;
68
+
69
+ let noPos = -1;
70
+
71
+ let okPos = -1;
72
+
73
+ for(let cityIter = 0; cityIter < area[areaIdx]; cityIter++) {
74
+
75
+ ngPos = str.indexOf("NG", fromIdx) === -1 ? Number.MAX_VALUE : str.indexOf("NG", fromIdx) ;
76
+
77
+ okPos = str.indexOf("OK", fromIdx) === -1 ? Number.MAX_VALUE : str.indexOf("OK", fromIdx) ;
78
+
79
+ const nextPos = Math.min(ngPos, okPos);
80
+
81
+ const nextWord = str.substr(nextPos,2);
82
+
83
+ if (nextWord === "OK") { boolarrayForArea.push(true); }
84
+
85
+ else if (nextWord === "NG") { boolarrayForArea.push(false); }
86
+
87
+ else { boolarrayForArea.push(undefined); }
88
+
89
+ fromIdx = nextPos + 2;
90
+
91
+ }
92
+
93
+ }
94
+
95
+ console.log(stack);
96
+
97
+ ```