2016年7月31日日曜日

160731(2)

Ruby


デュードニーの問題

http://japla.sakura.ne.jp/workshop/workshop/2012/primar_2.pdf
に載っていた問題。

1から9まで一つずつ使って
abc * de = fg * hi
となるもののうち、その積が最大となるものを求めよ
という問題である。

1917年に発表されたものの、1971年まで正しい解が求まらなかったらしい。
しかし、プログラミングで求めれば一瞬である。

ary = []
(1..9).to_a.permutation{|a|
  i = a[0] * 100 + a[1] * 10 + a[2]
  j = a[3] * 10 + a[4]
  k = a[5] * 10 + a[6]
  l = a[7] * 10 + a[8]
  ary << i * j if i * j == k * l
}
p ary.uniq.sort

出力結果
[3634, 3726, 3886, 4002, 4234, 4662, 5022, 5056, 5568, 7008, 7448]

160731

Ruby


Highly composite number

オンライン整数列大辞典の
A002182(http://oeis.org/A002182/list)
と比較し、答え合わせしてみる。
(実行時間は10分弱ほどかかる。)

require 'prime'

def number_of_divisors(n)
  n.prime_division.inject(1){|s, a| s *= a[1] + 1}
end

def A002182(n)
  i = 1
  ary = [i]
  max = 1
  while ary.size < n
    i += 1
    j = number_of_divisors(i)
    if j > max
      ary << i
      max = j
    end
  end
  ary
end
ary = A002182(41)

# OEIS A002182のデータ
ary0 =
[1,2,4,6,12,24,36,48,60,120,180,240,360,720,840,
 1260,1680,2520,5040,7560,10080,15120,20160,25200,
 27720,45360,50400,55440,83160,110880,166320,
 221760,277200,332640,498960,554400,665280,720720,
 1081080,1441440,2162160]
# 一致の確認
p ary == ary0

2016年7月25日月曜日

160725(2)

整数列のLINKS の編集(66)

https://oeis.org/A259419
のLINKS を編集しました。

160725

整数列のLINKS の編集(65)

https://oeis.org/A072881
https://oeis.org/A092264
https://oeis.org/A133847
https://oeis.org/A133848
https://oeis.org/A133854
のLINKS を編集しました。

2016年7月24日日曜日

160724(2)

Ruby


RSA暗号

OpenSSL::PKey::RSA の使い方がわからなかったので、
自分で書いてみた。

require 'OpenSSL'

def pow(a, m, mod)
  return 1 % mod if m == 0
  k = pow(a, m >> 1, mod)
  k *= k
  return k % mod if m & 1 == 0
  return k * a % mod
end

a = 10123457689
b = 1023456987896543201

n = a * b
# (a - 1) * (b - 1)と互い素なeを見つける
l = (a - 1).lcm(b - 1)
e = 2
while e.gcd(l) != 1
  e += 1
end

# 公開鍵
p [e, n]
# 秘密鍵
p [d = OpenSSL::BN.new("#{e}").mod_inverse(l).to_i, n]

p numbers = [20160724, 20160725, 20160726]
# 公開鍵を使って暗号化
p encrypted_numbers = numbers.map{|i| pow(i, e, n)}
# 復号化
p encrypted_numbers.map{|i| pow(i, d, n)}

出力結果
[17, 10360923513482040204684122489]
[76183261121018994166647953, 10360923513482040204684122489]
[20160724, 20160725, 20160726]
[9425498480305655387214529667, 6519287776315623661704315326, 1393273251060004031245469488]
[20160724, 20160725, 20160726]

160724

Ruby


An 型フリーズパターンと多角形の三角形分割(4)

9 角形でやってみた。

def A2(ary)
  # i_maxは大きめにとっておく
  i_max = 15
  m = ary.size
  a_ary = [ary]
  i = 0
  while (i == 0 || a_ary[i] != ary) && i < i_max
    a_ary << Array.new(m, 1)
    (m - 2).downto(1){|j|
      x, y = a_ary[i][j - 1] * a_ary[i + 1][j + 1] + 1, a_ary[i][j]
      if x % y > 0
        i = i_max
        break
      else
        a_ary[i + 1][j] = x / y
      end
    }
    i += 1
  end
  if i < i_max
    (0..i).each{|i| p a_ary[i]}
    p ""
    return a_ary.uniq!
  end
  []
end

def c(n)
  (n + 2..2 * n).inject(:*) / (2..n).inject(:*)
end

def A3(n)
  p n
  a = []
  b = Array.new(n + 1, 0)
  # mは大きめにとっておく
  m = 5
  (1..m).to_a.repeated_permutation(n - 3){|i|
    i = [1] + i + [1]
    if !a.include?(i)
      a2 = A2(i)
      if a2 != []
        a += a2
        b[a2.size] += 1
      end
    end
    break if a.size >= c(n - 2)
  }
  p [a.size, b]
end

A3(9)

出力結果
9
[1, 1, 1, 1, 1, 1, 1, 1]
[1, 7, 6, 5, 4, 3, 2, 1]
[1, 1, 6, 5, 4, 3, 2, 1]
[1, 2, 1, 5, 4, 3, 2, 1]
[1, 2, 3, 1, 4, 3, 2, 1]
[1, 2, 3, 4, 1, 3, 2, 1]
[1, 2, 3, 4, 5, 1, 2, 1]
[1, 2, 3, 4, 5, 6, 1, 1]
[1, 2, 3, 4, 5, 6, 7, 1]
[1, 1, 1, 1, 1, 1, 1, 1]
""
[1, 1, 1, 1, 1, 1, 2, 1]
[1, 6, 5, 4, 3, 2, 1, 1]
[1, 2, 11, 9, 7, 5, 3, 1]
[1, 1, 1, 5, 4, 3, 2, 1]
[1, 3, 2, 1, 4, 3, 2, 1]
[1, 2, 5, 3, 1, 3, 2, 1]
[1, 2, 3, 7, 4, 1, 2, 1]
[1, 2, 3, 4, 9, 5, 1, 1]
[1, 2, 3, 4, 5, 11, 6, 1]
[1, 1, 1, 1, 1, 1, 2, 1]
""
[1, 1, 1, 1, 1, 2, 1, 1]
[1, 6, 5, 4, 3, 2, 3, 1]
[1, 1, 5, 4, 3, 2, 1, 1]
[1, 3, 2, 9, 7, 5, 3, 1]
[1, 1, 2, 1, 4, 3, 2, 1]
[1, 3, 2, 3, 1, 3, 2, 1]
[1, 2, 5, 3, 4, 1, 2, 1]
[1, 2, 3, 7, 4, 5, 1, 1]
[1, 2, 3, 4, 9, 5, 6, 1]
[1, 1, 1, 1, 1, 2, 1, 1]
""
[1, 1, 1, 1, 1, 2, 3, 1]
[1, 5, 4, 3, 2, 1, 1, 1]
[1, 3, 14, 11, 8, 5, 2, 1]
[1, 1, 2, 9, 7, 5, 3, 1]
[1, 2, 1, 1, 4, 3, 2, 1]
[1, 3, 5, 2, 1, 3, 2, 1]
[1, 2, 5, 8, 3, 1, 2, 1]
[1, 2, 3, 7, 11, 4, 1, 1]
[1, 2, 3, 4, 9, 14, 5, 1]
[1, 1, 1, 1, 1, 2, 3, 1]
""
[1, 1, 1, 1, 1, 3, 2, 1]
[1, 5, 4, 3, 2, 1, 2, 1]
[1, 2, 9, 7, 5, 3, 1, 1]
[1, 2, 3, 13, 10, 7, 4, 1]
[1, 1, 1, 1, 4, 3, 2, 1]
[1, 4, 3, 2, 1, 3, 2, 1]
[1, 2, 7, 5, 3, 1, 2, 1]
[1, 2, 3, 10, 7, 4, 1, 1]
[1, 2, 3, 4, 13, 9, 5, 1]
[1, 1, 1, 1, 1, 3, 2, 1]
""
[1, 1, 1, 1, 2, 1, 1, 1]
[1, 6, 5, 4, 3, 5, 2, 1]
[1, 1, 5, 4, 3, 2, 3, 1]
[1, 2, 1, 4, 3, 2, 1, 1]
[1, 3, 5, 2, 7, 5, 3, 1]
[1, 1, 2, 3, 1, 3, 2, 1]
[1, 3, 2, 3, 4, 1, 2, 1]
[1, 2, 5, 3, 4, 5, 1, 1]
[1, 2, 3, 7, 4, 5, 6, 1]
[1, 1, 1, 1, 2, 1, 1, 1]
""
[1, 1, 1, 1, 2, 1, 2, 1]
[1, 5, 4, 3, 2, 3, 1, 1]
[1, 2, 9, 7, 5, 3, 4, 1]
[1, 1, 1, 4, 3, 2, 1, 1]
[1, 4, 3, 2, 7, 5, 3, 1]
[1, 1, 3, 2, 1, 3, 2, 1]
[1, 3, 2, 5, 3, 1, 2, 1]
[1, 2, 5, 3, 7, 4, 1, 1]
[1, 2, 3, 7, 4, 9, 5, 1]
[1, 1, 1, 1, 2, 1, 2, 1]
""
[1, 1, 1, 1, 2, 3, 1, 1]
[1, 5, 4, 3, 2, 3, 4, 1]
[1, 1, 4, 3, 2, 1, 1, 1]
[1, 4, 3, 11, 8, 5, 2, 1]
[1, 1, 3, 2, 7, 5, 3, 1]
[1, 2, 1, 2, 1, 3, 2, 1]
[1, 3, 5, 2, 3, 1, 2, 1]
[1, 2, 5, 8, 3, 4, 1, 1]
[1, 2, 3, 7, 11, 4, 5, 1]
[1, 1, 1, 1, 2, 3, 1, 1]
""
[1, 1, 1, 1, 2, 3, 4, 1]
[1, 4, 3, 2, 1, 1, 1, 1]
[1, 4, 15, 11, 7, 3, 2, 1]
[1, 1, 3, 11, 8, 5, 2, 1]
[1, 2, 1, 2, 7, 5, 3, 1]
[1, 2, 3, 1, 1, 3, 2, 1]
[1, 3, 5, 7, 2, 1, 2, 1]
[1, 2, 5, 8, 11, 3, 1, 1]
[1, 2, 3, 7, 11, 15, 4, 1]
[1, 1, 1, 1, 2, 3, 4, 1]
""
[1, 1, 1, 1, 2, 5, 3, 1]
[1, 4, 3, 2, 1, 1, 2, 1]
[1, 3, 11, 8, 5, 2, 1, 1]
[1, 2, 5, 18, 13, 8, 3, 1]
[1, 1, 1, 2, 7, 5, 3, 1]
[1, 3, 2, 1, 1, 3, 2, 1]
[1, 3, 8, 5, 2, 1, 2, 1]
[1, 2, 5, 13, 8, 3, 1, 1]
[1, 2, 3, 7, 18, 11, 4, 1]
[1, 1, 1, 1, 2, 5, 3, 1]
""
[1, 1, 1, 1, 3, 2, 1, 1]
[1, 5, 4, 3, 2, 5, 3, 1]
[1, 1, 4, 3, 2, 1, 2, 1]
[1, 3, 2, 7, 5, 3, 1, 1]
[1, 2, 5, 3, 10, 7, 4, 1]
[1, 1, 1, 2, 1, 3, 2, 1]
[1, 4, 3, 2, 3, 1, 2, 1]
[1, 2, 7, 5, 3, 4, 1, 1]
[1, 2, 3, 10, 7, 4, 5, 1]
[1, 1, 1, 1, 3, 2, 1, 1]
""
[1, 1, 1, 1, 3, 2, 3, 1]
[1, 4, 3, 2, 1, 2, 1, 1]
[1, 3, 11, 8, 5, 2, 3, 1]
[1, 1, 2, 7, 5, 3, 1, 1]
[1, 3, 2, 3, 10, 7, 4, 1]
[1, 1, 2, 1, 1, 3, 2, 1]
[1, 4, 3, 5, 2, 1, 2, 1]
[1, 2, 7, 5, 8, 3, 1, 1]
[1, 2, 3, 10, 7, 11, 4, 1]
[1, 1, 1, 1, 3, 2, 3, 1]
""
[1, 1, 1, 1, 3, 5, 2, 1]
[1, 4, 3, 2, 1, 2, 3, 1]
[1, 2, 7, 5, 3, 1, 1, 1]
[1, 3, 5, 17, 12, 7, 2, 1]
[1, 1, 2, 3, 10, 7, 4, 1]
[1, 2, 1, 1, 1, 3, 2, 1]
[1, 4, 7, 3, 2, 1, 2, 1]
[1, 2, 7, 12, 5, 3, 1, 1]
[1, 2, 3, 10, 17, 7, 4, 1]
[1, 1, 1, 1, 3, 5, 2, 1]
""
[1, 1, 1, 2, 1, 1, 1, 1]
[1, 6, 5, 4, 7, 3, 2, 1]
[1, 1, 5, 4, 3, 5, 2, 1]
[1, 2, 1, 4, 3, 2, 3, 1]
[1, 2, 3, 1, 3, 2, 1, 1]
[1, 3, 5, 7, 2, 5, 3, 1]
[1, 1, 2, 3, 4, 1, 2, 1]
[1, 3, 2, 3, 4, 5, 1, 1]
[1, 2, 5, 3, 4, 5, 6, 1]
[1, 1, 1, 2, 1, 1, 1, 1]
""
[1, 1, 1, 2, 1, 1, 2, 1]
[1, 5, 4, 3, 5, 2, 1, 1]
[1, 2, 9, 7, 5, 8, 3, 1]
[1, 1, 1, 4, 3, 2, 3, 1]
[1, 3, 2, 1, 3, 2, 1, 1]
[1, 3, 8, 5, 2, 5, 3, 1]
[1, 1, 2, 5, 3, 1, 2, 1]
[1, 3, 2, 3, 7, 4, 1, 1]
[1, 2, 5, 3, 4, 9, 5, 1]
[1, 1, 1, 2, 1, 1, 2, 1]
""
[1, 1, 1, 2, 1, 2, 1, 1]
[1, 5, 4, 3, 5, 2, 3, 1]
[1, 1, 4, 3, 2, 3, 1, 1]
[1, 3, 2, 7, 5, 3, 4, 1]
[1, 1, 2, 1, 3, 2, 1, 1]
[1, 4, 3, 5, 2, 5, 3, 1]
[1, 1, 3, 2, 3, 1, 2, 1]
[1, 3, 2, 5, 3, 4, 1, 1]
[1, 2, 5, 3, 7, 4, 5, 1]
[1, 1, 1, 2, 1, 2, 1, 1]
""
[1, 1, 1, 2, 1, 2, 3, 1]
[1, 4, 3, 2, 3, 1, 1, 1]
[1, 3, 11, 8, 5, 7, 2, 1]
[1, 1, 2, 7, 5, 3, 4, 1]
[1, 2, 1, 1, 3, 2, 1, 1]
[1, 4, 7, 3, 2, 5, 3, 1]
[1, 1, 3, 5, 2, 1, 2, 1]
[1, 3, 2, 5, 8, 3, 1, 1]
[1, 2, 5, 3, 7, 11, 4, 1]
[1, 1, 1, 2, 1, 2, 3, 1]
""
[1, 1, 1, 2, 3, 1, 1, 1]
[1, 5, 4, 3, 5, 7, 2, 1]
[1, 1, 4, 3, 2, 3, 4, 1]
[1, 2, 1, 3, 2, 1, 1, 1]
[1, 4, 7, 3, 8, 5, 2, 1]
[1, 1, 3, 5, 2, 5, 3, 1]
[1, 2, 1, 2, 3, 1, 2, 1]
[1, 3, 5, 2, 3, 4, 1, 1]
[1, 2, 5, 8, 3, 4, 5, 1]
[1, 1, 1, 2, 3, 1, 1, 1]
""
[1, 1, 1, 2, 3, 1, 2, 1]
[1, 4, 3, 2, 3, 4, 1, 1]
[1, 2, 7, 5, 3, 4, 5, 1]
[1, 1, 1, 3, 2, 1, 1, 1]
[1, 5, 4, 3, 8, 5, 2, 1]
[1, 1, 4, 3, 2, 5, 3, 1]
[1, 2, 1, 3, 2, 1, 2, 1]
[1, 3, 5, 2, 5, 3, 1, 1]
[1, 2, 5, 8, 3, 7, 4, 1]
[1, 1, 1, 2, 3, 1, 2, 1]
""
[1, 1, 1, 2, 3, 4, 1, 1]
[1, 4, 3, 2, 3, 4, 5, 1]
[1, 1, 3, 2, 1, 1, 1, 1]
[1, 5, 4, 11, 7, 3, 2, 1]
[1, 1, 4, 3, 8, 5, 2, 1]
[1, 2, 1, 3, 2, 5, 3, 1]
[1, 2, 3, 1, 2, 1, 2, 1]
[1, 3, 5, 7, 2, 3, 1, 1]
[1, 2, 5, 8, 11, 3, 4, 1]
[1, 1, 1, 2, 3, 4, 1, 1]
""
[1, 1, 1, 2, 3, 4, 5, 1]
[1, 3, 2, 1, 1, 1, 1, 1]
[1, 5, 14, 9, 4, 3, 2, 1]
[1, 1, 4, 11, 7, 3, 2, 1]
[1, 2, 1, 3, 8, 5, 2, 1]
[1, 2, 3, 1, 2, 5, 3, 1]
[1, 2, 3, 4, 1, 1, 2, 1]
[1, 3, 5, 7, 9, 2, 1, 1]
[1, 2, 5, 8, 11, 14, 3, 1]
[1, 1, 1, 2, 3, 4, 5, 1]
""
[1, 1, 1, 2, 5, 3, 1, 1]
[1, 4, 3, 2, 3, 7, 4, 1]
[1, 1, 3, 2, 1, 1, 2, 1]
[1, 4, 3, 8, 5, 2, 1, 1]
[1, 2, 7, 5, 13, 8, 3, 1]
[1, 1, 1, 3, 2, 5, 3, 1]
[1, 3, 2, 1, 2, 1, 2, 1]
[1, 3, 8, 5, 2, 3, 1, 1]
[1, 2, 5, 13, 8, 3, 4, 1]
[1, 1, 1, 2, 5, 3, 1, 1]
""
[1, 1, 1, 2, 5, 3, 4, 1]
[1, 3, 2, 1, 1, 2, 1, 1]
[1, 4, 11, 7, 3, 2, 3, 1]
[1, 1, 3, 8, 5, 2, 1, 1]
[1, 3, 2, 5, 13, 8, 3, 1]
[1, 1, 2, 1, 2, 5, 3, 1]
[1, 3, 2, 3, 1, 1, 2, 1]
[1, 3, 8, 5, 7, 2, 1, 1]
[1, 2, 5, 13, 8, 11, 3, 1]
[1, 1, 1, 2, 5, 3, 4, 1]
""
[1, 1, 1, 3, 2, 1, 2, 1]
[1, 4, 3, 2, 5, 3, 1, 1]
[1, 2, 7, 5, 3, 7, 4, 1]
[1, 1, 1, 3, 2, 1, 2, 1]
""
[1, 1, 1, 3, 2, 3, 1, 1]
[1, 4, 3, 2, 5, 3, 4, 1]
[1, 1, 3, 2, 1, 2, 1, 1]
[1, 4, 3, 8, 5, 2, 3, 1]
[1, 1, 3, 2, 5, 3, 1, 1]
[1, 3, 2, 5, 3, 7, 4, 1]
[1, 1, 2, 1, 2, 1, 2, 1]
[1, 4, 3, 5, 2, 3, 1, 1]
[1, 2, 7, 5, 8, 3, 4, 1]
[1, 1, 1, 3, 2, 3, 1, 1]
""
[1, 1, 1, 3, 2, 3, 4, 1]
[1, 3, 2, 1, 2, 1, 1, 1]
[1, 4, 11, 7, 3, 5, 2, 1]
[1, 1, 3, 8, 5, 2, 3, 1]
[1, 2, 1, 2, 5, 3, 1, 1]
[1, 3, 5, 2, 3, 7, 4, 1]
[1, 1, 2, 3, 1, 1, 2, 1]
[1, 4, 3, 5, 7, 2, 1, 1]
[1, 2, 7, 5, 8, 11, 3, 1]
[1, 1, 1, 3, 2, 3, 4, 1]
""
[1, 1, 1, 3, 5, 2, 1, 1]
[1, 4, 3, 2, 5, 8, 3, 1]
[1, 1, 3, 2, 1, 2, 3, 1]
[1, 3, 2, 5, 3, 1, 1, 1]
[1, 3, 8, 5, 12, 7, 2, 1]
[1, 1, 2, 5, 3, 7, 4, 1]
[1, 2, 1, 1, 2, 1, 2, 1]
[1, 4, 7, 3, 2, 3, 1, 1]
[1, 2, 7, 12, 5, 3, 4, 1]
[1, 1, 1, 3, 5, 2, 1, 1]
""
[1, 1, 1, 3, 5, 2, 3, 1]
[1, 3, 2, 1, 2, 3, 1, 1]
[1, 3, 8, 5, 2, 3, 4, 1]
[1, 1, 2, 5, 3, 1, 1, 1]
[1, 4, 3, 5, 12, 7, 2, 1]
[1, 1, 3, 2, 3, 7, 4, 1]
[1, 2, 1, 2, 1, 1, 2, 1]
[1, 4, 7, 3, 5, 2, 1, 1]
[1, 2, 7, 12, 5, 8, 3, 1]
[1, 1, 1, 3, 5, 2, 3, 1]
""
[1, 1, 1, 4, 3, 5, 2, 1]
[1, 3, 2, 1, 3, 2, 3, 1]
[1, 2, 5, 3, 1, 2, 1, 1]
[1, 3, 5, 12, 7, 2, 3, 1]
[1, 1, 2, 3, 7, 4, 1, 1]
[1, 3, 2, 3, 4, 9, 5, 1]
[1, 1, 2, 1, 1, 1, 2, 1]
[1, 5, 4, 7, 3, 2, 1, 1]
[1, 2, 9, 7, 12, 5, 3, 1]
[1, 1, 1, 4, 3, 5, 2, 1]
""
[1, 1, 2, 1, 1, 1, 1, 1]
[1, 6, 5, 9, 4, 3, 2, 1]
[1, 1, 5, 4, 7, 3, 2, 1]
[1, 2, 1, 4, 3, 5, 2, 1]
[1, 2, 3, 1, 3, 2, 3, 1]
[1, 2, 3, 4, 1, 2, 1, 1]
[1, 3, 5, 7, 9, 2, 3, 1]
[1, 1, 2, 3, 4, 5, 1, 1]
[1, 3, 2, 3, 4, 5, 6, 1]
[1, 1, 2, 1, 1, 1, 1, 1]
""
[1, 1, 2, 1, 1, 2, 1, 1]
[1, 5, 4, 7, 3, 2, 3, 1]
[1, 1, 4, 3, 5, 2, 1, 1]
[1, 3, 2, 7, 5, 8, 3, 1]
[1, 1, 2, 1, 3, 2, 3, 1]
[1, 3, 2, 3, 1, 2, 1, 1]
[1, 3, 8, 5, 7, 2, 3, 1]
[1, 1, 2, 5, 3, 4, 1, 1]
[1, 3, 2, 3, 7, 4, 5, 1]
[1, 1, 2, 1, 1, 2, 1, 1]
""
[1, 1, 2, 1, 1, 2, 3, 1]
[1, 4, 3, 5, 2, 1, 1, 1]
[1, 3, 11, 8, 13, 5, 2, 1]
[1, 1, 2, 7, 5, 8, 3, 1]
[1, 2, 1, 1, 3, 2, 3, 1]
[1, 3, 5, 2, 1, 2, 1, 1]
[1, 3, 8, 13, 5, 2, 3, 1]
[1, 1, 2, 5, 8, 3, 1, 1]
[1, 3, 2, 3, 7, 11, 4, 1]
[1, 1, 2, 1, 1, 2, 3, 1]
""
[1, 1, 2, 1, 2, 1, 1, 1]
[1, 5, 4, 7, 3, 5, 2, 1]
[1, 1, 4, 3, 5, 2, 3, 1]
[1, 2, 1, 3, 2, 3, 1, 1]
[1, 3, 5, 2, 5, 3, 4, 1]
[1, 1, 2, 3, 1, 2, 1, 1]
[1, 4, 3, 5, 7, 2, 3, 1]
[1, 1, 3, 2, 3, 4, 1, 1]
[1, 3, 2, 5, 3, 4, 5, 1]
[1, 1, 2, 1, 2, 1, 1, 1]
""
[1, 1, 2, 1, 2, 3, 1, 1]
[1, 4, 3, 5, 2, 3, 4, 1]
[1, 1, 3, 2, 3, 1, 1, 1]
[1, 4, 3, 8, 5, 7, 2, 1]
[1, 1, 3, 2, 5, 3, 4, 1]
[1, 2, 1, 2, 1, 2, 1, 1]
[1, 4, 7, 3, 5, 2, 3, 1]
[1, 1, 3, 5, 2, 3, 1, 1]
[1, 3, 2, 5, 8, 3, 4, 1]
[1, 1, 2, 1, 2, 3, 1, 1]
""
[1, 1, 2, 1, 2, 3, 4, 1]
[1, 3, 2, 3, 1, 1, 1, 1]
[1, 4, 11, 7, 10, 3, 2, 1]
[1, 1, 3, 8, 5, 7, 2, 1]
[1, 2, 1, 2, 5, 3, 4, 1]
[1, 2, 3, 1, 1, 2, 1, 1]
[1, 4, 7, 10, 3, 2, 3, 1]
[1, 1, 3, 5, 7, 2, 1, 1]
[1, 3, 2, 5, 8, 11, 3, 1]
[1, 1, 2, 1, 2, 3, 4, 1]
""
[1, 1, 2, 1, 3, 5, 2, 1]
[1, 3, 2, 3, 1, 2, 3, 1]
[1, 2, 5, 3, 4, 1, 1, 1]
[1, 3, 5, 12, 7, 9, 2, 1]
[1, 1, 2, 3, 7, 4, 5, 1]
[1, 2, 1, 1, 1, 2, 1, 1]
[1, 5, 9, 4, 3, 2, 3, 1]
[1, 1, 4, 7, 3, 2, 1, 1]
[1, 3, 2, 7, 12, 5, 3, 1]
[1, 1, 2, 1, 3, 5, 2, 1]
""
[1, 1, 2, 3, 1, 1, 1, 1]
[1, 5, 4, 7, 10, 3, 2, 1]
[1, 1, 4, 3, 5, 7, 2, 1]
[1, 2, 1, 3, 2, 3, 4, 1]
[1, 2, 3, 1, 2, 1, 1, 1]
[1, 4, 7, 10, 3, 5, 2, 1]
[1, 1, 3, 5, 7, 2, 3, 1]
[1, 2, 1, 2, 3, 4, 1, 1]
[1, 3, 5, 2, 3, 4, 5, 1]
[1, 1, 2, 3, 1, 1, 1, 1]
""
[1, 1, 2, 3, 1, 2, 3, 1]
[1, 3, 2, 3, 4, 1, 1, 1]
[1, 3, 8, 5, 7, 9, 2, 1]
[1, 1, 2, 5, 3, 4, 5, 1]
[1, 2, 1, 1, 2, 1, 1, 1]
[1, 5, 9, 4, 3, 5, 2, 1]
[1, 1, 4, 7, 3, 2, 3, 1]
[1, 2, 1, 3, 5, 2, 1, 1]
[1, 3, 5, 2, 5, 8, 3, 1]
[1, 1, 2, 3, 1, 2, 3, 1]
""
[1, 1, 2, 3, 4, 1, 1, 1]
[1, 4, 3, 5, 7, 9, 2, 1]
[1, 1, 3, 2, 3, 4, 5, 1]
[1, 2, 1, 2, 1, 1, 1, 1]
[1, 5, 9, 4, 7, 3, 2, 1]
[1, 1, 4, 7, 3, 5, 2, 1]
[1, 2, 1, 3, 5, 2, 3, 1]
[1, 2, 3, 1, 2, 3, 1, 1]
[1, 3, 5, 7, 2, 3, 4, 1]
[1, 1, 2, 3, 4, 1, 1, 1]
""
[1, 1, 3, 5, 2, 1, 1, 1]
[1, 4, 3, 8, 13, 5, 2, 1]
[1, 1, 3, 2, 5, 8, 3, 1]
[1, 2, 1, 2, 1, 2, 3, 1]
[1, 3, 5, 2, 3, 1, 1, 1]
[1, 3, 8, 13, 5, 7, 2, 1]
[1, 1, 2, 5, 8, 3, 4, 1]
[1, 2, 1, 1, 2, 3, 1, 1]
[1, 4, 7, 3, 2, 3, 4, 1]
[1, 1, 3, 5, 2, 1, 1, 1]
""
[1, 1, 3, 5, 2, 3, 4, 1]
[1, 2, 1, 2, 3, 1, 1, 1]
[1, 4, 7, 3, 5, 7, 2, 1]
[1, 1, 3, 5, 2, 3, 4, 1]
""
[1, 2, 1, 1, 1, 1, 1, 1]
[1, 6, 11, 5, 4, 3, 2, 1]
[1, 1, 5, 9, 4, 3, 2, 1]
[1, 2, 1, 4, 7, 3, 2, 1]
[1, 2, 3, 1, 3, 5, 2, 1]
[1, 2, 3, 4, 1, 2, 3, 1]
[1, 2, 3, 4, 5, 1, 1, 1]
[1, 3, 5, 7, 9, 11, 2, 1]
[1, 1, 2, 3, 4, 5, 6, 1]
[1, 2, 1, 1, 1, 1, 1, 1]
""
[1, 2, 1, 1, 1, 1, 2, 1]
[1, 5, 9, 4, 3, 2, 1, 1]
[1, 2, 9, 16, 7, 5, 3, 1]
[1, 1, 1, 4, 7, 3, 2, 1]
[1, 3, 2, 1, 3, 5, 2, 1]
[1, 2, 5, 3, 1, 2, 3, 1]
[1, 2, 3, 7, 4, 1, 1, 1]
[1, 3, 5, 7, 16, 9, 2, 1]
[1, 1, 2, 3, 4, 9, 5, 1]
[1, 2, 1, 1, 1, 1, 2, 1]
""
[1, 2, 1, 1, 1, 2, 3, 1]
[1, 4, 7, 3, 2, 1, 1, 1]
[1, 3, 11, 19, 8, 5, 2, 1]
[1, 1, 2, 7, 12, 5, 3, 1]
[1, 2, 1, 1, 3, 5, 2, 1]
[1, 3, 5, 2, 1, 2, 3, 1]
[1, 2, 5, 8, 3, 1, 1, 1]
[1, 3, 5, 12, 19, 7, 2, 1]
[1, 1, 2, 3, 7, 11, 4, 1]
[1, 2, 1, 1, 1, 2, 3, 1]
""
[1, 2, 1, 1, 2, 3, 4, 1]
[1, 3, 5, 2, 1, 1, 1, 1]
[1, 4, 11, 18, 7, 3, 2, 1]
[1, 1, 3, 8, 13, 5, 2, 1]
[1, 2, 1, 2, 5, 8, 3, 1]
[1, 2, 3, 1, 1, 2, 3, 1]
[1, 3, 5, 7, 2, 1, 1, 1]
[1, 3, 8, 13, 18, 5, 2, 1]
[1, 1, 2, 5, 8, 11, 3, 1]
[1, 2, 1, 1, 2, 3, 4, 1]
""
[1, 2, 1, 1, 2, 5, 3, 1]
[1, 3, 5, 2, 1, 1, 2, 1]
[1, 3, 8, 13, 5, 2, 1, 1]
[1, 2, 5, 13, 21, 8, 3, 1]
[1, 1, 1, 2, 5, 8, 3, 1]
[1, 3, 2, 1, 1, 2, 3, 1]
[1, 3, 8, 5, 2, 1, 1, 1]
[1, 3, 8, 21, 13, 5, 2, 1]
[1, 1, 2, 5, 13, 8, 3, 1]
[1, 2, 1, 1, 2, 5, 3, 1]
""
[1, 2, 1, 2, 3, 4, 5, 1]
[1, 2, 3, 1, 1, 1, 1, 1]
[1, 5, 9, 13, 4, 3, 2, 1]
[1, 1, 4, 7, 10, 3, 2, 1]
[1, 2, 1, 3, 5, 7, 2, 1]
[1, 2, 3, 1, 2, 3, 4, 1]
[1, 2, 3, 4, 1, 1, 1, 1]
[1, 4, 7, 10, 13, 3, 2, 1]
[1, 1, 3, 5, 7, 9, 2, 1]
[1, 2, 1, 2, 3, 4, 5, 1]
""
[1, 2, 3, 1, 1, 1, 2, 1]
[1, 4, 7, 10, 3, 2, 1, 1]
[1, 2, 7, 12, 17, 5, 3, 1]
[1, 1, 1, 3, 5, 7, 2, 1]
[1, 3, 2, 1, 2, 3, 4, 1]
[1, 2, 5, 3, 1, 1, 1, 1]
[1, 4, 7, 17, 10, 3, 2, 1]
[1, 1, 3, 5, 12, 7, 2, 1]
[1, 2, 1, 2, 3, 7, 4, 1]
[1, 2, 3, 1, 1, 1, 2, 1]
""
[1, 2, 5, 3, 1, 1, 2, 1]
[1, 3, 5, 12, 7, 2, 1, 1]
[1, 2, 5, 8, 19, 11, 3, 1]
[1, 1, 1, 2, 3, 7, 4, 1]
[1, 3, 2, 1, 1, 1, 2, 1]
[1, 4, 11, 7, 3, 2, 1, 1]
[1, 2, 7, 19, 12, 5, 3, 1]
[1, 1, 1, 3, 8, 5, 2, 1]
[1, 3, 2, 1, 2, 5, 3, 1]
[1, 2, 5, 3, 1, 1, 2, 1]
""
[429, [0, 0, 0, 2, 0, 0, 0, 0, 0, 47]]

2016年7月23日土曜日

160723(4)

Ruby


An 型フリーズパターンと多角形の三角形分割(3)

8 角形でやってみた。

def A1(ary)
  m = ary.size
  a_ary = [ary]
  p a_ary[0]
  i = 0
  while i == 0 || a_ary[i] != ary
    a_ary << Array.new(m, 1)
    (m - 2).downto(1){|j| a_ary[i + 1][j] = (a_ary[i][j - 1] * a_ary[i + 1][j + 1] + 1) / a_ary[i][j]}
    p a_ary[i + 1]
    i += 1
  end
  a_ary.uniq!
end

p 8
a = []
[[1, 1, 1, 1, 1, 1, 1],
 [1, 2, 1, 1, 1, 2, 1],
 [1, 1, 1, 2, 1, 1, 1],
 [1, 2, 1, 2, 1, 2, 1],
 [1, 5, 4, 3, 2, 1, 1],
 [1, 1, 2, 3, 4, 5, 1],
 [1, 1, 2, 3, 1, 1, 1],
 [1, 1, 1, 3, 2, 1, 1],
 [1, 1, 1, 1, 2, 1, 1],
 [1, 1, 2, 1, 1, 1, 1],
 [1, 1, 2, 1, 1, 2, 1],
 [1, 2, 1, 1, 2, 1, 1],
 [1, 1, 1, 1, 2, 3, 1],
 [1, 3, 2, 1, 1, 1, 1],
 [1, 2, 1, 1, 2, 3, 1],
 [1, 3, 2, 1, 1, 2, 1],
 [1, 2, 3, 1, 1, 1, 1],
 [1, 1, 1, 1, 3, 2, 1],
 [1, 1, 2, 1, 2, 1, 1]].each{|i|
  a += A1(i)
  p ""
}
p "#{a.uniq.size} = 8 * 14 + 4 * 5"

出力結果
8
[1, 1, 1, 1, 1, 1, 1]
[1, 6, 5, 4, 3, 2, 1]
[1, 1, 5, 4, 3, 2, 1]
[1, 2, 1, 4, 3, 2, 1]
[1, 2, 3, 1, 3, 2, 1]
[1, 2, 3, 4, 1, 2, 1]
[1, 2, 3, 4, 5, 1, 1]
[1, 2, 3, 4, 5, 6, 1]
[1, 1, 1, 1, 1, 1, 1]
""
[1, 2, 1, 1, 1, 2, 1]
[1, 4, 7, 3, 2, 1, 1]
[1, 2, 7, 12, 5, 3, 1]
[1, 1, 1, 3, 5, 2, 1]
[1, 3, 2, 1, 2, 3, 1]
[1, 2, 5, 3, 1, 1, 1]
[1, 3, 5, 12, 7, 2, 1]
[1, 1, 2, 3, 7, 4, 1]
[1, 2, 1, 1, 1, 2, 1]
""
[1, 1, 1, 2, 1, 1, 1]
[1, 5, 4, 3, 5, 2, 1]
[1, 1, 4, 3, 2, 3, 1]
[1, 2, 1, 3, 2, 1, 1]
[1, 3, 5, 2, 5, 3, 1]
[1, 1, 2, 3, 1, 2, 1]
[1, 3, 2, 3, 4, 1, 1]
[1, 2, 5, 3, 4, 5, 1]
[1, 1, 1, 2, 1, 1, 1]
""
[1, 2, 1, 2, 1, 2, 1]
[1, 3, 5, 2, 3, 1, 1]
[1, 2, 5, 8, 3, 4, 1]
[1, 1, 1, 2, 3, 1, 1]
[1, 4, 3, 2, 3, 4, 1]
[1, 1, 3, 2, 1, 1, 1]
[1, 4, 3, 8, 5, 2, 1]
[1, 1, 3, 2, 5, 3, 1]
[1, 2, 1, 2, 1, 2, 1]
""
[1, 5, 4, 3, 2, 1, 1]
[1, 2, 9, 7, 5, 3, 1]
[1, 1, 1, 4, 3, 2, 1]
[1, 3, 2, 1, 3, 2, 1]
[1, 2, 5, 3, 1, 2, 1]
[1, 2, 3, 7, 4, 1, 1]
[1, 2, 3, 4, 9, 5, 1]
[1, 1, 1, 1, 1, 2, 1]
[1, 5, 4, 3, 2, 1, 1]
""
[1, 1, 2, 3, 4, 5, 1]
[1, 2, 1, 1, 1, 1, 1]
[1, 5, 9, 4, 3, 2, 1]
[1, 1, 4, 7, 3, 2, 1]
[1, 2, 1, 3, 5, 2, 1]
[1, 2, 3, 1, 2, 3, 1]
[1, 2, 3, 4, 1, 1, 1]
[1, 3, 5, 7, 9, 2, 1]
[1, 1, 2, 3, 4, 5, 1]
""
[1, 1, 2, 3, 1, 1, 1]
[1, 4, 3, 5, 7, 2, 1]
[1, 1, 3, 2, 3, 4, 1]
[1, 2, 1, 2, 1, 1, 1]
[1, 4, 7, 3, 5, 2, 1]
[1, 1, 3, 5, 2, 3, 1]
[1, 2, 1, 2, 3, 1, 1]
[1, 3, 5, 2, 3, 4, 1]
[1, 1, 2, 3, 1, 1, 1]
""
[1, 1, 1, 3, 2, 1, 1]
[1, 4, 3, 2, 5, 3, 1]
[1, 1, 3, 2, 1, 2, 1]
[1, 3, 2, 5, 3, 1, 1]
[1, 2, 5, 3, 7, 4, 1]
[1, 1, 1, 2, 1, 2, 1]
[1, 4, 3, 2, 3, 1, 1]
[1, 2, 7, 5, 3, 4, 1]
[1, 1, 1, 3, 2, 1, 1]
""
[1, 1, 1, 1, 2, 1, 1]
[1, 5, 4, 3, 2, 3, 1]
[1, 1, 4, 3, 2, 1, 1]
[1, 3, 2, 7, 5, 3, 1]
[1, 1, 2, 1, 3, 2, 1]
[1, 3, 2, 3, 1, 2, 1]
[1, 2, 5, 3, 4, 1, 1]
[1, 2, 3, 7, 4, 5, 1]
[1, 1, 1, 1, 2, 1, 1]
""
[1, 1, 2, 1, 1, 1, 1]
[1, 5, 4, 7, 3, 2, 1]
[1, 1, 4, 3, 5, 2, 1]
[1, 2, 1, 3, 2, 3, 1]
[1, 2, 3, 1, 2, 1, 1]
[1, 3, 5, 7, 2, 3, 1]
[1, 1, 2, 3, 4, 1, 1]
[1, 3, 2, 3, 4, 5, 1]
[1, 1, 2, 1, 1, 1, 1]
""
[1, 1, 2, 1, 1, 2, 1]
[1, 4, 3, 5, 2, 1, 1]
[1, 2, 7, 5, 8, 3, 1]
[1, 1, 1, 3, 2, 3, 1]
[1, 3, 2, 1, 2, 1, 1]
[1, 3, 8, 5, 2, 3, 1]
[1, 1, 2, 5, 3, 1, 1]
[1, 3, 2, 3, 7, 4, 1]
[1, 1, 2, 1, 1, 2, 1]
""
[1, 2, 1, 1, 2, 1, 1]
[1, 4, 7, 3, 2, 3, 1]
[1, 1, 3, 5, 2, 1, 1]
[1, 3, 2, 5, 8, 3, 1]
[1, 1, 2, 1, 2, 3, 1]
[1, 3, 2, 3, 1, 1, 1]
[1, 3, 8, 5, 7, 2, 1]
[1, 1, 2, 5, 3, 4, 1]
[1, 2, 1, 1, 2, 1, 1]
""
[1, 1, 1, 1, 2, 3, 1]
[1, 4, 3, 2, 1, 1, 1]
[1, 3, 11, 8, 5, 2, 1]
[1, 1, 2, 7, 5, 3, 1]
[1, 2, 1, 1, 3, 2, 1]
[1, 3, 5, 2, 1, 2, 1]
[1, 2, 5, 8, 3, 1, 1]
[1, 2, 3, 7, 11, 4, 1]
[1, 1, 1, 1, 2, 3, 1]
""
[1, 3, 2, 1, 1, 1, 1]
[1, 4, 11, 7, 3, 2, 1]
[1, 1, 3, 8, 5, 2, 1]
[1, 2, 1, 2, 5, 3, 1]
[1, 2, 3, 1, 1, 2, 1]
[1, 3, 5, 7, 2, 1, 1]
[1, 2, 5, 8, 11, 3, 1]
[1, 1, 1, 2, 3, 4, 1]
[1, 3, 2, 1, 1, 1, 1]
""
[1, 2, 1, 1, 2, 3, 1]
[1, 3, 5, 2, 1, 1, 1]
[1, 3, 8, 13, 5, 2, 1]
[1, 1, 2, 5, 8, 3, 1]
[1, 2, 1, 1, 2, 3, 1]
""
[1, 3, 2, 1, 1, 2, 1]
[1, 3, 8, 5, 2, 1, 1]
[1, 2, 5, 13, 8, 3, 1]
[1, 1, 1, 2, 5, 3, 1]
[1, 3, 2, 1, 1, 2, 1]
""
[1, 2, 3, 1, 1, 1, 1]
[1, 4, 7, 10, 3, 2, 1]
[1, 1, 3, 5, 7, 2, 1]
[1, 2, 1, 2, 3, 4, 1]
[1, 2, 3, 1, 1, 1, 1]
""
[1, 1, 1, 1, 3, 2, 1]
[1, 4, 3, 2, 1, 2, 1]
[1, 2, 7, 5, 3, 1, 1]
[1, 2, 3, 10, 7, 4, 1]
[1, 1, 1, 1, 3, 2, 1]
""
[1, 1, 2, 1, 2, 1, 1]
[1, 4, 3, 5, 2, 3, 1]
[1, 1, 3, 2, 3, 1, 1]
[1, 3, 2, 5, 3, 4, 1]
[1, 1, 2, 1, 2, 1, 1]
""
"132 = 8 * 14 + 4 * 5"

160723(3)

Ruby


An 型フリーズパターンと多角形の三角形分割(2)

An 型のフリーズパターンには、何通りの異なる斜めの列があるかは
次のようにして求められる。

正多角形の三角形分割において、回転移動で重ならないものを考え、
その三角形分割からAn 型のフリーズパターンを構成すればよい。

def A1(ary)
  m = ary.size
  a_ary = [ary]
  p a_ary[0]
  i = 0
  while i == 0 || a_ary[i] != ary
    a_ary << Array.new(m, 1)
    (m - 2).downto(1){|j| a_ary[i + 1][j] = (a_ary[i][j - 1] * a_ary[i + 1][j + 1] + 1) / a_ary[i][j]}
    p a_ary[i + 1]
    i += 1
  end
  a_ary.uniq!
end

p 3
a = []
[[1, 1]].each{|i|
  a += A1(i)
  p ""
}
p "#{a.uniq.size} = 1"
p ""
p 4
a = []
[[1, 1, 1]].each{|i|
  a += A1(i)
  p ""
}
p "#{a.uniq.size} = 2"
p ""
p 5
a = []
[[1, 1, 1, 1]].each{|i|
  a += A1(i)
  p ""
}
p "#{a.uniq.size} = 5"
p ""
p 6
a = []
[[1, 1, 1, 1, 1],
 [1, 3, 2, 1, 1],
 [1, 1, 2, 3, 1],
 [1, 1, 2, 1, 1]].each{|i|
  a += A1(i)
  p ""
}
p "#{a.uniq.size} = 6 + 3 + 3 + 2"
p ""
p 7
a = []
[[1, 1, 1, 1, 1, 1],
 [1, 4, 3, 2, 1, 1],
 [1, 1, 2, 3, 4, 1],
 [1, 1, 2, 1, 1, 1],
 [1, 1, 1, 2, 1, 1],
 [1, 2, 1, 1, 2, 1]].each{|i|
  a += A1(i)
  p ""
}
p "#{a.uniq.size} = 7 + 7 + 7 + 7 + 7 + 7"

出力結果
3
[1, 1]
[1, 1]
""
"1 = 1"
""
4
[1, 1, 1]
[1, 2, 1]
[1, 1, 1]
""
"2 = 2"
""
5
[1, 1, 1, 1]
[1, 3, 2, 1]
[1, 1, 2, 1]
[1, 2, 1, 1]
[1, 2, 3, 1]
[1, 1, 1, 1]
""
"5 = 5"
""
6
[1, 1, 1, 1, 1]
[1, 4, 3, 2, 1]
[1, 1, 3, 2, 1]
[1, 2, 1, 2, 1]
[1, 2, 3, 1, 1]
[1, 2, 3, 4, 1]
[1, 1, 1, 1, 1]
""
[1, 3, 2, 1, 1]
[1, 2, 5, 3, 1]
[1, 1, 1, 2, 1]
[1, 3, 2, 1, 1]
""
[1, 1, 2, 3, 1]
[1, 2, 1, 1, 1]
[1, 3, 5, 2, 1]
[1, 1, 2, 3, 1]
""
[1, 1, 2, 1, 1]
[1, 3, 2, 3, 1]
[1, 1, 2, 1, 1]
""
"14 = 6 + 3 + 3 + 2"
""
7
[1, 1, 1, 1, 1, 1]
[1, 5, 4, 3, 2, 1]
[1, 1, 4, 3, 2, 1]
[1, 2, 1, 3, 2, 1]
[1, 2, 3, 1, 2, 1]
[1, 2, 3, 4, 1, 1]
[1, 2, 3, 4, 5, 1]
[1, 1, 1, 1, 1, 1]
""
[1, 4, 3, 2, 1, 1]
[1, 2, 7, 5, 3, 1]
[1, 1, 1, 3, 2, 1]
[1, 3, 2, 1, 2, 1]
[1, 2, 5, 3, 1, 1]
[1, 2, 3, 7, 4, 1]
[1, 1, 1, 1, 2, 1]
[1, 4, 3, 2, 1, 1]
""
[1, 1, 2, 3, 4, 1]
[1, 2, 1, 1, 1, 1]
[1, 4, 7, 3, 2, 1]
[1, 1, 3, 5, 2, 1]
[1, 2, 1, 2, 3, 1]
[1, 2, 3, 1, 1, 1]
[1, 3, 5, 7, 2, 1]
[1, 1, 2, 3, 4, 1]
""
[1, 1, 2, 1, 1, 1]
[1, 4, 3, 5, 2, 1]
[1, 1, 3, 2, 3, 1]
[1, 2, 1, 2, 1, 1]
[1, 3, 5, 2, 3, 1]
[1, 1, 2, 3, 1, 1]
[1, 3, 2, 3, 4, 1]
[1, 1, 2, 1, 1, 1]
""
[1, 1, 1, 2, 1, 1]
[1, 4, 3, 2, 3, 1]
[1, 1, 3, 2, 1, 1]
[1, 3, 2, 5, 3, 1]
[1, 1, 2, 1, 2, 1]
[1, 3, 2, 3, 1, 1]
[1, 2, 5, 3, 4, 1]
[1, 1, 1, 2, 1, 1]
""
[1, 2, 1, 1, 2, 1]
[1, 3, 5, 2, 1, 1]
[1, 2, 5, 8, 3, 1]
[1, 1, 1, 2, 3, 1]
[1, 3, 2, 1, 1, 1]
[1, 3, 8, 5, 2, 1]
[1, 1, 2, 5, 3, 1]
[1, 2, 1, 1, 2, 1]
""
"42 = 7 + 7 + 7 + 7 + 7 + 7"

160723(2)

Ruby


Dn+1 型からCn 型への折り畳み

一番下の2 段が互いに等しいようなDn+1 型のフリーズパターンを考えることによって、
Cn 型のフリーズパターンを構成できることを確かめてみた。

def D(ary)
  m = ary.size
  a_ary = [ary]
  p a_ary[0]
  i = 0
  while i == 0 || a_ary[i] != ary
    a_ary << Array.new(m, 1)
    (m - 2).downto(3){|j| a_ary[i + 1][j] = (a_ary[i][j - 1] * a_ary[i + 1][j + 1] + 1) / a_ary[i][j]}
    a_ary[i + 1][2] = (a_ary[i][0] * a_ary[i][1] * a_ary[i + 1][3] + 1) / a_ary[i][2]
    a_ary[i + 1][1] = (                            a_ary[i + 1][2] + 1) / a_ary[i][1]
    a_ary[i + 1][0] = (                            a_ary[i + 1][2] + 1) / a_ary[i][0]
    p a_ary[i + 1]
    i += 1
  end
end

def C(ary)
  m = ary.size
  a_ary = [ary]
  p a_ary[0]
  i = 0
  while i == 0 || a_ary[i] != ary
    a_ary << Array.new(m, 1)
    (m - 2).downto(2){|j| a_ary[i + 1][j] = (a_ary[i][j - 1] * a_ary[i + 1][j + 1] + 1) / a_ary[i][j]}
    a_ary[i + 1][1] = (a_ary[i][0] * a_ary[i][0] * a_ary[i + 1][2] + 1) / a_ary[i][1]
    a_ary[i + 1][0] = (                            a_ary[i + 1][1] + 1) / a_ary[i][0]
    p a_ary[i + 1]
    i += 1
  end
end

D([7, 7, 27, 5, 3, 1])
p ''
C([7, 27, 5, 3, 1])
p ''
D([4, 4, 3, 2, 1])
p ''
C([4, 3, 2, 1])

出力結果
[7, 7, 27, 5, 3, 1]
[3, 3, 20, 11, 2, 1]
[2, 2, 5, 11, 6, 1]
[1, 1, 1, 1, 2, 1]
[4, 4, 3, 2, 1, 1]
[7, 7, 27, 5, 3, 1]
""
[7, 27, 5, 3, 1]
[3, 20, 11, 2, 1]
[2, 5, 11, 6, 1]
[1, 1, 1, 2, 1]
[4, 3, 2, 1, 1]
[7, 27, 5, 3, 1]
""
[4, 4, 3, 2, 1]
[3, 3, 11, 2, 1]
[2, 2, 5, 6, 1]
[1, 1, 1, 1, 1]
[4, 4, 3, 2, 1]
""
[4, 3, 2, 1]
[3, 11, 2, 1]
[2, 5, 6, 1]
[1, 1, 1, 1]
[4, 3, 2, 1]

160723

Ruby


Dn 型フリーズパターン

偶奇の違いを確認してみた。

def D(ary)
  m = ary.size
  a_ary = [ary]
  p a_ary[0]
  i = 0
  while i == 0 || a_ary[i] != ary
    a_ary << Array.new(m, 1)
    (m - 2).downto(3){|j| a_ary[i + 1][j] = (a_ary[i][j - 1] * a_ary[i + 1][j + 1] + 1) / a_ary[i][j]}
    a_ary[i + 1][2] = (a_ary[i][0] * a_ary[i][1] * a_ary[i + 1][3] + 1) / a_ary[i][2]
    a_ary[i + 1][1] = (                            a_ary[i + 1][2] + 1) / a_ary[i][1]
    a_ary[i + 1][0] = (                            a_ary[i + 1][2] + 1) / a_ary[i][0]
    p a_ary[i + 1]
    i += 1
  end
end

D([10, 5, 29, 8, 3, 1])
p ''
D([5, 10, 29, 8, 3, 1])
p ''
D([3, 6, 5, 2, 1])
p ''
D([6, 3, 5, 2, 1])

出力結果
[10, 5, 29, 8, 3, 1]
[2, 4, 19, 11, 3, 1]
[2, 1, 3, 7, 4, 1]
[1, 2, 1, 1, 2, 1]
[6, 3, 5, 2, 1, 1]
[5, 10, 29, 8, 3, 1]
[4, 2, 19, 11, 3, 1]
[1, 2, 3, 7, 4, 1]
[2, 1, 1, 1, 2, 1]
[3, 6, 5, 2, 1, 1]
[10, 5, 29, 8, 3, 1]
""
[5, 10, 29, 8, 3, 1]
[4, 2, 19, 11, 3, 1]
[1, 2, 3, 7, 4, 1]
[2, 1, 1, 1, 2, 1]
[3, 6, 5, 2, 1, 1]
[10, 5, 29, 8, 3, 1]
[2, 4, 19, 11, 3, 1]
[2, 1, 3, 7, 4, 1]
[1, 2, 1, 1, 2, 1]
[6, 3, 5, 2, 1, 1]
[5, 10, 29, 8, 3, 1]
""
[3, 6, 5, 2, 1]
[4, 2, 11, 3, 1]
[1, 2, 3, 4, 1]
[2, 1, 1, 1, 1]
[3, 6, 5, 2, 1]
""
[6, 3, 5, 2, 1]
[2, 4, 11, 3, 1]
[2, 1, 3, 4, 1]
[1, 2, 1, 1, 1]
[6, 3, 5, 2, 1]

2016年7月22日金曜日

160722(4)

Ruby


A2n−1 型からBn 型への折り畳み

上下が対称なA2n−1 型の (Conway-Coxeter) フリーズパターンを作成するこ とによって、
Bn 型のフリーズパターンを構成できることを確かめてみた。

def A(ary)
  m = ary.size
  a_ary = [ary]
  p a_ary[0]
  i = 0
  while i == 0 || a_ary[i] != ary
    a_ary << Array.new(m, 1)
    (m - 2).downto(1){|j| a_ary[i + 1][j] = (a_ary[i][j - 1] * a_ary[i + 1][j + 1] + 1) / a_ary[i][j]}
    p a_ary[i + 1]
    i += 1
  end
end

def B(ary)
  m = ary.size 
  a_ary = [ary]
  p a_ary[0]
  i = 0
  while i == 0 || a_ary[i] != ary
    a_ary << Array.new(m, 1)
    (m - 2).downto(1){|j| a_ary[i + 1][j] = (a_ary[i][j - 1] * a_ary[i + 1][j + 1] + 1) / a_ary[i][j]}
    a_ary[i + 1][0] = (a_ary[i + 1][1] * a_ary[i + 1][1] + 1) / a_ary[i][0]
    p a_ary[i + 1]
    i += 1
  end
end

A([1, 2, 7, 12, 29, 17, 5, 3, 1])
p ''
B([29, 17, 5, 3, 1])

出力結果
[1, 2, 7, 12, 29, 17, 5, 3, 1]
[1, 1, 1, 3, 5, 12, 7, 2, 1]
[1, 3, 2, 1, 2, 3, 7, 4, 1]
[1, 2, 5, 3, 1, 1, 1, 2, 1]
[1, 4, 7, 17, 10, 3, 2, 1, 1]
[1, 2, 7, 12, 29, 17, 5, 3, 1]
""
[29, 17, 5, 3, 1]
[5, 12, 7, 2, 1]
[2, 3, 7, 4, 1]
[1, 1, 1, 2, 1]
[10, 3, 2, 1, 1]
[29, 17, 5, 3, 1]

160722(3)

Ruby


An 型フリーズパターンと多角形の三角形分割(1)

http://www.math.tohoku.ac.jp/~kuroki/LaTeX/20120810FriezePattern.pdf
において、n + 3 角形の三角形分割からAn 型のフリーズパターンを構成している。
このことを逆に利用すれば、
n + 3 角形の三角形分割に対し、数字の割り振りを一回行っておけば、
An 型のフリーズパターンを構成することで、他の数字の割り振りが求められる。

def A0(ary, n)
  m = ary.size
  a_ary = [ary]
  p a_ary[0]
  n.times{|i|
    a_ary << Array.new(m, 1)
    (m - 2).downto(1){|j| a_ary[i + 1][j] = (a_ary[i][j - 1] * a_ary[i + 1][j + 1] + 1) / a_ary[i][j]}
    p a_ary[i + 1]
  }
end

def f(ary, n)
  m = ary.size
  a_ary = [ary]
  p [0] + a_ary[0]
  n.times{|i|
    a_ary << Array.new(m, 1)
    (m - 2).downto(1){|j| a_ary[i + 1][j] = (a_ary[i][j - 1] * a_ary[i + 1][j + 1] + 1) / a_ary[i][j]}
    p ([0] + a_ary[i + 1]).rotate(i + 1)
  }
end

A0([1, 1, 1, 2, 1], 6)
p ''
A0([1, 1, 1, 3, 2, 1], 7)
p ''
f([1, 1, 1, 2, 1], 6)
p ''
f([1, 1, 1, 3, 2, 1], 7)

出力結果
[1, 1, 1, 2, 1]
[1, 3, 2, 1, 1]
[1, 2, 5, 3, 1]
[1, 1, 1, 2, 1]
[1, 3, 2, 1, 1]
[1, 2, 5, 3, 1]
[1, 1, 1, 2, 1]
""
[1, 1, 1, 3, 2, 1]
[1, 3, 2, 1, 2, 1]
[1, 2, 5, 3, 1, 1]
[1, 2, 3, 7, 4, 1]
[1, 1, 1, 1, 2, 1]
[1, 4, 3, 2, 1, 1]
[1, 2, 7, 5, 3, 1]
[1, 1, 1, 3, 2, 1]
""
[0, 1, 1, 1, 2, 1]
[1, 3, 2, 1, 1, 0]
[2, 5, 3, 1, 0, 1]
[1, 2, 1, 0, 1, 1]
[1, 1, 0, 1, 3, 2]
[1, 0, 1, 2, 5, 3]
[0, 1, 1, 1, 2, 1]
""
[0, 1, 1, 1, 3, 2, 1]
[1, 3, 2, 1, 2, 1, 0]
[2, 5, 3, 1, 1, 0, 1]
[3, 7, 4, 1, 0, 1, 2]
[1, 2, 1, 0, 1, 1, 1]
[1, 1, 0, 1, 4, 3, 2]
[1, 0, 1, 2, 7, 5, 3]
[0, 1, 1, 1, 3, 2, 1]

160722(2)

Ruby


Integrality and the Laurent phenomenon for Somos 4 sequences(6)

Somos-5 sequence とExample 3.10.について、
連続する5項 a(n), a(n + 1), a(n + 2), a(n + 3), a(n + 4) があるディオファントス方程式
の整数解となっていることを確認してみた。

def A(a1, a2, a3, a4, a5, k, l, n)
  a, b, c, d, e = a1, a2, a3, a4, a5
  ary = [a1]
  while ary.size < n
    break if (k * b * e + l * c * d) % a > 0
    a, b, c, d, e = b, c, d, e, (k * b * e + l * c * d) / a
    ary << a
  end
  ary
end

def x(s, t, u, v, w, k, l)
  a, b = (s * w + k * u * u) * (s * v * v + t * t * w) + l * t * u ** 3 * v, s * t * u * v * w
  return false if a % b > 0
  a / b
end

def Diophantine(s, t, u, v, w, k, l, x)
  (s * w + k * u * u) * (s * v * v + t * t * w) + l * t * u ** 3 * v == x * s * t * u * v * w
end

def f(a1, a2, a3, a4, a5, k, l, n)
  p ary = A(a1, a2, a3, a4, a5, k, l, n)
  p x = x(a1, a2, a3, a4, a5, k, l)
  p (0..n - 5).map{|i| Diophantine(ary[i], ary[i + 1], ary[i + 2], ary[i + 3], ary[i + 4], k, l, x)} if x != false
end

n = 20
# テスト用
a1, a2, a3, a4, a5, k, l = 1, 1, 1, 1, 3, 1, 1
f(a1, a2, a3, a4, a5, k, l, n)

a1, a2, a3, a4, a5, k, l = 1, 1, 1, 1, 1, 1, 1
f(a1, a2, a3, a4, a5, k, l, n)

a1, a2, a3, a4, a5, k, l = 1, 1, 33, 6655, 19487171, 14641, 1771561
f(a1, a2, a3, a4, a5, k, l, n)

出力結果
[1, 1, 1, 1, 3]
false
[1, 1, 1, 1, 1, 2, 3, 5, 11, 37, 83, 274, 1217, 6161, 22833, 165713, 1249441, 9434290, 68570323, 1013908933]
5
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 33, 6655, 19487171, 674373039626, 555574006532281583, 2345879232329836752083887, 200307601251927436078332053008509, 219971824428222900050666518284987764712025, 3887666958605833179170555602210214257367443066811413, 380839361618561003779294718633316740301897461805758739951572312, 1121919445425974717094325605394270519222600268102407201466752679107400977219, 31133086749621251824955952661007263330827341418732722759812071733078589539126247540694799, 11496978292173422270108082568815351190426830537799800037926505018418833517520513248993013534419430310347, 32406112571915301661340445672857146761849464162275200320858727006726309043090305459873711382250633429978574471987066505, 3062734217320035184862916348383372310191384125205415702242957382512718981738804270675151303107148820637789113824314227374013065057670969, 1832652730986468523394776857688575159077116510153570018306552642904733159483064604389893205747244831670434564909077292947998423169999052696571496625124374, 15556284695009425124311382176218986479848940619802549727926377555230994176942621028668718421432674506088639581354774906908757742105459493939790010015625738661581737880614357, 1506869577473427615686583333076081647784568762858277800162053676354036089315075784395652299317562441403878702026240428604584383981614084591448105387644121000664203431062675923725290509754365033]
627
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]

