Skip to content

Commit 29db699

Browse files
authored
Add files via upload
1 parent ad2f8f9 commit 29db699

File tree

1 file changed

+48
-0
lines changed
  • script/order_bot_program_module/dialogue_section

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#change num
2+
from chinese_num_transform import chinese_in_string_transform
3+
#re
4+
import re
5+
#numpy
6+
import numpy as np
7+
8+
def equation(self):
9+
self.line_speaker('請講一下是甚麼題目讓你連一元一次方程式都不會解的?')
10+
self.line_speaker('先講一下題目有幾個變數?')
11+
# ex: 兩個 -> 2
12+
var_num = int(chinese_in_string_transform(self.listener())[:-1])
13+
self.line_speaker('有{}個變數,請說{}個方程式。'.format(var_num,var_num))
14+
# AX=B
15+
A = np.array([[0]*var_num for _ in range(var_num)])
16+
B = np.array([[0] for _ in range(var_num)])
17+
X = np.array([[None] for _ in range(var_num)])
18+
for i in range(var_num):
19+
math_line = self.listener()
20+
math_line = re.sub(r'[負副富]+','-',math_line)
21+
math_line = re.sub(r'等於','=',math_line)
22+
math_line = re.sub(r'(?<=\D)(?=[xyz])|^(?=[xyz])','1',math_line)
23+
math_line = chinese_in_string_transform(math_line)
24+
if var_num >= 1:
25+
finda = re.findall(r'([\+\-\d]+)x',math_line)
26+
A[i][0] = int(finda[0]) if len(finda)>=1 else 0
27+
if var_num >= 2:
28+
finda = re.findall(r'x?([\+\-\d]+)y',math_line)
29+
A[i][1] = int(finda[0]) if len(finda)>=1 else 0
30+
if var_num >= 3:
31+
finda = re.findall(r'x?y?([\+\-\d]+)z',math_line)
32+
A[i][2] = int(finda[0]) if len(finda)>=1 else 0
33+
findx = re.findall(r'=(.*)',math_line)
34+
B[i][0] = int(findx[0]) if len(findx)>=1 else 0
35+
have_ans=True
36+
try:
37+
X = np.linalg.inv(A).dot(B)
38+
except:
39+
have_ans=False
40+
if have_ans:
41+
if var_num==1:
42+
self.line_speaker('X等於{}'.format(X[0][0]))
43+
elif var_num==2:
44+
self.line_speaker('X等於{}\nY等於{}'.format(X[0][0],X[1][0]))
45+
else:
46+
self.line_speaker('X等於{}\nY等於{}Z等於{}'.format(X[0][0],X[1][0],X[2][0]))
47+
else:
48+
self.line_speaker('此題無解^_^')

0 commit comments

Comments
 (0)