2023年7月8日土曜日

230708

Ruby


Expansion of e.g.f. theta_3(q)^(k/2)

k == 1 (mod 2) のとき、出力してみた。

def f(n)
  return 1 if n < 2
  (1..n).inject(:*)
end

def A186690(n)
  s = 0
  (1..n).each{|i| s += i if n % i == 0 && (n / i) % 2 == 1}
  (-1) ** (n + 1) * s
end

def B(k, n)
  a = [0] + (1..n).map{|i| A186690(i)}
  a_ary = [1]
  (1..n).each{|i|
    m = f(i - 1)
    a_ary << (1..i).inject(0){|s, j| s + k * a[j] * a_ary[-j] * m / f(i - j)}
  }
  a_ary
end

n = 10
-25.step(25, 2){|i| p [i, B(i, n)]}

出力結果
[-25, [1, -25, 675, -19575, 606225, -19944225, 693835875, -25422933375, 977745218625, -39350424479625, 1652904664495875]]
[-23, [1, -23, 575, -15525, 449673, -13887975, 454991175, -15742117125, 573015200625, -21871632491415, 872889859083375]]
[-21, [1, -21, 483, -12075, 325521, -9396765, 288749475, -9398322675, 322652227905, -11641352627205, 440043353374275]]
[-19, [1, -19, 399, -9177, 228969, -6146595, 176336055, -5376116025, 173372815665, -5890443433875, 210126743128575]]
[-17, [1, -17, 323, -6783, 155601, -3861465, 102864195, -2922828615, 88124295105, -2806906632705, 94095203991075]]
[-15, [1, -15, 255, -4845, 101385, -2309535, 56759175, -1494125325, 41881856625, -1244022735375, 38993819043375]]
[-13, [1, -13, 195, -3315, 62673, -1299285, 29228355, -707636475, 18316505025, -504116658045, 14685387955875]]
[-11, [1, -11, 143, -2145, 36201, -675675, 13777335, -304008705, 7204902705, -182276917515, 4897582264575]]
[-9, [1, -9, 99, -1287, 19089, -316305, 5772195, -114729615, 2462398785, -56674425465, 1390839617475]]
[-7, [1, -7, 63, -693, 8841, -127575, 2047815, -36081045, 690863985, -14263534215, 315469515375]]
[-5, [1, -5, 35, -315, 3345, -40845, 562275, -8575875, 143273025, -2598830325, 50790003075]]
[-3, [1, -3, 15, -105, 873, -8595, 97335, -1233225, 17298225, -266220675, 4444840575]]
[-1, [1, -1, 3, -15, 81, -585, 4995, -46935, 499905, -6109425, 79791075]]
[1, [1, 1, -1, 3, 9, -15, 135, -2205, 21105, 76545, 694575]]
[3, [1, 3, 3, -3, 81, 315, -765, 4725, 16065, 1091475, 10843875]]
[5, [1, 5, 15, 15, 105, 1845, 5175, -11025, 363825, 4011525, 46734975]]
[7, [1, 7, 35, 105, 273, 4095, 38115, 86625, 540225, 22444695, 215417475]]
[9, [1, 9, 63, 315, 1161, 8505, 112455, 796635, 2843505, 57661065, 1099313775]]
[11, [1, 11, 99, 693, 3729, 22275, 259875, 2900205, 19490625, 161008155, 3451399875]]
[13, [1, 13, 143, 1287, 9321, 62205, 598455, 7702695, 78423345, 647284365, 9370936575]]
[15, [1, 15, 195, 2145, 19665, 158535, 1447875, 18243225, 232985025, 2435846175, 28443399075]]
[17, [1, 17, 255, 3315, 36873, 358785, 3490695, 42117075, 590951025, 7589122065, 91863766575]]
[19, [1, 19, 323, 4845, 63441, 731595, 7979715, 96556005, 1388717505, 20396897955, 278955792675]]
[21, [1, 21, 399, 6783, 102249, 1370565, 16991415, 216411615, 3146775345, 49819225365, 767467173375]]
[23, [1, 23, 483, 9177, 156561, 2398095, 33725475, 465686865, 6952917825, 114751084455, 1935277553475]]
[25, [1, 25, 575, 12075, 230025, 3969225, 62850375, 953260875, 14929952625, 254408009625, 4570418955375]]

