본문 바로가기

PY(Python Image Processing)/중학수학기초

21곱셈기호생략규칙-2

728x90
import re

# 1. 같은 문자의 곱셉을 거듭제곱으로 표현
# 예: aa -> a**2
def apply_exponentiation(equation):
    equation = re.sub(r'([a-zA-Z])\1', r'\1**2', equation)  # 같은 문자가 반복될 경우 제곱으로 표현
    return equation

# 2. 문자끼리 곱한 결과는 알파벳 순서로 정렬
# 예: ba -> ab
def sort_variables(equation):
    # 알파벳만 추출해서 정렬 후 다시 곱셈으로 연결
    matches = re.findall(r'[a-zA-Z]+', equation)
    for match in matches:
        sorted_vars = ''.join(sorted(match))
        equation = equation.replace(match, sorted_vars)
    return equation

# 3. 문자 앞에 숫자를 적절히 처리하고 1을 생략
# 예: 2a -> 2*a, 1*a -> a, -1*a -> -a
def handle_multiplication(equation):
    equation = re.sub(r'(\d)([a-zA-Z])', r'\1*\2', equation)  # 숫자와 문자의 곱셈 처리
    equation = re.sub(r'\b1\*', '', equation)  # 1*을 생략
    equation = re.sub(r'\b-1\*', '-', equation)  # -1*을 생략
    return equation

# 5. 괄호가 있는 식에서 숫자와 곱셈 처리
# 예: 2(3) -> 2*(3)
def handle_parentheses_multiplication(equation):
    equation = re.sub(r'(\d)\(', r'\1*(', equation)  # 숫자와 괄호 사이의 곱셈 기호 처리
    return equation

# 6. 나눗셈을 분수 꼴로 표현 (문자를 포함한 나눗셈의 경우)
# 예: c/4 -> (c)/4
def fraction_notation(equation):
    equation = re.sub(r'([a-zA-Z]+)\/(\d+)', r'(\1)/\2', equation)  # 문자 나눗셈을 분수로 변환
    return equation

# 7. 나누기 기호를 곱셈 X 역수로 변환
# 예: a/b -> a * (1/b)
def division_to_multiplication(equation):
    equation = re.sub(r'([a-zA-Z]+)\/([a-zA-Z]+)', r'(\1)*(1/\2)', equation)  # 문자 나눗셈을 곱셈으로 변환
    return equation

# 예시 수식 1: 같은 문자의 곱셈을 거듭제곱으로 표현
expression_1 = "2aa + 3a"
print(f"예시 수식 1: {expression_1}")
print(f"변환된 수식 1: {apply_exponentiation(expression_1)}\n")

# 예시 수식 2: 문자끼리 곱한 결과는 알파벳 순서로 쓴다
expression_2 = "2ba + 3ac"
print(f"예시 수식 2: {expression_2}")
print(f"변환된 수식 2: {sort_variables(expression_2)}\n")

# 예시 수식 3: 문자 앞에 숫자를 적절히 처리하고 1을 생략
expression_3 = "2a + 1a - 1b"
print(f"예시 수식 3: {expression_3}")
print(f"변환된 수식 3: {handle_multiplication(expression_3)}\n")

# 예시 수식 4: 괄호가 있는 식 X(수)에서는 수를 괄호 앞에 쓴다
expression_4 = "3(2a + b)"
print(f"예시 수식 4: {expression_4}")
print(f"변환된 수식 4: {handle_parentheses_multiplication(expression_4)}\n")

# 예시 수식 5: 나눗셈을 분수의 꼴로 나타낸다
expression_5 = "c/4"
print(f"예시 수식 5: {expression_5}")
print(f"변환된 수식 5: {fraction_notation(expression_5)}\n")

# 예시 수식 6: 나누기 기호를 X(역수)로 바꾸어 곱셈 기호 X를 생략한다
expression_6 = "ab/c"
print(f"예시 수식 6: {expression_6}")
print(f"변환된 수식 6: {division_to_multiplication(expression_6)}\n")

# 예시 수식 7: 괄호가 있는 식에서 나눗셈 처리
expression_7 = "5(2ab)/d"
transformed_expression_7 = fraction_notation(division_to_multiplication(handle_parentheses_multiplication(expression_7)))
print(f"예시 수식 7: {expression_7}")
print(f"변환된 수식 7: {transformed_expression_7}\n")
728x90

'PY(Python Image Processing) > 중학수학기초' 카테고리의 다른 글

21곱셈기호생략규칙-1  (1) 2024.09.02
20문자로나타내기  (0) 2024.09.02
19제곱근의덧셈과뺄셈  (0) 2024.08.20
18분모의유리화  (0) 2024.08.20
17제곱근의곱셈과나눗셈  (0) 2024.08.19