160722

Ruby


Integrality and the Laurent phenomenon for Somos 4 sequences(5)

整数a, b, c, d, e が
a^3 * d + e^2 = bc
を満たすとき、以下の数列を考える。

a(1) = 1, a(2) = a, a(3) = e^2, a(4) = c * e^3,
a(n + 4) * a(n) = e^3 * a(n + 3) * a(n + 1) + ad * e^3 * a(n + 2)^2

連続する4項 a(n), a(n + 1), a(n + 2), a(n + 3) があるディオファントス方程式
の整数解となっていることを確認してみた。

def A(a1, a2, a3, a4, k, l, n)
  a, b, c, d = a1, a2, a3, a4
  ary = [a1]
  while ary.size < n
    break if (k * b * d + l * c * c) % a > 0
    a, b, c, d = b, c, d, (k * b * d + l * c * c) / a
    ary << a
  end
  ary
end

def x(s, t, u, v, k, l)
  a, b = s * s * v * v + k * (s * u ** 3 + t ** 3 * v) + l * t * t * u * u, s * t * u * v
  return false if a % b > 0
  a / b
end

def Diophantine(s, t, u, v, k, l, x)
  s * s * v * v + k * (s * u ** 3 + t ** 3 * v) + l * t * t * u * u == x * s * t * u * v