2023年6月27日火曜日

230627

PARI


Number of partitions of n with rank r or higher

出力してみた。

a(n, r) = sum(k=1, n, (-1)^(k-1)*numbpart(n-k*(3*k+2*r-1)/2));
for(r=0, 10, for(n=1, 20, print1(a(n, r), ", ")); print)

出力結果
1, 1, 2, 3, 4, 6, 9, 12, 17, 23, 31, 42, 56, 73, 96, 125, 161, 207, 265, 336, 
0, 1, 1, 2, 3, 5, 6, 10, 13, 19, 25, 35, 45, 62, 80, 106, 136, 178, 225, 291, 
0, 0, 1, 1, 2, 3, 5, 7, 10, 14, 20, 27, 37, 49, 66, 86, 113, 147, 190, 243, 
0, 0, 0, 1, 1, 2, 3, 5, 7, 11, 14, 21, 28, 39, 51, 70, 90, 120, 154, 201, 
0, 0, 0, 0, 1, 1, 2, 3, 5, 7, 11, 15, 21, 29, 40, 53, 72, 94, 124, 161, 
0, 0, 0, 0, 0, 1, 1, 2, 3, 5, 7, 11, 15, 22, 29, 41, 54, 74, 96, 128, 
0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 5, 7, 11, 15, 22, 30, 41, 55, 75, 98, 
0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 5, 7, 11, 15, 22, 30, 42, 55, 76, 
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 5, 7, 11, 15, 22, 30, 42, 56, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 5, 7, 11, 15, 22, 30, 42, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 5, 7, 11, 15, 22, 30, 

2023年5月1日月曜日

230501

Ruby


(n+1)^k written in base n

n>1の時、出力してみた。

def A(n, k)
  ((n + 1) ** k).to_s(n)
end

(1..15).each{|i|
  p (2..36).map{|j| A(j, i)}
}

