File tree Expand file tree Collapse file tree 3 files changed +175
-0
lines changed
solution/0600-0699/0640.Solve the Equation Expand file tree Collapse file tree 3 files changed +175
-0
lines changed Original file line number Diff line number Diff line change @@ -192,6 +192,66 @@ func solveEquation(equation string) string {
192
192
}
193
193
```
194
194
195
+ ### ** TypeScript**
196
+
197
+ ``` ts
198
+ function solveEquation(equation : string ): string {
199
+ const [left, right] = equation .split (' =' );
200
+ const createExpr = (s : string ) => {
201
+ let x = 0 ;
202
+ let n = 0 ;
203
+ let i = 0 ;
204
+ let sym = 1 ;
205
+ let cur = 0 ;
206
+ let isX = false ;
207
+ for (const c of s ) {
208
+ if (c === ' +' || c === ' -' ) {
209
+ if (isX ) {
210
+ if (i === 0 && cur === 0 ) {
211
+ cur = 1 ;
212
+ }
213
+ x += cur * sym ;
214
+ } else {
215
+ n += cur * sym ;
216
+ }
217
+ isX = false ;
218
+ cur = 0 ;
219
+ i = 0 ;
220
+ if (c === ' +' ) {
221
+ sym = 1 ;
222
+ } else {
223
+ sym = - 1 ;
224
+ }
225
+ } else if (c === ' x' ) {
226
+ isX = true ;
227
+ } else {
228
+ i ++ ;
229
+ cur *= 10 ;
230
+ cur += Number (c );
231
+ }
232
+ }
233
+ if (isX ) {
234
+ if (i === 0 && cur === 0 ) {
235
+ cur = 1 ;
236
+ }
237
+ x += cur * sym ;
238
+ } else {
239
+ n += cur * sym ;
240
+ }
241
+ return [x , n ];
242
+ };
243
+ const lExpr = createExpr (left );
244
+ const rExpr = createExpr (right );
245
+ if (lExpr [0 ] === rExpr [0 ]) {
246
+ if (lExpr [1 ] !== rExpr [1 ]) {
247
+ return ' No solution' ;
248
+ }
249
+ return ' Infinite solutions' ;
250
+ }
251
+ return ` x=${(lExpr [1 ] - rExpr [1 ]) / (rExpr [0 ] - lExpr [0 ])} ` ;
252
+ }
253
+ ```
254
+
195
255
### ** ...**
196
256
197
257
```
Original file line number Diff line number Diff line change @@ -167,6 +167,66 @@ func solveEquation(equation string) string {
167
167
}
168
168
```
169
169
170
+ ### ** TypeScript**
171
+
172
+ ``` ts
173
+ function solveEquation(equation : string ): string {
174
+ const [left, right] = equation .split (' =' );
175
+ const createExpr = (s : string ) => {
176
+ let x = 0 ;
177
+ let n = 0 ;
178
+ let i = 0 ;
179
+ let sym = 1 ;
180
+ let cur = 0 ;
181
+ let isX = false ;
182
+ for (const c of s ) {
183
+ if (c === ' +' || c === ' -' ) {
184
+ if (isX ) {
185
+ if (i === 0 && cur === 0 ) {
186
+ cur = 1 ;
187
+ }
188
+ x += cur * sym ;
189
+ } else {
190
+ n += cur * sym ;
191
+ }
192
+ isX = false ;
193
+ cur = 0 ;
194
+ i = 0 ;
195
+ if (c === ' +' ) {
196
+ sym = 1 ;
197
+ } else {
198
+ sym = - 1 ;
199
+ }
200
+ } else if (c === ' x' ) {
201
+ isX = true ;
202
+ } else {
203
+ i ++ ;
204
+ cur *= 10 ;
205
+ cur += Number (c );
206
+ }
207
+ }
208
+ if (isX ) {
209
+ if (i === 0 && cur === 0 ) {
210
+ cur = 1 ;
211
+ }
212
+ x += cur * sym ;
213
+ } else {
214
+ n += cur * sym ;
215
+ }
216
+ return [x , n ];
217
+ };
218
+ const lExpr = createExpr (left );
219
+ const rExpr = createExpr (right );
220
+ if (lExpr [0 ] === rExpr [0 ]) {
221
+ if (lExpr [1 ] !== rExpr [1 ]) {
222
+ return ' No solution' ;
223
+ }
224
+ return ' Infinite solutions' ;
225
+ }
226
+ return ` x=${(lExpr [1 ] - rExpr [1 ]) / (rExpr [0 ] - lExpr [0 ])} ` ;
227
+ }
228
+ ```
229
+
170
230
### ** ...**
171
231
172
232
```
Original file line number Diff line number Diff line change
1
+ function solveEquation ( equation : string ) : string {
2
+ const [ left , right ] = equation . split ( '=' ) ;
3
+ const createExpr = ( s : string ) => {
4
+ let x = 0 ;
5
+ let n = 0 ;
6
+ let i = 0 ;
7
+ let sym = 1 ;
8
+ let cur = 0 ;
9
+ let isX = false ;
10
+ for ( const c of s ) {
11
+ if ( c === '+' || c === '-' ) {
12
+ if ( isX ) {
13
+ if ( i === 0 && cur === 0 ) {
14
+ cur = 1 ;
15
+ }
16
+ x += cur * sym ;
17
+ } else {
18
+ n += cur * sym ;
19
+ }
20
+ isX = false ;
21
+ cur = 0 ;
22
+ i = 0 ;
23
+ if ( c === '+' ) {
24
+ sym = 1 ;
25
+ } else {
26
+ sym = - 1 ;
27
+ }
28
+ } else if ( c === 'x' ) {
29
+ isX = true ;
30
+ } else {
31
+ i ++ ;
32
+ cur *= 10 ;
33
+ cur += Number ( c ) ;
34
+ }
35
+ }
36
+ if ( isX ) {
37
+ if ( i === 0 && cur === 0 ) {
38
+ cur = 1 ;
39
+ }
40
+ x += cur * sym ;
41
+ } else {
42
+ n += cur * sym ;
43
+ }
44
+ return [ x , n ] ;
45
+ } ;
46
+ const lExpr = createExpr ( left ) ;
47
+ const rExpr = createExpr ( right ) ;
48
+ if ( lExpr [ 0 ] === rExpr [ 0 ] ) {
49
+ if ( lExpr [ 1 ] !== rExpr [ 1 ] ) {
50
+ return 'No solution' ;
51
+ }
52
+ return 'Infinite solutions' ;
53
+ }
54
+ return `x=${ ( lExpr [ 1 ] - rExpr [ 1 ] ) / ( rExpr [ 0 ] - lExpr [ 0 ] ) } ` ;
55
+ }
You can’t perform that action at this time.
0 commit comments