end

# a1, a2, a3, a4, k, lを以下のように定める
def f(a, c, d, e)
  return false if (a ** 3 * d + e * e) % c > 0
  return 1, a, e * e, c * e ** 3, e ** 3, a * d * e ** 3
end

def g(a1, a2, a3, a4, k, l, n)
  p ary = A(a1, a2, a3, a4, k, l, n)
  x = x(a1, a2, a3, a4, k, l)
  p (0..n - 4).map{|i| Diophantine(ary[i], ary[i + 1], ary[i + 2], ary[i + 3], k, l, x)} if x != false
end

def h(a, c, d, e, n)
  f = f(a, c, d, e)
  g(*f, n) if f != false
end

n = 20
# テスト用
h(3, 133, 30, 11, n)

# f(a, c, d, e)がfalseのときは何も出力されない
(1..3).each{|a|
  (1..3).each{|c|
    (1..3).each{|d|
      (1..3).each{|e|
        h(a, c, d, e, n)
      }
    }
  }
}

出力結果
[1, 3, 121, 177023, 2460698229, 1383391404675863, 8688298479390987330929, 1455780005631999673771330516947, 4764115435770257032716350566474633731689, 223337535292722331216632575726395706629291248170767, 362740488296214246554305584172734945255544810003424782725680421, 5684399354734693943514581605677865492494211340843132464513825699922941136167, 3663178425075173516124169809409408606242603593700025583156605461905659549116130050238057441, 25250176864369887877947189457135530660164015908973302044152819670980403663047598549079989054148703322698403, 4958058020712814432486705115374786533372502495669393443814623968130512717844083284910928004315372729188382986639113180026201, 17688524650722567116776685594211248483217560907027356274244353315433206710285529509934590173847675452395966246426606926505783153051495924349343, 966153896093880153156929695756396704236036978843578716850207392035008377304823716339303902561584926011695191963421912993623952454349316232639228043806839995631829, 1736866319359273848679563666416661400990572249601952304669372511916616818806800257482633495658057209912056650881639272012572504523762082920288405407289575637034423994331294978413198903, 30800398154111222623972673388270929472329720054055277747294164271353605934320605102397826636172957633550948666223675969513619166894174107884459941000174711694283507515473234541353206828914602568204023767889, 22668868718816480695376897795197644842873892175907257844188449489310389324565259905661276413078971420475323254044594866811488882682691048703019039490288373902569924260019965595621220648709917837833509063205069058985862670936440947]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 1, 1, 2, 3, 7, 23, 59, 314, 1529, 8209, 83313, 620297, 7869898, 126742987, 1687054711, 47301104551, 1123424582771, 32606721084786]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 4, 8, 192, 6656, 180224, 78905344, 23236444160, 12516608442368, 67807156962852864, 175629443127729717248, 2339805680824409902809088, 121119885296813220774402850816, 3155644309941486351655288610750464, 1004552344054822639968667523226426933248, 450052264685681437023654271100054026189799424, 160457898335979161391188030579843920882272693125120, 922120145666159773612399879826786853163802369198749908992, 3510013188391437859050276507929957613492604112525994651673427968]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 9, 27, 2916, 728271, 84499119, 776778080445, 5304120838292007, 38986309426650166746, 18666112111965734924549727, 3494222771037136138944228291003, 2467056534033570692316760428517962387, 40347972967792950971522484157433217291666021, 212734267862962557903675868809014394782648912731632, 16634667074447412777118732663112633292559908647961813057225, 7840775361153519332149631359093812956048047127037951671835489855429, 1301360824654082785415709979757911093734461325843921401572238058876451962111, 10550192525849390852072197003957518456442089031802364483461454465318842858944100524401, 137015738831254637464169580269850081068515748485470124133351516425030995416555829634802395312482]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 1, 1, 3, 5, 23, 119, 551, 8199, 68821, 1448467, 38745265, 837004657, 61242422289, 2605518436049, 249891170973299, 34505654202377909, 3507312493608222887, 1250318065223597979975]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 4, 8, 320, 11264, 589824, 442499072, 142002356224, 337618789203968, 2573314605832994816, 10727970629163730075648, 950173561853634178703163392, 63391595443901305275358988206080, 7727691790859300963376797002061840384, 11468813785052837368629076817506365800972288, 7126789281412788331963293294096032014913081704448, 40149298413431988219191238797751056906768137797492539392, 581852478839600216755543171570472019728594452514655059782402048, 5141366822326650412774298308001260178423100239681334512028094050598912]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 9, 27, 5103, 1279395, 259874649, 4599843465897, 31852308981148353, 1067737204554735183219, 721098447044896289098382103, 148204380761084811146737900863771, 1015676771183082789739205159435419740753, 19631201791154966708345587290597525153931584753, 186189522078151873836757498608392193642359678875387929, 174871123584587100152437431758334264699538181739719028914917035, 93101579394604217992798816734786584984671504500458650133601204741633183, 107958121802104871161581380563052286127403191291993540552806753001765525822869363, 5251602116636684499413025343102459737599644015749188801392940514558066011410836927379799529, 79089923664892336887420401583933827171952421585830185821282513831293602309741040388464282458160450009]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 1, 1, 4, 7, 55, 367, 2911, 80596, 1000009, 61030441, 2720324089, 172396803289, 32721647884468, 2919452283241615, 1365801588433808863, 407553285320316023431, 207387914271185385769879, 267704249987574459112515364]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 4, 8, 448, 15872, 1458176, 1409024000, 513265369088, 3379272752300032, 30458876996203053056, 283270915168368760717312, 58300902013371333032040988672, 4773825340878911862045364417724416, 3033407016633635356261812490210788769792, 6925344672348932254103378738359939947957321728, 8324407778521582460737575602655185360838909189160960, 283433098415021797859089279006348864821785601009868378996736, 5724940123793036352708507790955556606089573579582253910294991470592, 333453092761760281747081977017297518961647793214079688776547297793029439488]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 9, 27, 7290, 1830519, 626568939, 14620086993393, 103481899737101919, 10414610900292311453304, 7945616912034173684196999915, 2119394852565579811393266152002887, 55176038084425243752885396232821157874559, 1171512365741549357466162867815179963947490858521, 39472609797770081411671380989569937306340999443844142866, 80198448554539561949479443639356968995504753549726393696652862157, 48262777404433010289356204042073294162223976065169179603341617085767152245, 488609134654047591359918352160807776601705902710985832040268106948086429756368924079, 31583589469040791300614228454972096872696902425385115983676987855791714377062243107530333417941, 754307197894300255286799639694288360281651708782706439590783556521828159067309304300426151405150042986148]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 1, 2, 3, 7, 23, 59, 314, 1529, 8209, 83313, 620297, 7869898, 126742987, 1687054711, 47301104551, 1123424582771, 32606721084786, 1662315215971057]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 9, 54, 3645, 964467, 196101729, 822493698147, 6160917908796534, 52760632054914279495, 11200866643391172215305923, 2356693087807058251036367018187, 1094739602376453236257394129565944907, 9117270123865550000821051198759957490902098, 54682972398074036949693575165516533807336378238775, 1638177762391278692832413275146678986039732081081884393809, 442114534135935737605219354970016450590447654018914352488132587027, 79542845374443729391686002365496272225143251716781792822888069680493961969, 160850906989049793734685662102450219490126112452853210376600456143267945037242637442, 1276371176314045233761441838481410152954588568432642059870984594284763121079844114453108048685]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 4, 16, 384, 16384, 1114112, 482344960, 216358977536, 344903053737984, 1866847598661337088, 10645086381621603467264, 393485413354218116341563392, 22295262781945018149257458221056, 2344043679417958812330655215299592192, 1440292290690560207840297414117839540846592, 876287154400705551439127180406766744319945605120, 2225742460733555528006749832076790754183487225986023424, 16182217431613351234332354848261835578345124760069369067732992, 133795777003109437109801537905355309146266732864885719694145128235008]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 1, 2, 5, 17, 109, 706, 9529, 149057, 3464585, 141172802, 5987285341, 540281496721, 53055650250901, 8453268527614082, 2173247123169247025, 610193552206250342657, 364280506115937098013649, 225791960727416355391439746]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 9, 54, 8019, 2184813, 932678955, 10899688037526, 88967845857343329, 5429973621139537200417, 2400754271786284336027165161, 748203245760721955546580461315622, 6480395769576517998227876893169241990531, 85710559506717237522709416676099547606124606333, 2138127481097338746941325635114580796275960367738979163, 1295316397019287809282572073087203692732700003887523101210695270, 519706010764463584639601826512415006402580806997401430147962031107699489, 1935674542253281454596645181729259228669978840184462687579838439267536749180848033, 41894151978353324375345551924558947476791560503880669500931957122886987230365291199477906217, 688136939237916046207560298446601189261128289710045655655387717052307957988587492918955948149773790038]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 1, 3, 5, 23, 119, 551, 8199, 68821, 1448467, 38745265, 837004657, 61242422289, 2605518436049, 249891170973299, 34505654202377909, 3507312493608222887, 1250318065223597979975, 271100112874619989235287]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 4, 24, 448, 23552, 1933312, 658505728, 410437812224, 564118184525824, 2931315591836860416, 22348554704472292458496, 580695977168794611374620672, 38305717359845322624901398396928, 4176945150423851732390085143746838528, 1918760754417068268217846854377824040517632, 1493287406572201661172294710912930151584912900096, 2840446010435033676307875355191775250771122010242154496, 18980284452357603953590002824461895503306065401724039587692544, 185450058720924617419624612259274123597786411577883669355345020452864]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 1, 9, 81, 8748, 2657205, 1334448351, 10951989803541, 106308454538203767, 5097814193227278145644, 1815629005752239315341329867, 668048078232832455187735011831459, 3376664626463197730017155846533801266803, 39562082064276014568762326539147685855209849827, 901695251021853652073452410516473227207806077128279620, 312829777515801402273569352283722024713030070432237647093195391, 118464453106828692388165648041095797021462761291902996634377759156082213, 273265915764465477764354701458956706331179498897209334595578146914422371588755503, 3820419678135963163661689290703792507487600962953794955949896705631129718900345000975195613, 58397193880063610211440295143032699101182628226007894004055426898277135491811382817606941704130325412]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 1, 1, 4, 3, 35, 158, 731, 25171, 144164, 8686977, 355986889, 8034946274, 2242256900185, 106749998473321, 30656079907867636, 11391480158408215083, 1380587103957029339771, 2827681810720906787049854]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 4, 8, 384, 6656, 696320, 355991552, 69566726144, 362861385744384, 1595296951341940736, 8411803135396475305984, 936339968206821249291124736, 36052492217052443952862562615296, 10313974648861545110183803245211680768, 11656907217284299049109629310745823684853760, 5408434750921063022765120257033947071653529780224, 72682782357186131137193694160464024799165823204234100736, 702548775988473543890129942513827417307260914687259954351439872, 9858713052352119334426692072286717454864594408666511674666316805963776]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 9, 27, 5832, 728271, 263063295, 2594942435322, 9389934799383807, 590872341728054445021, 175470240122257851084712356, 24408898988714112799519730339409, 218538061463175514115660129249335337121, 1806718346353487934006469097349620528067080106, 21483300539591969614499775555364913333441341176000537, 12414787454205292085841054313543931319645815346552701594319147, 2885233765227873494083682725214261129805436294885001061872266937829840, 5532922426900605861550641907609924357619033075578750742047542662947132166246991, 107253468590628824485624920016637579014316897011551682697851549955645761581178378373059167, 806159619870210688313965906428265654465539160435472325929138415919054939385136395429433961747999122]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 1, 1, 6, 5, 149, 994, 15629, 1256173, 14937574, 6584850873, 586361017577, 145043600817218, 156007090120528345, 26671380119559720857, 172626349038477965252038, 205292645065228322826527917, 799161522757591557347798895741, 11493091660914207682976401529652002]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 4, 8, 640, 11264, 3457024, 2720006144, 980527611904, 23425739474862080, 156351573816537776128, 6906949442738340635869184, 2117910019869426432512792461312, 178252598697833537414137102714535936, 981037932821518999832484115893198625177600, 2553771145243154954373968665550201731907015671808, 16261155593091424746274158971815942629193125976858427392, 1886751678216182153831240874160572018236978155030458316428935168, 47916864556368010829229239896005949704349575389917313357842681673285632, 47047320427486569841075947720885203932537588956393443275591308618970276969840640]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 9, 27, 10206, 1279395, 1353580227, 20362046060862, 88306395882904827, 37522031666632836238953, 15862281219129516344553292002, 9324873946764922395820802536693665, 414704662375932234311963900478149259818361, 4983774030654280441785163132963066569538164872898, 1250047696563139367734369085162877512787142362913343568129, 1788691289301311993425985290633820398565609495090914663930218867603, 987335353976469618164228311223477468089267202797402391692308714214169189406, 76018860894094081116341051785749738930541507991985906029099190997712371727675886780315, 3021154453161083186110921695145460818400056617124548801989244968946321076185796592249608822300107, 393950461608436366742079814848377044871850142914946113606882330900954334543552174802110131227410575546932478]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 1, 1, 8, 7, 391, 3422, 117655, 16609087, 357781304, 495986377897, 76545201396097, 90516797481207266, 223740326191428341089, 133644783486453073223377, 4081973702961287640284345864, 11273793650687896265213471329495, 453569284129388623834688601607286119, 19559674248129996716659668611099214199358]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 4, 8, 896, 15872, 9887744, 10370940928, 6707254132736, 358698642237816832, 3228211391887839330304, 612203452218220966228000768, 336500909904462794958863928918016, 74381200918413690202707814609848369152, 1796495989087359780997703042880483326106271744, 8333411527913976469820515387979330689375991201005568, 475106856518378357452294775631980407696708372651097798475776, 136615384812388918366403920602143363833313918571884654740874253565952, 11100860290223089202874681275651289864094379068089417001615678757648092626944, 112565351800032330989485249441211298947437990911614054034781948676989224120679093239808]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 9, 27, 14580, 1830519, 3974647239, 78055155600786, 440126610040994679, 564995381957717208214581, 307474561855090322046822573216, 709337558630416768144763068922013585, 59383899127691155781543246378063182138255473, 1016832946415080692530157544850444499047363066464506, 1921326395514951229792694571887735954734091438082805876913673, 4579043876642677980282452497515325594725111991335289188068100074761179, 12187436864853497120806568933244691111855706768582248669281501402707842208799852, 3962294242692525549125632638501941895031386355985243663279636748413539364145625823481765639, 267490971509736807129183890213615199177586832998423582808692795000048921448544657585522111526660444695, 574658055384866042988252491838364223791237557375271242208618372285534430732324311370111405623507208814383126189658]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 4, 16, 512, 10240, 1376256, 457179136, 132338679808, 468872989769728, 1449648906618011648, 11050869715246939897856, 567297073930391236301029376, 18198958765380821267243146936320, 4661908182555221395031308136414707712, 2394085646758446989966640295410113148092416, 1227387141883651866146355236221371717059361112064, 7554391896587376802905048990111886491570771490286600192, 36206323720715415500739725430984903320169743165579938314059776, 529895328544636435561933105609768847899385930648018241410362870071296]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 4, 16, 768, 16384, 5242880, 2550136832, 1580547964928, 16747761114284032, 80416274946327576576, 3918383589161088116064256, 463086288758301393146248953856, 47124911063484428000639941659852800, 103705288233392561159808292499836006039552, 116185717357520209274102193605842117071801942016, 837759873351207278423610826245824600668313442412658688, 23915438290037547193638253987784012749285628185664785878089728, 430913321424130028976900722454172824086197072101420219442571767709696, 182383494580441777392425677220513881322463533555544423608735424332962979643392]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 4, 16, 1024, 22528, 13303808, 8334082048, 9763265970176, 194115822946353152, 1316739008666588413952, 229363126580783413194653696, 45006105079366449033974307094528, 15450814941520149063917725745055531008, 95369813373077747795866659627296851952140288, 199669058284995951770576570000570026911579246690304, 10248824222283008073799946934756324653372671779139754131456, 629939510632135803693886544249116458517409191778747057192329805824, 63417116151209802572872319580451437162292285916196054918731903496347451392, 121436686264106556599221110642363931724721006043022369636059701807794958529007190016]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 1, 3, 8, 13, 167, 558, 7879, 149117, 1241704, 97231443, 2231567297, 145381499458, 19405138567553, 880120985044083, 394822112398982056, 63356092292383612637, 18939830084483189769031, 17617864869769984907829678]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 4, 24, 640, 14848, 2351104, 648544256, 258562064384, 780778883514368, 2177966920685322240, 21986113503487374393344, 824664609103310692972232704, 28308866149938795697672911060992, 7282187293161598001204994450145673216, 2768345916786329414596939313059812704518144, 1789132071627899598069975137783011379037675192320, 8013397051674701184977292729629180628490266190081425408, 31403578069342034632100085848375111493531757265219495527448576, 533500418958104203065891197392003963755505942463824271575707325300736]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 2, 9, 81, 17496, 2657205, 6155681103, 50021409016746, 555974687032917183, 187321557027266733987783, 49233845782435341451246691868, 128415856691510965083941557759132011, 1874491754280042294236269219279977299870433, 27563673562602860154378527594246958526628108256330, 13502745242988953754870969454300833657266923960329316150521, 6280156467513456567412210351243081078315701705861061899292998132801, 18250452033737474193665645799021879031651763018951021728378654368211959000144, 473194607395393227985429807612998052045315130369301827238576395655586474517843269229397, 9938399354530556137447135189620115420519896345247570063018339222270737955548038252014718851370031, 6555759541983808991960823047948962051425874003745990904023448019407144924890583990891454240214276222686564386]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 3, 1, 1, 6, 3, 111, 693, 6507, 721008, 5645781, 2303455563, 269929985841, 24190699933341, 48586509838529946, 6455746766482261983, 26814789861863891391711, 59025454175157366438411453, 52239855453177167370830568447, 1836009666562633431453360266915268]
[1, 3, 4, 8, 576, 6656, 2097152, 1340866560, 307207602176, 7257248115982336, 38200877566711037952, 1012709575807905858322432, 305393635277321695593509158912, 16251941992406578670324494828044288, 62041363142513708294510812686355259195392, 155933466057957635381463657911445633663745654784, 368877729989503631709046013971980482166245211720646656, 47172905124463309068838385622908878364623338254616418498641920, 1001144597199488220557877193237050511562495516766510789216753850253312, 361443841820716000234583111366147801154006538057071054229072714116207438987264]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 3, 9, 27, 8748, 728271, 747737487, 8132343484599, 23456432006998839, 8005942430482300653852, 2410548572634042717158749731, 826128620571085285488396434659233, 27678831489551707816528731985887695359707, 231921864714878554722640094272037032324515542409, 27889361915702420583450501263293428207211711282653617748, 30502903359729972465939433286073590186588631627537023211129643701, 9177012164047535505928263004417736487283140731671569143136085311103247181, 354753113295966337406869306073009229474052498962178554717138522863430020851290728973, 10720525653663749313030140905273077717187084355195167277351702753403983336778710327478370956069, 421276492213726900377625103748319862437146693465734024385364579206729541120067559098718585206438526450852]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 3, 1, 1, 9, 5, 491, 4569, 163259, 41082947, 708002019, 2241724426975, 582536013178249, 743968223906838123, 5231427144168666195049, 2840860787464703182019161, 285511086319727653454410609041, 2072740928260041189256647415382045, 94618129480450260846386435554572883619, 18583119208288804798794991587775457888714289]
[1, 3, 4, 8, 960, 11264, 11239424, 11551113216, 7400497086464, 627660954359824384, 5394430809147168522240, 1664719973776448560140648448, 1318267155043898446478851969122304, 302571715987775977304250471905501380608, 16210298833345051011084961811822397625357828096, 105333282380780067684059433395243097091134716408496128, 9761381646773116723541601358848893835899832517119808100106240, 5943860682397933022756042381162386533432306246411984387412252682092544, 591127306376805629146341050787428574688153222576670880574109823034257557159936, 16537762286586899012783343775160923731402945311793522278031597314996657483305999732310016]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 3, 9, 27, 15309, 1279395, 4322209653, 75989816973927, 369153385527822957, 764846935290736117024527, 368175580229884453731867262257, 1295412690387028713336989253969725223, 131953342953538945632222692502976790664699465, 2070434126746668356007380733802468965697782026054379, 7857959296566695086209946784062557360577439786829841896418737, 22147623802732845743453590954619179418281211628630415189058265146529699, 85190636190202843491834235769192763621973639889645319196198988437440008463480693, 47110050269845241501116343091866796215900479444158461120635666799445242242462334495223716811, 3734665453147324601246224556307591910210616278315914999746963193868988222029802414142123817020405530493, 16621471042659135909725628240398723334693326825601990070206146279735683520390250196375519481222618888251239313388175]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 3, 1, 1, 12, 7, 1303, 16077, 1282735, 571090438, 18411437217, 184046500609183, 84318293200719853, 536535774461493675129, 8838728934510360474216664, 18126409696855867388216520367, 8454080399466376599949243404178419, 144781446634924815585907195482618318073, 73072457726611050633763580103934072132187935, 44488426097671709331690826299377055931452920328378]
[1, 3, 4, 8, 1344, 15872, 32768000, 46307475456, 61896837300224, 10749836750315585536, 129950871015912936308736, 181063545188001240556087803904, 271211092990298357352092904913371136, 245808521189307648934433439865547910021120, 43493733864784774173133888110962327427326024876032, 545213208928978208661249579959471048696544543313183637504, 506155167413895101262559484671207957009223570644411342291822706688, 803548876663604200557573604403376741753176010247878604599883005081832914944, 504687493900673077709480372110204726998345428911957517859947119856894939240981331968, 89017173587125267081796141237858391011768124570114628339372588904134155763939877425253676220416]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 3, 9, 27, 21870, 1830519, 13062288339, 315829444258179, 2609558257203229599, 13744279881659640894857190, 9099300245257965362487462996867, 147374131091039126194497400287419605929, 28667541877258282971860718967521337470019089603, 896432785546157624462904574077559839513061452642814761, 22339211281990562014875750118166606858210308351579502249505342450, 118652779061495193792902654951619929932720456290820442828996668147154042157, 4330285543686179504116589393898132069219562940255003193765797224373991065603463020193, 6729919562639236261075296619738285271526701062117068975266726166104468960970659011541647885014537, 1169097783922738409636361884128678969358810497347518015268434010644154282220762673311018217664836525690877213, 93909303533245507593454807319978084775251052070535212940875296516224041634071917601530141900731311278460175113324821632730]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 3, 1, 2, 9, 7, 257, 1230, 22973, 1491823, 13300461, 5676552098, 391725842029, 68292193811547, 63758060867059189, 6864580931054231246, 32328906876212522240025, 32252527024305471095768059, 52650201335658293911652567801, 702562909927603919614981152336258]
[1, 3, 9, 54, 10935, 964467, 1232411679, 8133505746066, 30619786483945269, 6612298917588153000639, 1239873758754491259957802941, 561451418504281774937963279949174, 7340264323933038162717776151544723892907, 41023625349927806658381189196352272212986978295, 4021476165753164301629074394861558050219094521049177619, 1662339395374609790854324516977749932213016219707841609496105234, 429306611690011711588142387316352300520103171071074205184674566686463593, 6592474494218689278028908418744263661524057835022077150967472562692985477173160251, 77289964294473015231179493348418385202698705093856485632059646035341840744332139433899349873, 2656622246575587900335554880143933500391368500965051518587401499011495832306584424967657120848761999926]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 3, 4, 16, 1152, 16384, 16449536, 10280239104, 12444130869248, 409570349089292288, 2499581496811824611328, 807446078937757466929135616, 236701733368248831466522229604352, 87964771968597647314795592881035804672, 1303235999169517368604094773492438329444007936, 3516321754667745157056990112137482577905420691570688, 354872157768971867666594869983776647506603677168302710325248, 48807655263920512092317047074141864785104775022809466071176380940288, 5691855723736036512560772624602430798132184811685876889715699993584917807104, 37113792274344430104703329205641406672717702313477749088648555336771101942094072119296]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 3, 1, 2, 15, 17, 2059, 16743, 2562664, 458792801, 32436517173, 118111533362567, 24840505832464177, 275415717155796715422, 1174085029919200979483695, 6026923883515502527140830213, 566260227380796281406751576962543, 3600927244557467991718373053951155023, 2476446123014854770449243475290947999960972, 252037866622932933813027945920895735076229855289]
[1, 3, 9, 54, 24057, 2184813, 15979899429, 213694555584087, 3103363989806876100, 5691861147878966585279259, 2201574173303749483453223688579, 37703401233844931913372134612859507609, 2246617507985734251312352299071861396670919743, 84151799506554016700764853992740311251099591215757878, 596008704032879062100675623755789774309436616997596179900060359, 1004522306653773210115198224060917162564529830791332390582498318438985479, 39438125356028995272656495602052258200519378165224172355177196318598776045247467999, 10455514883671220946836805763416248617500559156353063955223229910901948904700433776906535033865, 1109932476427624620887879859681861881624780621583755870771290660399649345552595504764794223691739176800232, 27621200507285780452996321008822661284727028547186173819658774497356610385963651761394438999084170083280012864808246909]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 3, 9, 81, 13122, 1240029, 1851009003, 9633985299963, 45730708117467039, 7905784630363537701312, 1202494885718288023969893171, 679611928765713678257964968806029, 5733409570201076745243159476377253067303, 28278071847785716636562074670936014678314139731, 2645765857897882173953423145637670116458353878849762362, 697959494086769971706447933872692012448345176564914902768558647, 191841143903957767415908885455470574818882025636218360168344744386790701, 1880016656963442135580928039741855844237810046670786053519490946589193702306416413, 14517453495798953553208860694865943095838997886987841681543715726871234043701037594722070669, 517920721804663191406332738844647604183254308941538062261871706278110765481904785957219953229642269716]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 3, 9, 81, 19683, 1948617, 7447082733, 56454526236591, 607355962886759589, 327634524941960422272213, 75084833344953502409743630071, 329842053215193333653241622598642301, 6307897261823042647212952625494153390210137, 92825554853992354275259096652157121655013541452507, 96858306845257683111760942458642849253339336542098295392577, 54244560645654062228019192889331154162825234484155934467030364559961, 262490121532706886100260383318685739049924517769791404416723963909872709605771, 12530363432174911347548824583493150056750152185020540387714326432867162341848821621303473, 304712965871395859899575807043164719976656702693066512136414938497014426120510366784741006692369349, 508718160840521637299234954530253486206111889498439849311894025939891704086181131011525457268771138756890936071]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 3, 9, 81, 26244, 2657205, 19241884287, 189510218978751, 3946315328858137383, 4055902563575369941396542, 1275212006809536208751306492103, 21810478078555161408261649976252402025, 705369368808320092406513809492041893178525339, 34488189944965230614060773308708445231985541285529527, 110737014570630699718859171872478844234748567157331769413524976, 109947897702707865610855646363316553630620964367199119781891834900242139, 4369645660825450145885058651666079621751552754982028520304618089820689536182800141, 463994086297020499849233360318283641597144858257101531303130302529870307014568537747167437005, 54337783154587471735160491066365478186301024466649580512129305971290777334159400499540809231091786997673, 534129263479711786315770316147867131674746583309100903950217452971980354356991855006155411709813043027840791482775174]
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]

