LoginSignup
9
10

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-05-20

TLDR

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

概要

愛が生まれた, なんで愛が生まれるのか がトレンドなので

'生' & '死' = '愛'

これがたまたまなのを検証する。

検証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

# 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

生死から愛が生まれるとき教科書から恐が生まれる
愛を生む二人を探して

9
10
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10