a
┌──┐
│┌─┼┐
││ ││
└┼─┘│
└──┘b
a+b. |a*b. |a^b.
┏━━┓ |┌──┐ |┏━━┓
┃┌─╋┓|│┏━╋┐|┃┏━╋┓
┃│ │┃|│┃ ┃│|┃┃未┃┃a,bの内、重なっていない所を選択
┗╋─┘┃|└╋━┛│|┗╋━┛┃(重なっているところは未選択)
┗━━┛| └──┘| ┗━━┛
↓こういう状態ね
┏━━━┓
┃llllllllllllllll┃
┃lllll┏━╋━┓
┃lllll┃ ┃lllll┃
┗━╋━┛lllll┃
┃llllllllllllllll┃
┗━━━┛
初期状態
a. |
┌──┐|
│ │| ┌──┐
│ │| │ │
└―─┘| │ │
| └──┘b
a^=b
: aとbを重ね、aを「a,bの内、重なっていないところを選択したもの」にする。
: bはそのまま。
a. |b
┏━━┓ |
┃┏━╋┓| ┌──┐
┃┃未┃┃| │ |
┗╋━┛┃| │ |bは変更無し
┗━━┛| └──┘
b^=a
: 「変更後のa」とbを重ね、
. 「重なっていないところを選択」したものを改めてbとする。
: aはそのまま。
a. |b
┏━━┓ |┌──┐
┃┏━╋┓|│ |
┃┃未┃┃|│ |::::
┗╋━┛┃|└──┘:::: ( bが、「最初のa」の位置に移動した )
┗━━┛| ::::::::::::::
a^=b
: さらにaとbを重ね、「重なっていないところを選択」したものをaとする。
: bはそのまま。
a. |b
:::::::::::::: |┌──┐
: : ┌──┐|│ |
: : │ ||│ |::::
│ ||└──┘:::: ( aが、「最初のb」の位置に移動した )
└──┘| ::::::::::::::