2016年7月21日木曜日

160721(4)

Ruby


Numbers n such that 2^n == 3 (mod n)

「数論〈未解決問題〉の事典」の「F10」には、
n = 4700063497, 63130707451134435989380140059866138830623361447484274774099906755
しか載っていないが、
オンライン整数列大辞典の
A050259
をもとに、他の解も確認してみた。

def pow(a, m, mod)
  return 1 % mod if m == 0
  k = pow(a, m >> 1, mod)
  k *= k
  return k % mod if m & 1 == 0
  return k * a % mod
end

ary =
[1,4700063497,3468371109448915,8365386194032363,
 10991007971508067]
ary.each{|i| p pow(2, i, i) == (3 % i)}

# Peter Montgomeryが見つけた解
i = 63130707451134435989380140059866138830623361447484274774099906755
p pow(2, i, i) == (3 % i)

出力結果
true
true
true
true
true
true

160721(3)

Ruby


Integrality and the Laurent phenomenon for Somos 4 sequences(4)

先程の二つをまとめて確認してみた。

def A(a1, a2, a3, a4, k, l, n)
  a, b, c, d = a1, a2, a3, a4
  ary = [a1]
  while ary.size < n
    break if (k * b * d + l * c * c) % a > 0
    a, b, c, d = b, c, d, (k * b * d + l * c * c) / a
    ary << a
  end
  ary
