質問編集履歴
5
コードであることが分かるように修正を行った
test
CHANGED
File without changes
|
test
CHANGED
@@ -74,6 +74,8 @@
|
|
74
74
|
|
75
75
|
|
76
76
|
|
77
|
+
```
|
78
|
+
|
77
79
|
def unParentheses(len:String): String ={
|
78
80
|
|
79
81
|
var str = len.slice(0,len.length)
|
@@ -112,6 +114,8 @@
|
|
112
114
|
|
113
115
|
|
114
116
|
|
117
|
+
```
|
118
|
+
|
115
119
|
count = 0のとき処理内容をどのように記載したらよいかが分からないのです。
|
116
120
|
|
117
121
|
アドバイスを頂けないでしょうか?
|
4
質問事項の訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -56,8 +56,6 @@
|
|
56
56
|
|
57
57
|
処理は文字列の操作である。
|
58
58
|
|
59
|
-
仕様(3)のように関数に関数を適用した場合は、()を消去し、関数がなくなるまで処理を行う。
|
60
|
-
|
61
59
|
先頭の1文字はアルファベット大文字1文字であればよいのでチェックしたら消す。
|
62
60
|
|
63
61
|
リストの2番目の要素を捨てる。
|
@@ -68,11 +66,11 @@
|
|
68
66
|
|
69
67
|
現在の状況
|
70
68
|
|
71
|
-
|
69
|
+
今回は、<引数1>に入力された文字列が'('で始まった場合、それに対応する')'を削除するようにしたいと考えています。
|
72
70
|
|
73
71
|
|
74
72
|
|
75
|
-
そ
|
73
|
+
そこで、今プログラムを考えているのですが
|
76
74
|
|
77
75
|
|
78
76
|
|
3
追記の部分が不要だったので消しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -117,57 +117,3 @@
|
|
117
117
|
count = 0のとき処理内容をどのように記載したらよいかが分からないのです。
|
118
118
|
|
119
119
|
アドバイスを頂けないでしょうか?
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
【追記】
|
134
|
-
|
135
|
-
申し訳ございません。
|
136
|
-
|
137
|
-
上記の文中に出てきた,bやcはString型の変数です。
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
実行結果は,以下のようにしたいです.
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
(実行結果_例1)
|
146
|
-
|
147
|
-
input => Abc
|
148
|
-
|
149
|
-
output => b
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
(実行結果_例2)
|
154
|
-
|
155
|
-
input => A(xy)(yz)
|
156
|
-
|
157
|
-
output => (xy)
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
(実行結果_例3)
|
162
|
-
|
163
|
-
input => Abcd
|
164
|
-
|
165
|
-
output => bd
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
(実行結果_例4)
|
170
|
-
|
171
|
-
input => A(ab)(cd)(ef)
|
172
|
-
|
173
|
-
output => (ab)(ef)
|
2
質問の要点をまとめなおした。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
文字列の
|
1
|
+
文字列の操作について
|
test
CHANGED
@@ -1,18 +1,132 @@
|
|
1
|
-
Aという関数にbとc(bとcはString型)という引数を与えたら,bを返す処理を行いたいと考えています.
|
1
|
+
Aという関数にbとc(bとcはString型の変数)という引数を与えたら,bを返す処理を行いたいと考えています.
|
2
|
+
|
3
|
+
このようなプログラムを作成したいのですが,うまく解放が思い浮かばないので教えていただけないでしょうか.
|
4
|
+
|
5
|
+
≪定義≫
|
6
|
+
|
7
|
+
<関数>は、アルファベット大文字1字で表される。
|
8
|
+
|
9
|
+
<関数>は<引数>を2つ以上をとる。
|
10
|
+
|
11
|
+
記述例は以下の通りとする。
|
12
|
+
|
13
|
+
<関数><引数><引数>…
|
2
14
|
|
3
15
|
|
4
16
|
|
5
|
-
|
17
|
+
<引数>はアルファベット小文字1文字か、'('アルファベット小文字2文字以上')'である。
|
6
18
|
|
7
|
-
|
19
|
+
<引数>には同じまたは異なるアルファベット文字が与えられる。
|
8
|
-
|
9
|
-
(2)Aという関数に(1)の引数bの代わりに例えば(xy),引数cの代わりに(yz)が入力されたらbの代わりに入力されている(xy)を返す.
|
10
|
-
|
11
|
-
(3)また,Aという関数に引数が3文字以上(例えばAbcdと入力されたいたら)最初の3文字を切り出し(例の場合で言うと,Abc)(1)の処理を行う.そして,処理した結果(例の場合はb)と残りの文字列(例の場合はd)を連結し,連結結果を返す.
|
12
20
|
|
13
21
|
|
14
22
|
|
23
|
+
以下は関数の動作例である。
|
24
|
+
|
25
|
+
Abc => b
|
26
|
+
|
27
|
+
A(bcd)(efg)=>(bcd)
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
仕様
|
32
|
+
|
33
|
+
関数Aは引数の2番目を捨てて引数を出現順にかえる。
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
(1)input => A<引数1><引数2>
|
38
|
+
|
39
|
+
output => <引数1>
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
(2)input => A<引数1><引数2><引数3>
|
44
|
+
|
45
|
+
output => <引数1><引数3>
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
(3)input => A(Abc)(def)
|
50
|
+
|
51
|
+
output => Abc =>bc
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
実現
|
56
|
+
|
57
|
+
処理は文字列の操作である。
|
58
|
+
|
15
|
-
|
59
|
+
仕様(3)のように関数に関数を適用した場合は、()を消去し、関数がなくなるまで処理を行う。
|
60
|
+
|
61
|
+
先頭の1文字はアルファベット大文字1文字であればよいのでチェックしたら消す。
|
62
|
+
|
63
|
+
リストの2番目の要素を捨てる。
|
64
|
+
|
65
|
+
リスト全体を連結して1つの文字列にする。
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
現在の状況
|
70
|
+
|
71
|
+
仕様(3)のように関数に関数を適用した場合にのみ()を消去し、それ以外というかアルファベット小文字の引数しか残ってない場合は()は残すようにしたいです。
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
それで、今は()の数を数えて関数に関数を適用した場合にのみ()を消去し、それ以外というかアルファベット小文字の引数しか残ってない場合は()は残すようにしたいのですが、
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
def unParentheses(len:String): String ={
|
80
|
+
|
81
|
+
var str = len.slice(0,len.length)
|
82
|
+
|
83
|
+
var count = 0
|
84
|
+
|
85
|
+
var i = 0
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
for(i <- 0 to len.length){
|
90
|
+
|
91
|
+
if(len == '('){
|
92
|
+
|
93
|
+
count = count + 1
|
94
|
+
|
95
|
+
}else if(len == ')'){
|
96
|
+
|
97
|
+
count = count - 1
|
98
|
+
|
99
|
+
}
|
100
|
+
|
101
|
+
}
|
102
|
+
|
103
|
+
if(count == 0){
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
return len
|
112
|
+
|
113
|
+
}
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
count = 0のとき処理内容をどのように記載したらよいかが分からないのです。
|
118
|
+
|
119
|
+
アドバイスを頂けないでしょうか?
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
|
16
130
|
|
17
131
|
|
18
132
|
|
1
具体的な実行結果の例を挙げました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -13,3 +13,47 @@
|
|
13
13
|
|
14
14
|
|
15
15
|
このようなプログラムを作成したいのですが,うまく解放が思い浮かばないので教えていただけないでしょうか.
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
【追記】
|
20
|
+
|
21
|
+
申し訳ございません。
|
22
|
+
|
23
|
+
上記の文中に出てきた,bやcはString型の変数です。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
実行結果は,以下のようにしたいです.
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
(実行結果_例1)
|
32
|
+
|
33
|
+
input => Abc
|
34
|
+
|
35
|
+
output => b
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
(実行結果_例2)
|
40
|
+
|
41
|
+
input => A(xy)(yz)
|
42
|
+
|
43
|
+
output => (xy)
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
(実行結果_例3)
|
48
|
+
|
49
|
+
input => Abcd
|
50
|
+
|
51
|
+
output => bd
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
(実行結果_例4)
|
56
|
+
|
57
|
+
input => A(ab)(cd)(ef)
|
58
|
+
|
59
|
+
output => (ab)(ef)
|