出力結果
["11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11", "11"]
["1001", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121", "121"]
["11011", "2101", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331", "1331"]
["1010001", "100111", "21301", "20141", "15041", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641", "14641"]
["11110011", "1101221", "300311", "222101", "205451", "164351", "163251", "162151", "161051", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51", "15aa51"]
["1011011001", "12121201", "3310021", "2443111", "2304401", "2141161", "2015761", "1783661", "1771561", "175a461", "1749361", "1738261", "1727161", "1716061", "1704f61", "16g3f61", "16g2f61", "16g1f61", "16g0f61", "16fkf61", "16fkf61", "16fkf61", "16fkf61", "16fkf61", "16fkf61", "16fkf61", "16fkf61", "16fkf61", "16fkf61", "16fkf61", "16fkf61", "16fkf61", "16fkf61", "16fkf61", "16fkf61"]
["100010001011", "211110211", "103010231", "32424221", "25352411", "23553101", "22175571", "20731371", "19487171", "19253a71", "19020971", "18aba871", "18998771", "18876671", "18754571", "18632471", "18510371", "183hh271", "182gg171", "181ff071", "180edl71", "17mdcl71", "17mcbl71", "17mbal71", "17ma9l71", "17m98l71", "17m87l71", "17m76l71", "17m65l71", "17m54l71", "17m43l71", "17m32l71", "17m21l71", "17m10l71", "17lzzl71"]
["1100110100001", "10022220021", "1133113201", "412221431", "323320521", "262414111", "244153501", "228145181", "214358881", "200793681", "1a922a481", "1a6996281", "1a4542081", "1a20dcd81", "19fc99c81", "19e956b81", "19d613a81", "19c2g0981", "19ajch881", "199h9f781", "198f6d681", "197d3b581", "196b09481", "1958m7381", "1946k5281", "1934i3181", "1922g1081", "1910drs81", "18tsbqs81", "18tr9ps81", "18tq7os81", "18tp5ns81", "18to3ms81", "18tn1ls81", "18tlzks81"]
["100110011100011", "111022121001", "13130311211", "10034441241", "4000530131", "3216555221", "2705710511", "2520607101", "2357947691", "220861a391", "207b513091", "1c43628a91", "1c09962891", "1bc2ebb691", "1b9c636491", "1b76ec1291", "1b5174e091", "1b2eig9h91", "1b0aca5g91", "1aj6641f91", "1ai1ljje91", "1agkgegd91", "1afhb9dc91", "1aee64ab91", "1adb0p7a91", "1ac7ml4991", "1ab4ih1891", "1aa1ecr791", "1a8sa8p691", "1a7q64n591", "1a6o20l491", "1a5lutj391", "1a4jrqh291", "1a3honf191", "1a2flkd091"]
["1110011010101001", "1222021101011", "211100023321", "110434404201", "44010231441", "35415440431", "31765015621", "27726678111", "25937424601", "242938131a1", "228746439a1", "213798b66a1", "1dca518b3a1", "1d902b830a1", "1d56299ada1", "1d1e49d3ba1", "1cg68c0e9a1", "1cdheg787a1", "1cbb32g25a1", "1c94ca5h3a1", "1c6k1jhc1a1", "1c4ee886ma1", "1c294kn1la1", "1c03kaelka1", "1bnoc06hja1", "1bmk3gpdia1", "1blfn7i9ha1", "1bkbfrb5ga1", "1bj78j41fa1", "1bi31arsea1", "1bguq2lpda1", "1bfrjrfmca1", "1beodk9jba1", "1bdl7d3gaa1", "1bci15xd9a1"]
["101011001111111011", "21220002111121", "2322100323131", "1220334001211", "524112550251", "422603145041", "351635174031", "316104570221", "285311670611", "267120945101", "24b3baa817b1", "234b457503b1", "21c916a60db1", "20792e4b3ab1", "1f2b8c3487b1", "1eeg1e5gf4b1", "1eb4f2cf61b1", "1e7cdc4ffhb1", "1e42e5ii7fb1", "1e0dh1g1kdb1", "1dj4llf7dbb1", "1dgj5mgf69b1", "1debe1k0n7b1", "1dc3o60bh5b1", "1d9mac6ob3b1", "1d7fnkfc51b1", "1d59b2prqrb1", "1d32re9glqb1", "1d0qfrn5gpb1", "1ctl4c7pbob1", "1csfosof6nb1", "1craeea51mb1", "1cq53xtsulb1", "1coyskgjqkb1", "1cnuj73amjb1"]
["10000001101111110001", "1011120101000101", "32203110221101", "13424224013321", "10205242453201", "4651634625451", "4070207134341", "3477151372431", "3138428376721", "292832a296111", "27433a9699701", "258329cc541c1", "2407a83270ac1", "2281c240ee6c1", "211e44f7d02c1", "1gce0g35f2fc1", "1g7g1hfa37cc1", "1g3176h1ce9c1", "1fi6h04h636c1", "1fee9ihi1d3c1", "1fb24lf0l30c1", "1f7d25g8lfkc1", "1f421fll06ic1", "1f0g356c3mgc1", "1en66mj59eec1", "1eknch90h6cc1", "1eieke0pqqac1", "1eg61cnq9j8c1", "1edrcdksmc6c1", "1ebjpgk2654c1", "1e9c8ll7lu2c1", "1e74osof6o0c1", "1e4v93tophwc1", "1e2ose21bbvc1", "1e0idqadx5uc1"]
["110000101001111010011", "11200021111001111", "1020300213032111", "203222014202031", "112302111425211", "54501314213261", "44772300477751", "38358665206741", "34522712143931", "31100622147221", "29b77284474711", "280b5c9c496101", "264844b597b8d1", "24a9de650e63d1", "233029474d2ed1", "21c9f029411ad1", "206601f7db26d1", "1i048e4ie852d1", "1he53h52399id1", "1h9837fejegfd1", "1h4d74eg023cd1", "1gmkf7m27ed9d1", "1gj63hdil716d1", "1gfgj8big1e3d1", "1gc3d3foeo30d1", "1g8h92q9hniod1", "1g5576eqop8md1", "1g1m7e7l6srkd1", "1fsb9q4jl4iid1", "1fq0eb5m8b9gd1", "1fnlkuastk0ed1", "1flbtkk6luocd1", "1fj26cxkg9gad1", "1fgri7g3cn88d1", "1feiw40ob306d1"]
["10010001111101101111001", "200201002221012221", "11223303010013221", "2240442211222341", "1235323230121321", "632514456346201", "514715305477461", "433056427275251", "379749833583241", "342106843609431", "309729b08bbb821", "2a8c45994127111", "28acc9231356801", "27058d5b605a1e1", "25632bdbc201be1", "23e57f2bd52c6e1", "226c61h536d91e1", "20i4d404e3d7fe1", "1jbj91275cj8be1", "1j5hbb29ddab7e1", "1ilhkbj8g25g3e1", "1igkd0719m4mme1", "1ic19l78g487je1", "1i77b2k59hfhge1", "1i2fggjedd13de1", "1hopqc290efgae1", "1hlacdldnm637e1", "1hho0llss6rj4e1", "1he9l60oapn71e1", "1haqepgrujkpte1", "1h7daj97qhkere1", "1h408h7qsjm3pe1", "1h0l8jck2ppqne1", "1gw9apnjg0vgle1", "1gtxf04oze36je1"]
["110110101111001001101011", "2202211102201212201", "130122333110212031", "30200414324001301", "14032555531334531", "10260662353141211", "5664070362474271", "4763631711137761", "4177248169415651", "37631741796a2741", "33a4a08b98bb7a31", "30683a2605398221", "2b59b7b5448c0811", "2975e7422660c101", "27b95e997e21d9f1", "2612d60e817f23f1", "249108148a24aff1", "2303hh44ihh24af1", "21bb8a39cic805f1", "204281dc2630j0f1", "1kihga962i7ljhf1", "1kcead78b944mdf1", "1k6db74g0kcg39f1", "1k0eidn0f28895f1", "1jki67a820e4h1f1", "1jfnpbeb9f34qof1", "1jb3mq779i09alf1", "1j6comels65hnif1", "1j1o0r6p56j08ff1", "1is6a9bdrj9focf1", "1iokntsh2c63a9f1", "1il48pp1mf8pt6f1", "1ihltrvwmshig3f1", "1ie6k1e80gwd30f1", "1iarcf4todh9pxf1"]

2023年4月30日日曜日

230430

Ruby


A275216

q-binomialの係数を出力してみた。

def plus(f_ary, b_ary)
  s1, s2 = f_ary.size, b_ary.size
  ary = Array.new([s1, s2].max, 0)
  (0..s1 - 1).each{|i| ary[i] += f_ary[i]}
  (0..s2 - 1).each{|i| ary[i] += b_ary[i]}
  ary
end

def A(n)
  ary = [[1]]
  a = [[[1]]]
  (1..n).each{|i|
    new_ary = [[0]] + ary
    (0..i - 1).each{|j| 
      new_ary[j] = plus(new_ary[j], [0] * j + ary[j])
    }
    ary = new_ary
    a << ary
  }
  a
end

n = 10
A(n).each_with_index{|i, num|
  puts "Row #{num}"
  i.each{|j| p j}
}

出力結果
Row 0
[1]
Row 1
[1]
[1]
Row 2
[1]
[1, 1]
[1]
Row 3
[1]
[1, 1, 1]
[1, 1, 1]
[1]
Row 4
[1]
[1, 1, 1, 1]
[1, 1, 2, 1, 1]
[1, 1, 1, 1]
[1]
Row 5
[1]
[1, 1, 1, 1, 1]
[1, 1, 2, 2, 2, 1, 1]
[1, 1, 2, 2, 2, 1, 1]
[1, 1, 1, 1, 1]
[1]
Row 6
[1]
[1, 1, 1, 1, 1, 1]
[1, 1, 2, 2, 3, 2, 2, 1, 1]
[1, 1, 2, 3, 3, 3, 3, 2, 1, 1]
[1, 1, 2, 2, 3, 2, 2, 1, 1]
[1, 1, 1, 1, 1, 1]
[1]
Row 7
[1]
[1, 1, 1, 1, 1, 1, 1]
[1, 1, 2, 2, 3, 3, 3, 2, 2, 1, 1]
[1, 1, 2, 3, 4, 4, 5, 4, 4, 3, 2, 1, 1]
[1, 1, 2, 3, 4, 4, 5, 4, 4, 3, 2, 1, 1]
[1, 1, 2, 2, 3, 3, 3, 2, 2, 1, 1]
[1, 1, 1, 1, 1, 1, 1]
[1]
Row 8
[1]
[1, 1, 1, 1, 1, 1, 1, 1]
[1, 1, 2, 2, 3, 3, 4, 3, 3, 2, 2, 1, 1]
[1, 1, 2, 3, 4, 5, 6, 6, 6, 6, 5, 4, 3, 2, 1, 1]
[1, 1, 2, 3, 5, 5, 7, 7, 8, 7, 7, 5, 5, 3, 2, 1, 1]
[1, 1, 2, 3, 4, 5, 6, 6, 6, 6, 5, 4, 3, 2, 1, 1]
[1, 1, 2, 2, 3, 3, 4, 3, 3, 2, 2, 1, 1]
[1, 1, 1, 1, 1, 1, 1, 1]
[1]
Row 9
[1]
[1, 1, 1, 1, 1, 1, 1, 1, 1]
[1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1]
[1, 1, 2, 3, 4, 5, 7, 7, 8, 8, 8, 7, 7, 5, 4, 3, 2, 1, 1]
[1, 1, 2, 3, 5, 6, 8, 9, 11, 11, 12, 11, 11, 9, 8, 6, 5, 3, 2, 1, 1]
[1, 1, 2, 3, 5, 6, 8, 9, 11, 11, 12, 11, 11, 9, 8, 6, 5, 3, 2, 1, 1]
[1, 1, 2, 3, 4, 5, 7, 7, 8, 8, 8, 7, 7, 5, 4, 3, 2, 1, 1]
[1, 1, 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1]
[1, 1, 1, 1, 1, 1, 1, 1, 1]
[1]
Row 10
[1]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[1, 1, 2, 2, 3, 3, 4, 4, 5, 4, 4, 3, 3, 2, 2, 1, 1]
[1, 1, 2, 3, 4, 5, 7, 8, 9, 10, 10, 10, 10, 9, 8, 7, 5, 4, 3, 2, 1, 1]
[1, 1, 2, 3, 5, 6, 9, 10, 13, 14, 16, 16, 18, 16, 16, 14, 13, 10, 9, 6, 5, 3, 2, 1, 1]
[1, 1, 2, 3, 5, 7, 9, 11, 14, 16, 18, 19, 20, 20, 19, 18, 16, 14, 11, 9, 7, 5, 3, 2, 1, 1]
[1, 1, 2, 3, 5, 6, 9, 10, 13, 14, 16, 16, 18, 16, 16, 14, 13, 10, 9, 6, 5, 3, 2, 1, 1]
[1, 1, 2, 3, 4, 5, 7, 8, 9, 10, 10, 10, 10, 9, 8, 7, 5, 4, 3, 2, 1, 1]
[1, 1, 2, 2, 3, 3, 4, 4, 5, 4, 4, 3, 3, 2, 2, 1, 1]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[1]

2023年3月1日水曜日

230301

Ruby


66...67^2(3)

和と差の積ですぐ示せるきれいな関係を出力してみた。

def A(n)
  i = ([5] * n + [6]).join.to_i
  j = ([4] * n + [5]).join.to_i
  puts "#{i}^2 - #{j}^2 = #{i * i - j * j}"
end

(0..10).each{|i| A(i)}

出力結果
6^2 - 5^2 = 11
56^2 - 45^2 = 1111
556^2 - 445^2 = 111111
5556^2 - 4445^2 = 11111111
55556^2 - 44445^2 = 1111111111
555556^2 - 444445^2 = 111111111111
5555556^2 - 4444445^2 = 11111111111111
55555556^2 - 44444445^2 = 1111111111111111
555555556^2 - 444444445^2 = 111111111111111111
5555555556^2 - 4444444445^2 = 11111111111111111111
55555555556^2 - 44444444445^2 = 1111111111111111111111

2023年2月5日日曜日

230205

Ruby


べき乗和の公式

出力してみた。

def ncr(n, r)
  return 1 if r == 0
  (n - r + 1..n).inject(:*) / (1..r).inject(:*)
end

# f(x+1) - f(x) = (aryが表す多項式) を満たすf(x)を求める
def A(ary)
  a = []
  ary.size.downto(1){|i|
    b = ary[0] / i.to_r
    a << b
    (1..i).each{|j| ary[j - 1] -= b * ncr(i, j)}
    ary = ary[1..-1]
  }
  a
end

def B(n)
  # f(x+1) - f(x) = (1+x)^n
  (0..n).each{|i| p A((0..i).map{|j| ncr(i, j)})}
end

B(10)

出力結果
[(1/1)]
[(1/2), (1/2)]
[(1/3), (1/2), (1/6)]
[(1/4), (1/2), (1/4), (0/1)]
[(1/5), (1/2), (1/3), (0/1), (-1/30)]
[(1/6), (1/2), (5/12), (0/1), (-1/12), (0/1)]
[(1/7), (1/2), (1/2), (0/1), (-1/6), (0/1), (1/42)]
[(1/8), (1/2), (7/12), (0/1), (-7/24), (0/1), (1/12), (0/1)]
[(1/9), (1/2), (2/3), (0/1), (-7/15), (0/1), (2/9), (0/1), (-1/30)]
[(1/10), (1/2), (3/4), (0/1), (-7/10), (0/1), (1/2), (0/1), (-3/20), (0/1)]
[(1/11), (1/2), (5/6), (0/1), (-1/1), (0/1), (1/1), (0/1), (-1/2), (0/1), (5/66)]

2023年1月27日金曜日

230127

Ruby


Expansion of Product_{j=1..k} theta_3(q^j)

つい最近質問を受けたので、k<=16 のとき出力してみた。
コードは181013分とあまり変わらない。

def s(k, n)
  s = 0
  (1..n).each{|i| s += i if n % i == 0 && i % k == 0}
  s
end

def A(ary, n)
  a_ary = [1]
  a = [0] + (1..n).map{|i| ary.inject(0){|s, j| s + j[1] * s(j[0], i)}}
  (1..n).each{|i| a_ary << (1..i).inject(0){|s, j| s - a[j] * a_ary[-j]} / i}
  a_ary
end

def B(k, n)
  ary = []
  (1..k).each{|i|
    ary << [2 * i, 5]
    ary << [i, -2]
    ary << [4 * i, -2]
  }
  A(ary, n)
end

n = 16
(0..n).each{|i| p [i, B(i, 20)]}

出力結果
[0, [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
[1, [1, 2, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0]]
[2, [1, 2, 2, 4, 2, 0, 4, 0, 2, 6, 0, 4, 4, 0, 0, 0, 2, 4, 6, 4, 0]]
[3, [1, 2, 2, 6, 6, 4, 12, 4, 2, 14, 0, 8, 18, 4, 12, 16, 6, 4, 14, 8, 12]]
[4, [1, 2, 2, 6, 8, 8, 16, 16, 14, 22, 24, 16, 22, 32, 12, 32, 44, 16, 42, 52, 36]]
[5, [1, 2, 2, 6, 8, 10, 20, 20, 26, 38, 40, 48, 54, 60, 56, 80, 76, 60, 106, 76, 102]]
[6, [1, 2, 2, 6, 8, 10, 22, 24, 30, 50, 56, 68, 94, 100, 108, 156, 156, 156, 214, 196, 214]]
[7, [1, 2, 2, 6, 8, 10, 22, 26, 34, 54, 68, 84, 114, 144, 156, 216, 256, 268, 350, 384, 414]]
[8, [1, 2, 2, 6, 8, 10, 22, 26, 36, 58, 72, 96, 130, 164, 200, 268, 324, 376, 486, 552, 642]]
[9, [1, 2, 2, 6, 8, 10, 22, 26, 36, 60, 76, 100, 142, 180, 220, 312, 376, 448, 602, 696, 834]]
[10, [1, 2, 2, 6, 8, 10, 22, 26, 36, 60, 78, 104, 146, 192, 236, 332, 420, 500, 674, 816, 986]]
[11, [1, 2, 2, 6, 8, 10, 22, 26, 36, 60, 78, 106, 150, 196, 248, 348, 440, 544, 726, 888, 1106]]
[12, [1, 2, 2, 6, 8, 10, 22, 26, 36, 60, 78, 106, 152, 200, 252, 360, 456, 564, 770, 940, 1178]]
[13, [1, 2, 2, 6, 8, 10, 22, 26, 36, 60, 78, 106, 152, 202, 256, 364, 468, 580, 790, 984, 1230]]
[14, [1, 2, 2, 6, 8, 10, 22, 26, 36, 60, 78, 106, 152, 202, 258, 368, 472, 592, 806, 1004, 1274]]
[15, [1, 2, 2, 6, 8, 10, 22, 26, 36, 60, 78, 106, 152, 202, 258, 370, 476, 596, 818, 1020, 1294]]
[16, [1, 2, 2, 6, 8, 10, 22, 26, 36, 60, 78, 106, 152, 202, 258, 370, 478, 600, 822, 1032, 1310]]

2022年12月24日土曜日

221224

Python


正多面体内のHamiltonian pathの数について

この記事は
日曜数学 Advent Calendar 2022
の12/24 分として書いております。

正多面体は正四面体、正六面体、正八面体、正十二面体、正二十面体の5種類あります。
Hamiltonian cycleの数は
にある通り、それぞれ
6, 12, 32, 60, 2560
ある。
一方上記リンクによれば、Hamiltonian pathの数は
24, 144, 240, ?, ?
となっている。

この?の部分も含めて、graphillionを用いれば求めることができる。
各多面体をGraph Setを用意し、計算させるだけである。
コードと出力結果は以下の通りです。

# Using graphillion
from graphillion import GraphSet


def make_tetrahedral_graph():
    return [
        (1, 2), (1, 3), (1, 4),
        (2, 3), (3, 4), (4, 2),
    ]


def make_cubical_graph():
    return [
        (1, 2), (2, 3), (3, 4), (4, 1),
        (5, 6), (6, 7), (7, 8), (8, 5),
        (1, 5), (2, 6), (3, 7), (4, 8),
    ]


def make_octahedral_graph():
    return [
        (1, 2), (2, 3), (3, 1),
        (4, 5), (5, 6), (6, 4),
        (4, 3), (4, 1),
        (5, 1), (5, 2),
        (6, 2), (6, 3),
    ]


def make_dodecahedral_graph():
    return [
        ( 1,  2), ( 2,  3), ( 3,  4), ( 4,  5), ( 5,  1),
        ( 6,  1), ( 7,  2), ( 8,  3), ( 9,  4), (10,  5),
        (11, 10), (11,  6),
        (12,  6), (12,  7),
        (13,  7), (13,  8),
        (14,  8), (14,  9),
        (15,  9), (15, 10),
        (16, 11), (17, 12), (18, 13), (19, 14), (20, 15),
        (16, 17), (17, 18), (18, 19), (19, 20), (20, 16),
    ]


def make_icosahedral_graph():
    return [
        ( 1,  2), ( 2,  3), ( 3,  1),
        ( 4,  3), ( 4,  1),
        ( 5,  4), ( 5,  1), ( 5,  6),
        ( 6,  1), ( 6,  2),
        ( 7,  6), ( 7,  2), ( 7,  8),
        ( 8,  2), ( 8,  3),
        ( 9,  8), ( 9,  3), ( 9,  4),
        (10, 11), (11, 12), (12, 10),
        (10,  9), (10,  4), (10,  5),
        (11,  5), (11,  6), (11,  7),
        (12,  7), (12,  8), (12,  9),
    ]


def make_universe(n):
    if n == 4:
        return make_tetrahedral_graph()
    elif n == 6:
        return make_cubical_graph()
    elif n == 8:
        return make_octahedral_graph()
    elif n == 12:
        return make_dodecahedral_graph()
    elif n == 20:
        return make_icosahedral_graph()


def directed_Hamiltonian_cycle(n):
    universe = make_universe(n)
    GraphSet.set_universe(universe)
    cycles = GraphSet.cycles(is_hamilton=True)
    return 2 * cycles.len()


def directed_Hamiltonian_path(n):
    universe = make_universe(n)
    # V-E+F=2
    v = len(universe) + 2 - n
    GraphSet.set_universe(universe)
    s = 0
    for goal in range(1, v + 1):
        paths = GraphSet.paths(1, goal, is_hamilton=True)
        s += paths.len()
    return v * s


# A053016
platonic_graph_info = [4, 6, 8, 12, 20]

# A268283
print([directed_Hamiltonian_cycle(i) for i in platonic_graph_info])

# A358960
print([directed_Hamiltonian_path(i) for i in platonic_graph_info])

出力結果
[6, 12, 32, 60, 2560]
[24, 144, 240, 3240, 75840]

2022年11月19日土曜日

221119

Ruby


A030717

出力してみた。

def A(n)
  p ary = [1]
  (n - 1).times{
    p a = ary.uniq.sort.map{|i| ary.count(i)}
    ary += a
  }
  ary
end

A(20)

出力結果
[1]
[1]
[2]
[2, 1]
[3, 2]
[3, 3, 1]
[4, 3, 3]
[4, 3, 5, 1]
[5, 3, 6, 2, 1]
[6, 4, 7, 2, 2, 1]
[7, 6, 7, 3, 2, 2, 1]
[8, 8, 8, 3, 2, 3, 3]
[8, 9, 11, 3, 2, 3, 3, 3]
[8, 10, 15, 3, 2, 3, 3, 4, 1, 1]
[10, 11, 18, 4, 2, 3, 3, 5, 1, 1, 1, 1]
[14, 12, 20, 5, 3, 3, 3, 5, 1, 2, 2, 1, 1]
[17, 14, 23, 5, 5, 3, 3, 5, 1, 2, 2, 1, 1, 1, 1, 1]
[23, 16, 25, 5, 8, 3, 3, 5, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1]
[30, 19, 27, 5, 10, 3, 3, 6, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1]
[38, 23, 29, 5, 11, 4, 3, 6, 1, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1]

2022年10月2日日曜日

221002

PARI


A357392, A357393等

出力してみた。

A(n) = my(N=15, x='x+O('x^N)); sum(k=1, N, binomial(n*k, k)*x^k/(n*k));
B(n) = exp(A(n));
C(n) = B(n)-x*exp(n*A(n));

for(n=1, 5, print(Vec(serlaplace(A(n)))))
for(n=1, 5, print(Vec(B(n))))
for(n=1, 5, print(C(n)))

出力結果
[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600, 6227020800]
[1, 3, 20, 210, 3024, 55440, 1235520, 32432400, 980179200, 33522128640, 1279935820800, 53970627110400, 2490952020480000, 124903451312640000]
[1, 5, 56, 990, 24024, 742560, 27907200, 1235591280, 62990928000, 3634245014400, 234102016512000, 16654322805120000, 1296884927852236800, 109720581991308288000]
[1, 7, 110, 2730, 93024, 4037880, 213127200, 13253058000, 948964262400, 76899763100160, 6957624460550400, 695236239163065600, 76043127767523840000, 9036546669251861760000]
[1, 9, 182, 5814, 255024, 14250600, 968330880, 77519922480, 7146019520640, 745520860465920, 86839771951296000, 11171585428619616000, 1573144097507348889600, 240679032790296606105600]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440]
[1, 1, 3, 12, 55, 273, 1428, 7752, 43263, 246675, 1430715, 8414640, 50067108, 300830572, 1822766520]
[1, 1, 4, 22, 140, 969, 7084, 53820, 420732, 3362260, 27343888, 225568798, 1882933364, 15875338990, 134993766600]
[1, 1, 5, 35, 285, 2530, 23751, 231880, 2330445, 23950355, 250543370, 2658968130, 28558343775, 309831575760, 3390416787880]
1 + O(x^15)
1 + O(x^15)
1 + O(x^15)
1 + O(x^15)
1 + O(x^15)