読者です 読者をやめる 読者になる 読者になる

GraffitiNote

Pythonistaの情報系大学生がプログラミングやらDTMやらデザインやら

pythonの演算子オーバーロードはIQ150を超える

算数の問題だ!┗(^o^;)┓足し算かな????wwWwwWWw┏(;^o^)┛足し算じゃないな?????wWWWwww(´・`;) こ… これ…これは……演算子オーバーロードだあああああ┗(^o^)┛WwwwWW┏(^o^)┓ドコドコドコwwwwwwwwwww

IQ150もあるわけねーだろ


というわけでこの問題を演算子オーバーロードを使って解いてくれる
python3のソースコードです。(解法の説明は要らないと思われる)

overload.py

class N(int):
  def __init__(self,value):
    self.value = value
  def __add__(self,other):
    n1,n2 = self.value,other.value
    if n1 < n2: n1,n2 = n2,n1 #念の為
    return str(n1 - n2) + str(n1 + n2)

#a+bのフォーマットで標準入力
while True:
  a,b = map(int,input().split("+")) #標準入力から数値受け取り
  a,b = N(a),N(b) #わざわざ変換する
  answer = a + b #演算子オーバーロードだ!!!(これがやりたかっただけ)
  print("=" + str(answer))


実行結果
(標準入力時に改行しない方法を知ってる方がいたら教えてください)

$ python3 overload.py
6+4
=210
9+2
=711
8+5
=313
5+2
=37
7+6
=113