end

def x(s, t, u, v, k, l)
  a, b = s * s * v * v + k * (s * u ** 3 + t ** 3 * v) + l * t * t * u * u, s * t * u * v
  return false if a % b > 0
  a / b
end

def Diophantine(s, t, u, v, k, l, x)
  s * s * v * v + k * (s * u ** 3 + t ** 3 * v) + l * t * t * u * u == x * s * t * u * v
end

def f(a1, a2, a3, a4, k, l, n)
  p ary = A(a1, a2, a3, a4, k, l, n)
  p x = x(a1, a2, a3, a4, k, l)
  p (0..n - 4).map{|i| Diophantine(ary[i], ary[i + 1], ary[i + 2], ary[i + 3], k, l, x)} if x != false
end

n = 20
# テスト用
a1, a2, a3, a4, k, l = 1, 1, 1, 3, 1, 1
f(a1, a2, a3, a4, k, l, n)

a1, a2, a3, a4, k, l = 1, 1, 1, 1, 1, 1
f(a1, a2, a3, a4, k, l, n)

a1, a2, a3, a4, k, l = 1, 3, 121, 177023, 1331, 119790
f(a1, a2, a3, a4, k, l, n)

出力結果
[1, 1, 1, 3]
false
[1, 1, 1, 1, 2, 3, 7, 23, 59, 314, 1529, 8209, 83313, 620297, 7869898, 126742987, 1687054711, 47301104551, 1123424582771, 32606721084786]
4
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]
[1, 3, 121, 177023, 2460698229, 1383391404675863, 8688298479390987330929, 1455780005631999673771330516947, 4764115435770257032716350566474633731689, 223337535292722331216632575726395706629291248170767, 362740488296214246554305584172734945255544810003424782725680421, 5684399354734693943514581605677865492494211340843132464513825699922941136167, 3663178425075173516124169809409408606242603593700025583156605461905659549116130050238057441, 25250176864369887877947189457135530660164015908973302044152819670980403663047598549079989054148703322698403, 4958058020712814432486705115374786533372502495669393443814623968130512717844083284910928004315372729188382986639113180026201, 17688524650722567116776685594211248483217560907027356274244353315433206710285529509934590173847675452395966246426606926505783153051495924349343, 966153896093880153156929695756396704236036978843578716850207392035008377304823716339303902561584926011695191963421912993623952454349316232639228043806839995631829, 1736866319359273848679563666416661400990572249601952304669372511916616818806800257482633495658057209912056650881639272012572504523762082920288405407289575637034423994331294978413198903, 30800398154111222623972673388270929472329720054055277747294164271353605934320605102397826636172957633550948666223675969513619166894174107884459941000174711694283507515473234541353206828914602568204023767889, 22668868718816480695376897795197644842873892175907257844188449489310389324565259905661276413078971420475323254044594866811488882682691048703019039490288373902569924260019965595621220648709917837833509063205069058985862670936440947]
869
[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]

