愛はたまたま生まれたのか？誰かの陰謀なのか？

## TLDR

たまたまです。私は、なるべくしてなったのだと信じたい！
プログラムを作って検証しました。
愛以外の漢字についてもパターンを作成することができます。

## 概要

[愛が生まれた](http://qiita.com/dongri/items/041ff3e7dde6c99beeb0#_reference-8476d17fd7595884425d), [なんで愛が生まれるのか](http://qiita.com/tienlen/items/44daf3a52eb872085556) がトレンドなので
```
'生' & '死' = '愛'
```
これがたまたまなのを検証する。
## 検証1 : Unicode の順番

Unicodeでは、漢字はどのような順番なのか？

> UnicodeのCJK統合漢字は、概ね部首順（部首内は画数順）に並んでいます。

cf. http://www.asahi-net.or.jp/~ax2s-kmtn/ref/unicode/cjku_radical.html

'生', '死', '愛' を参照してみると、部首通りに並んでいた。

**i.e. 陰謀ではない**

## 検証2 : 逆算ができない

そもそも、bit演算であるため、逆算ができない。

**i.e. '愛'と'死'からは、'生'は導きだせない。**



では、'愛'を作るパターンは他にもあるのでは？

## 検証3 : '愛'を作るパターンは?

プログラムを書いてみた。
実行はこちら[Paiza.IO] (https://paiza.io/projects/ThLEgWL8eHfV5ysF_lPGTQ)

```py3
# coding: utf-8
import operator 

# 任意の漢字で
kanji = '愛'
# __and__ を__or__, __xor__に変更可
bit_operation = operator.__and__


def f(word, bit_pattern, obj1='', obj2=''):
    if(len(word) == len(obj1)):
        # 終端処理
        return [(obj1, obj2)] if not(word == obj1 == obj2) else []
    else:
        use_pattern = bit_pattern[int(word[len(obj1)])]
        # flatMap化
        return [tup for i, j in use_pattern 
                    for tup in f(word, bit_pattern, obj1 + str(i), obj2 + str(j))]

bits = (1, 0)
# 論理演算の結果から引く辞書を作成する。dict(結果:[パターン])
bit_pattern = {bit:
                [pattern 
                    for ans, pattern in 
                    ((bit_operation(x,y), (x,y)) for x in bits 
                                                 for y in bits) 
                 if ans == bit] 
                    for bit in bits}

kanji_bit = bin(ord('愛'))
# 漢字の範囲でfiltering
result = filter(lambda x:
        int('4E00', 16) <= int(kanji_bit[:2]+x[0],2) <= int('9FFF', 16) and int('4E00', 16) <= int(kanji_bit[:2]+x[1],2) <= int('9FFF', 16), 
      f(kanji_bit[2:], bit_pattern))
result = list(
            map(lambda x:(chr(int(kanji_bit[:2]+x[0],2)), chr(int(kanji_bit[:2]+x[1],2))), 
                result))
print("'"+kanji+"' を作り得るパターン数", end=" : ")
print(len(result))
print("漢字一覧", end="\n")
print({y for x in result for y in x})
```

### 結果

'愛'を作るパターン : 6560
使われうる漢字数 : 256
```{'榟', '疛', '愛', '浟', '篛', '涿', '羻', '禛', '斻', '礟', '熿', '欛', '涟', '漿', '焛', '柿', '敟', '焻', '祻', '綛', '殟', '椻', '緟', '毿', '愻', '掛', '罟', '捿', '攛', '箛', '矛', '朻', '換', '箿', '楛', '淟', '甿', '濛', '移', '眻', '眛', '歿', '祿', '椿', '挻', '紿', '懻', '翿', '生', '懟', '翛', '欟', '涛', '熻', '憿', '掟', '羿', '缛', '猻', '畟', '添', '煻', '翟', '甛', '猿', '挟', '敻', '猟', '燻', '淿', '枻', '煟', '朿', '禿', '礿', '痟', '潻', '潿', '敿', '猛', '燛', '掻', '畛', '槟', '絿', '浿', '獿', '珛', '睻', '疿', '枟', '枿', '珻', '缟', '椛', '死', '羟', '歟', '槛', '羛', '紛', '絛', '掿', '租', '獻', '榻', '秿', '旟', '瞻', '笿', '緻', '筻', '杛', '礻', '涻', '柟', '焿', '画', '柛', '损', '篿', '离', '椟', '淛', '澿', '珿', '槿', '笻', '浻', '感', '挿', '慿', '欿', '旿', '歛', '絻', '禟', '翻', '煛', '矟', '熟', '毟', '濟', '憟', '憻', '緿', '疟', '營', '燿', '篟', '瞟', '祛', '旛', '睟', '睿', '紟', '槻', '殿', '捛', '玿', '濻', '痿', '痻', '眿', '殻', '緛', '獛', '捻', '榛', '篻', '慟', '榿', '毛', '楻', '真', '煿', '缿', '玛', '綟', '旻', '罿', '絟', '秛', '攟', '矻', '浛', '疻', '缻', '挛', '罻', '笛', '畿', '漛', '杻', '懿', '楟', '瞛', '礛', '揿', '筛', '揟', '活', '枛', '珟', '筿', '痛', '玟', '毻', '焟', '綿', '束', '笟', '楿', '政', '望', '熛', '板', '綻', '筟', '懛', '獟', '斛', '欻', '畻', '箟', '洟', '澟', '澻', '祟', '玻', '澛', '濿', '瞿', '慻', '査', '斟', '潟', '慛', '揻', '斿', '漟', '攻', '洿', '期', '洛', '憛', '潛', '殛', '紻', '愿', '漻', '罛', '矿', '睛', '敛', '箻'}```

作られるパターンは多いが、この中で関連あるペアのパターンはあるのか？

### まとめ

作られるパターンは多いが、この中で関連あるペアのパターンはあるのか？

**i.e.** 
**存在することが非常に稀ではないか**
**```'生'&'死'='愛'```はたまたま**

**しかし、生・死・愛は関連が非常に強い単語のように思える。**
**なるべくしてなったのではないか？**

## 蛇足 : 他の漢字は？

作成したプログラムで他の漢字についてもいじれます。
また、and だけではなく、or、xor　についても行えます。
(xorは漢字限定では結果が出ません漢字が4E00~9FFFのため、一桁目で漢字と漢字以外の組み合わせになるため)

いろいろ試行してください。

### Link

[生死から愛が生まれるとき教科書から恐が生まれる](http://qiita.com/scivola/items/c0f89a313b208a654734)
[愛を生む二人を探して]
(http://qiita.com/shuhei/items/ffddebaa537a34c9ea05)