僕を取り囲む 47331654 を観察した不定期日記で 395258741271 はここ?

壊死と絵師は同じ発音じゃん?

なんて暇つぶしながら待合室、病院の

倒置と統治、倒錯と盗作も同じ発音?

壊死しちゃって

自分で切断するより

プロの方が残る部分多いから

病院ポスターはレギュレーションきついから

どれも似た感じなのかな

廊下徘徊

椎間板(ついかんばん)ヘルニアのポスター

それで対関数(ついかんすう)を思い出す

僕は携帯電話を持っていないからポスターの写真が撮れないので Wikipedia の椎間板対関数から

椎間板

対関数

似てるよね?僕は似ていると思う

対関数を使うと (x, y, z) を一意の数字にできるなと

対関数は 2 つの数を一意の数字にできる

だから x と y から求めた一意の数字と、z の対で求まる

def cantor_pairing(x, y)
  (x + y) * (x + y + 1) / 2 + y
end

def cantor_pairing_3(x, y, z)
  cantor_pairing(cantor_pairing(x, y), z)
end

patterns = (0..10).to_a.repeated_permutation(3).to_a

patterns.each do |coords|
  x, y, z = coords
  unique_number = cantor_pairing_3(x, y, z)
  puts "(#{x}, #{y}, #{z}) -> #{unique_number}"
end
    

Ruby の repeated_permutation が便利

Python の itertools.product はいつも引数を忘れちゃう

(0, 0, 0) -> 0
(0, 0, 1) -> 2
(0, 0, 2) -> 5
(0, 0, 3) -> 9
(0, 0, 4) -> 14
(0, 0, 5) -> 20
(0, 0, 6) -> 27
(0, 0, 7) -> 35
(0, 0, 8) -> 44
(0, 0, 9) -> 54
(0, 0, 10) -> 65
 :
(1, 2, 3) -> 69
 :
(8, 0, 0) -> 666
    

(1, 2, 3) と (8, 0, 0) はニンゲンのバグで綺麗に見える

(69, 69, 69) -> 47331654

(666, 666, 666) -> 395258741271
    

こちらは僕には綺麗さが見つけられず

ラマヌジャンならタクシー数みたいに面白さを見つけられるのかもな

あ、車にひかれた猫がいる!

47331654 と 395258741271 にいるよね!