160721(2)

Ruby


Integrality and the Laurent phenomenon for Somos 4 sequences(3)

Somos-4 sequence の連続する4項 a(n), a(n + 1), a(n + 2), a(n + 3) がディオファントス方程式
s^2 * v^2 + (s * u^3 + t^3 * v) + t^2 * u^2 = 4stuv
の整数解となっていることを確認してみた。

def A(n)
  a, b, c, d = 1, 1, 1, 1
  ary = [1]
  while ary.size < n
    break if (b * d + c * c) % a > 0
    a, b, c, d = b, c, d, (b * d + c * c) / a
    ary << a
  end
  ary
end

n = 20
ary = A(n)
(0..n - 4).each{|i|
  s, t, u, v = ary[i], ary[i + 1], ary[i + 2], ary[i + 3]
  p s * s * v * v + (s * u ** 3 + t ** 3 * v) + t * t * u * u == 4 * s * t * u * v
}

出力結果
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true

160721

Ruby


Integrality and the Laurent phenomenon for Somos 4 sequences(2)

a(n), a(n + 1), a(n + 2), a(n + 3) がディオファントス方程式
s^2 * v^2 + 1331(s * u^3 + t^3 * v) + 119790 * t^2 * u^2 = 869stuv
の整数解となっていることを確認してみた。

def A(n)
  a, b, c, d = 1, 3, 121, 177023
  ary = [1]
  while ary.size < n
    break if (1331 * b * d + 119790 * c * c) % a > 0
    a, b, c, d = b, c, d, (1331 * b * d + 119790 * c * c) / a
    ary << a
  end
  ary
end

n = 20
ary = A(n)
(0..n - 4).each{|i|
  s, t, u, v = ary[i], ary[i + 1], ary[i + 2], ary[i + 3]
  p s * s * v * v + 1331 * (s * u ** 3 + t ** 3 * v) + 119790 * t * t * u * u == 869 * s * t * u * v
}

出力結果
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true

2016年7月20日水曜日

160720(5)

Ruby


Integrality and the Laurent phenomenon for Somos 4 sequences(1)

http://arxiv.org/pdf/math/0508094.pdf
において、二度出てくる例について、計算しようと思った。
この例というのは以下のように定義された数列である。

a(1) = 1, a(2) = 3, a(3) = 11^2, a(4) = 11^3 * 7 * 19,
a(n + 4) * a(n) = 11^3 * a(n + 3) * a(n + 1) + 90 * 11^3 * a(n + 2)^2

def A(n)
  a, b, c, d = 1, 3, 121, 177023
  ary = [1]
  while ary.size < n
    break if (1331 * b * d + 119790 * c * c) % a > 0
    a, b, c, d = b, c, d, (1331 * b * d + 119790 * c * c) / a
    ary << a
  end
  ary
end

p A(20)

出力結果
[1, 3, 121, 177023, 2460698229, 1383391404675863, 8688298479390987330929, 1455780005631999673771330516947, 4764115435770257032716350566474633731689, 223337535292722331216632575726395706629291248170767, 362740488296214246554305584172734945255544810003424782725680421, 5684399354734693943514581605677865492494211340843132464513825699922941136167, 3663178425075173516124169809409408606242603593700025583156605461905659549116130050238057441, 25250176864369887877947189457135530660164015908973302044152819670980403663047598549079989054148703322698403, 4958058020712814432486705115374786533372502495669393443814623968130512717844083284910928004315372729188382986639113180026201, 17688524650722567116776685594211248483217560907027356274244353315433206710285529509934590173847675452395966246426606926505783153051495924349343, 966153896093880153156929695756396704236036978843578716850207392035008377304823716339303902561584926011695191963421912993623952454349316232639228043806839995631829, 1736866319359273848679563666416661400990572249601952304669372511916616818806800257482633495658057209912056650881639272012572504523762082920288405407289575637034423994331294978413198903, 30800398154111222623972673388270929472329720054055277747294164271353605934320605102397826636172957633550948666223675969513619166894174107884459941000174711694283507515473234541353206828914602568204023767889, 22668868718816480695376897795197644842873892175907257844188449489310389324565259905661276413078971420475323254044594866811488882682691048703019039490288373902569924260019965595621220648709917837833509063205069058985862670936440947]

160720(4)

Ruby


A Somos-4 like sequence connected with the elliptic curve y^2 + y = x^3 - 3x + 4(2)

もう少し調べてみた。

def A259419(n)
  a = [1, 2, 1, -3]
  i = 3
  while i < n
    i += 1
    if i % 3 == 2
      a << (a[i - 1] * a[i - 3] - 3 * a[i - 2] * a[i - 2]) / a[i - 4]
    else
      a << (a[i - 1] * a[i - 3] -     a[i - 2] * a[i - 2]) / a[i - 4]
    end
  end
  a[0..n]
end

p A259419(100)

出力結果
[1, 2, 1, -3, -7, -17, 2, 101, 247, 571, -1669, -13766, -43101, -205897, 1640929, 8217293, 101727662, 173114917, -5439590147, -70987557871, -993401657957, 2105332714614, 208894282701569, 3110590234593151, 37334338699443371, -891470356091782993, -33292234868859857114, -655072772294084771393, -14045914920360093145657, 919538273959301816298793, 24019180912693622333908257, 1805787171843297438920673386, 5003072880188032458178019857, -3415515902173521091667189702779, -257824176524832346191844895121199, -20094926104933993936043033252874881, 431981247415834826339869646090269114, 150835563149939045587529434118613434693, 13927525875390894766854782571023157733279, 832794160192635531130697826043404975430803, -158249927000280982869109034271384686309140933, -28406220677339887308317388167076748335892327838, -3496642154862224645493263965088588732877815492557, -304481010479259440502262475779778040702091178683921, 177127186300032689845062893891889053557224616302702553, 25067011913320846385124289923547479176287010760879153949, 11155407821583903069966356216864273781732837755290446555734, -298411846885982854150150543258986615081624610296120790198619, -744794854717330216405074737257275135412406442837263435052249579, -335003629758061575215941636033513107636468589882179534307579533703, -140218009057827899045836545236461839253667767075439533965489968026949, 26117529673934234796016361010176735319675633187852638493510833496099502, 38145480094657115205127138478770382441729183357304922224003051074430839633, 22074564826581182229221341989691694353748153716373122758763717559555688571543, 6265561432926486584172909269098864753201270249416693591864289328182672549938547, -9506395377399646026287235294879435515196262939783591512681667010787803950015746049, -8588732411333215882389740136248107094858583430420544427146725508583587959121505920498, -6531715789567898218225444323840647168619336927625000553710192757688964307395377232468449, -1863081508339284971328360993002855532980729095075026497964568313055113066641210588577469649, 11780324769331822013289401779989153507703315691257013875589337480711383180489750132596331164849, 9363058732937667205377956670125700308182367649203288286119369600119248809071354888441594113286049, 23917175561629622451952785382586258590107322388341437725811052247530661835489541511860354026558068498, -10064771234038465341025933360874386342170064266887424205363009122154960768938397548990965198967361191551, -56557721802222227299435396539023453431007625914127916515731506063686299585398202124655445571883847433564947, -155291195236034865999169682291622228979291377111093870224056016159387108794201034138969027779274983670124669943, -335882358306117400078939086784450635333845326848900910742221435634636378944292582189625359609494422480871342986833, 508567380167939696414659731236666915254637485498102606548507494050674541172799159447823822151856233738095063966488498, 3391101848414295974901535547359272379506293237374007041025921608375601230703429788689145362108981924646631906695844377349, 12331244045766208101882557503781116735210411159529958186470216406864876600514116514459087521450511886807957976584368245187303, 15565876380405318163500189004899727567082897017725717080832826050210811132032794460791088061596463368346556851161377361166848779, -195203450755495263204386087136530009612609720411342497833413672283134632402332407774090981632674985317203076995959660610798019255781, -924180709516989517629704978374536793865664590349599070070682112246210079647455090349063134526053796217884279671261131530983116268103734, -4256672698191523197914979388353473415721221833181768756701520570985550631347338711702394296831211182948304238973104050828611060182955864349, -1489976140940680866963468424747804657211089782605421320773432229335762094834966634373576007627049245295906173432953670751822155612560312132153, 271413133151273843436136292013416347626751356187568946845096142791641997889738224573555068104889908935428560670000967472200636434362289810213884721, 1252500610320238551774572656070961217829158519486919845951141178025555971396598212057895752627814533868902403183733460385002255793081082818010855041357, 17744207795203960438168850643373984042026147400906647250650187033107493177268123866064542208002481131838475805463615844032062479528748332892965974078875838, -73650640040834379769810254573142200710052326589421252558866912895447589468943255098734349384326998603947473791027075434994367057818908900805897638284043894267, -1499943562620811083000767542354038127898279640628638050573377575014082057663196257966884210541011688527293027019238771157372036925381859369086663783958422049660403, -25580607921983251864270808051431618722213365413702417373409974962969729909413765756793862731971583700016669371046108591310919347115175190335463648038484062249361100479, -274200121144332115931442393932618638204527972870261434731376734607590996156956218623213454009863009871750469917428427068253844321879720684689563597140840619565032048005893, 3300484489247772480875978525815952745696387418968834645683711580978658744094094615986177434600192349700541371774080086102950650312257050824347743124140018100122951717059262886, 106413407867634289645926036815411786755781279925460094857232692921140884191833267122693528156845406927925795801873054286722928343069108678685675680348292309381334308335709434932481, 2418166257371185357286947856536390866903577122383739915082543198692928119716187354624253746354599903335715269248346375988689902725009126143863204737473877904374394776461480232691601999, 12190706317624296955486889521816795721669369601033995768978345181823402711984789895425836756542603659929208811366402589546569859577228528016124229125930901120302067750878991842795002309979, -1378668331737483098730133627065587313578991384834855801913108059740786183117663216177650176049933993124711603199809227462121239311207990795273717955821765269998297611383893691723909596893232657, -35518918877055296221930366735552167059265615185723427456202371116293120698359432963510418586676237076966827012825912794150127276462377027184183215794617763788834947943834717488329256832181025485386, -965081317536263013261173149530340191486419024505909305658564002981137916151356119208604173827051787247460122856829299341391434790671502931043637116052146751318484547677748454212805442595513810758367457, 5654590476372863987778189416152826243014658824063763172511308713155504430509505000653379179763643901467302695352631831779014927487789458081509115175821402285810268545128576821916089771238464620825896823607, 2172379476513667759849727470690845219623088250926035042086063239844613740532775448484732130882500880469769830662919161595928038224244775897631564512196053774265805525721338301275122260209948084535615810676815257, 59925732768094264663282155604007407721384910208948519647528968210179418130047332142530176517257178623793219897711074500195576419516314391427793116843019889952999459493707236570621125417314717452820027949065329118593, 4538868417181926263219882117754640368646474222757457539133262806496567885145744412089858194272062815564112875330171182463570775600177659837068693396288754331371704325988399386339527610483042798873190529540346602747173114, -161485743505651378463555325285680352286811474337300781924506667560422747519335438409477573994280736659394041435889593953576299835378436227575050162386133632381446891578710270864418918912306373940099575105152259075814019916207, -13937932275193699438087728145210307899797991681367185744432272397238035443665294278560264458847057839849683339386505016545751787859747939114093591124722768430401397009005776042505949007717589973546721043686828783742506175236026571, -1490846783734898276257936429444265876136810732795056304803678083718891409334888772232995160701217759821006573876497305881615414420188461339977530594021748331582521948206139396224692081547009717097734583105561127691671242944140472729951, -75359612916822227753435841002891608517966786324191568620766207007566048629645831272484758740991290490999415171373757280777419469791273545247646476908038619963298458799646721485302265184224323906594913065983038113167855058419117386132663169, 7259259709276969048490531389359137170974647157312460559621704542219649390433238228338870897637463797683012404637901547344360685034370440637876919459109414705417217245193712899692052766027952310517726202027309623013628863147897332034110764849386, 1183928499797209358843319332475248804552105651404588151158029036229776067229571479009273870963144360163571804172192239852700338521136132319665836067164100261704059252384548953944017058015278554459678692100547064307279272315316105654370334101330741157, 165886227038394510801937736578964811128683833745561604746947314843426227475382273859181583433492220152178019566244779020012766099148563949405494011212525959911400203167358774759249806837900820377322620926619247128346979562839964598610682721966709071301071, 2620441914772628448135973413103568973254009277614989868984241685227516824023357820149949166077485511477661575609683115757077967061383052619496237557374220984989208217136937117424397921816843065757649458436603079281562367123348988246028077415574603647758851747, -3363404180851814523647394351390772553122056236816466498528875960807037554552379372685726135417407748878325466991904275362093149353401462916767088146879223162251600373346171811137834065897698151478557654587362748032971001830258001295952478507401170606697367900351717]