2016年9月3日土曜日

160903(4)

Ruby


A101879 の一般化

一般化してみた。

def b(m, n)
  b = Array.new(m, 1)
  ary = [1]
  while ary.size < n + 1
    i = b[1..-1].inject(:*) + 1
    break if i % b[0] > 0
    b = *b[1..-1], i / b[0]
    ary << b[0]
  end
  ary
end

def A0(m, n)
  b = b(m, n + m - 2)
  (0..n).map{|i| b[i..i + m - 2].inject(:*)}
end

def A1(a, n)
  ary = [1]
  while ary.size < n + 1
    i = a[1..-1].inject(1){|s, i| s *= i + 1}
    break if i % a[0] > 0
    a = *a[1..-1], i / a[0]
    ary << a[0]
  end
  ary
end

n = 13
# A007018
a =
[1,2,6,42,1806,3263442,10650056950806,
 113423713055421844361000442,
 12864938683278671740537145998360961546653259485195806]
a = [1] + a
(2..a.size).each{|i|
  p b(i, n)
  p ary = A0(i, n)
  p ary == A1(a[0..i - 1], n)
}

出力結果
[1, 1, 2, 3, 2, 1, 1, 2, 3, 2, 1, 1, 2, 3]
[1, 1, 2, 3, 2, 1, 1, 2, 3, 2, 1, 1, 2, 3]
true
[1, 1, 1, 2, 3, 7, 11, 26, 41, 97, 153, 362, 571, 1351]
[1, 1, 2, 6, 21, 77, 286, 1066, 3977, 14841, 55386, 206702, 771421, 2878981]
true
[1, 1, 1, 1, 2, 3, 7, 43, 452, 45351, 125920291, 60027819184831, 758397193749171922281611, 126403219004744354228963383975713263866432]
[1, 1, 2, 6, 42, 903, 136052, 881442036, 2581196224947732, 342795531574625708871288171, 5732512385084161208637718426682572229606557631, 5754497648510061274107897581706624823818534711463525598519384262130236399970112, 4380932376399592519937861001189307683246461000658965508298425747079642154395549605744686500672674729178514601796567365465529776606851136, 421583704756859502699102937824081584491009874528858104817454737731908251092602378757077999125816494885288896113992580311824578700076966462407499059665776171518655407683340276653831243706050178352020997689570933942825714315837330745152]
true
[1, 1, 1, 1, 1, 2, 3, 7, 43, 1807, 815861, 147917502976, 1339566593057489572791, 6793440021984612817314824762112917427331]
[1, 1, 2, 6, 42, 1806, 1631721, 443752508927, 9376966151402427009536, 292117920945338351144537464770855449375232, 1098221126335915194898500730834145753769059346709551018699709189743396297017856, 818097869957529708734993658500494546021496824402218665739659401571119075151010017043681072884656540035381892125656332919682908486048401723298397696, 5545935107760203074819319722678889661161976213644174549239346235866056370368456201398459704313281086591925079558835980072515981855269821221662278093625120333753428539953250455170172104082082595327105153166735196348837680546997556153608264478548690329601687030060763720508231167, 155226438145822520818678409072130920781498739403992827058231526439786947412735505344945498381164335295173120586634526736827278634105432590436900425653193780521054721937338726987527627370333351011400406618463783922571399127885523135886888202843025222312842321432442450868673908693564169713053627322025351127341112960878219246562809236927826679078720327474758346306209100718227004804608357876236230238479753408153208043867482469892964379873969693510731392631670400626944121378069741919864743499834100569148974581297161521691]
true
[1, 1, 1, 1, 1, 1, 2, 3, 7, 43, 1807, 3263443, 2662514237702, 1575329347992117978027101]
[1, 1, 2, 6, 42, 1806, 3263442, 5325028475403, 4725988043976353934081302, 1063569666276544946969607553063240542259270480786, 3758074534962130198808583197407040181272336109478407357806649206393056931545843437784926463982, 181762451066663635654566631433969046774222264873951264535846131708830677576704128811806769886381600252404639423950260790769961676493253254742198357899547912512758687996789868406724106, 5602400561732335114311429849845400406361718467791399004591753748238526464855034067650367029983753754898195895790113724839677804012471459342314840097895519258528265061651001247540187922867145038828356975849513091768944702445707315077453053961969726878964747716414705074554778670150496061197008333051812815422441740729040015182727267725322965922042275030342, 3612271156341106335731753360442154335386432807598485633785859014524418907029455587595744216371004499836990858456818687137785020586593078706905184643143493318395932628612865534628523698287254073452701637526613624339830790060153929555002510644400437008004571253895972433320021998956434441593891384923492597413562727324009868150358026499649799084126249945650145180621079737761562040829877945087476956773651375244883228833301261081953886736562201814661425330830597097365270622499336566407090448765412067705531677606402201377721599307740006895321344251840085765838469319576021421391427437533581153374314559987717541183388531617852041175863712821361094581181959976073695473209127134335404963758621]
true
[1, 1, 1, 1, 1, 1, 1, 2, 3, 7, 43, 1807, 3263443, 10650056950807]
[1, 1, 2, 6, 42, 1806, 3263442, 10650056950806, 56711856527710922180500221, 536039111803277989189047754657694775086462660258177, 13682758542040340955561193647719693071520034439743571685704159363784511323473941769716477470045505786, 621986316677003046088359989922927337516979291033010024899508375256254756395165115546047773268817021247586182115572420806231742849415941291110434240223891452496610595547854119567778334105751118288982, 4978918908809733691624143906009388268468343864896686190480914546255032374527733034531593811219995974956974356831152533073259444635719116059826498350884048754792834560588449881498784724977232436560066988085522099045089227949727562605327912220740659357414660038051865104023838567148778783919866011945268835124247823357146638056111841101317400733650351552155862936481299089189686486407755349106, 4203740722580868477425329772532916812115660340292798418703333774333033012682351160366899096259132079319615869343967944367812847448496164742805726630679926951129131623030120721701281626384934038580176316837741502223080338994260161832034579954308577393319345477583593077564628479254267202579472636320994709698589058517942724994889903498919763601411461156970133185989844434340140627577435465136218246224293862008724350478326176448626376449512167173755641490312064946112814070264064525539974082181886230409283591839626391651235839928954525754587467556305556243926332031367601467587941842759055238665020770441650475186489272046358369663767896049334839559613773996576161946168196809146074325078167365877020986247530621232340612292170264823327660617424601810240911642296219655342]
true
[1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 7, 43, 1807, 3263443]
[1, 1, 2, 6, 42, 1806, 3263442, 10650056950806, 113423713055421844361000442, 6432469341639335870268572999180480773326629742597903, 6896110305188331841602841476851632500729714696099062946116253001883650382363266882078063949374880432552, 2264587492444033682490925454007497212400327742028845807408490984752267413385190167983750371945019969673974173803435051291318510452404865167497951157462709567457807616276906095919992746966092302654738174536, 17037729272205834920227456094638042926761621560280492587077193377673066153782477791815585847320889787813108269867998695154356829841242622755194598644633882094933057797769882239503365572869185891027080162452454170436699918223177767499812843289995485829198571357201300658648662586444463282419280481139718126743901919504195729390340730949336198578664629879518535927154950284342071061322423179974130370060920232, 3735913550057007879887782592473762443859106934429616104927447337898081928479135625176384440845986597683232027653304505045775295062554417642752842397616356925656219834959255710849099426770311155337984490768647081405606528404892939580534104933259021378005425960383194381768304984932302200897369274637785746333238205553361781467752343156237685432701035463078385969351259814193234554474295671179064176125798713304898500794040874215952892179636756636236136988635724706376821888407676262370981015705925994434155163870383503607577572052669638321370708229958320204411242030648119455260799883317432395191932770440103644433993508247363460292729475467726069527709334951989287646651849383674030842981867160821511960719831654768528173561379140992230812336894370523309051364670488064724981151274629579170971187695567942856]
true
[1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 7, 43, 1807]
[1, 1, 2, 6, 42, 1806, 3263442, 10650056950806, 113423713055421844361000442, 12864938683278671740537145998360961546653259485195806, 82753323662259982099234097722219590008756576353188748920925694383267934319786203404455994065868822592721, 1141352096191792975975426428819778595049765181982538109497806997567028834426124734763838266857601609788738093497138203738445268437573423740032141524256946768927163684313661097694012994227447515569718244129427, 62032600356257135537716463985143271939874680892338985050982505933231997208763246792635935419958642214575242011624677816590495765731085655767044051945239578988322721123919023462728362358932085371442491741197924702723963909780778544370766854685434777364008967805200049908905454074890296442840937221035012816477104358552013122924670422530787077727637037326816114873078802831238109149810887678672580440140574636737036, 12784197697538581059246004216440120114184668279672386171612643571480431452574630095600723614545285662052140484536349961339205758241390007702750488286543243118731146707956178855196542364524017079356417973192492903500035784447994847729782880750325097831479116939689905539144347337713963999782049453502292460540453351251991207591692178236910928259751186723777287221929598089659704802455939513154429572455577474430839732622705439687860515888975189901856330166089070646600243679171660629214222922805506104747619282920383910617009591352237820242916936469431932476188592832920632649615909156460655044383433926072771624952516516085106844763456492307151212270039241088293274325145292987434744506726030071125730731966046793310989959253671431553567132233978896728427091731710651088923324116111376629874897509139958722345082298855982732]
true
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 7, 43]
[1, 1, 2, 6, 42, 1806, 3263442, 10650056950806, 113423713055421844361000442, 12864938683278671740537145998360961546653259485195806, 165506647324519964198468195444439180017513152706377497841851388766535868639572406808911988131737645185442, 13696225154301515711705117145837343140597182183790457313973683970804346013113496817166059202291219317464774368641996184879243987153158865290376941714730172478205038517380665238008369727324914192770750106960403, 31264430579553596311009097848512209057696839169738848465695182990348926593216676383488511451659155676145544171141122586230078162594095056331365058060863584490599487454003584603611991511485914591659811850766005437056242005320726270147212063650767044637014621725503174138666268407759235509395033787643341032412336645929250556821153177556707352131006762140592395024009229303639374405315485879608480962069572629652813802, 46545934260177429624284539767619967563254502000786072122679787528828816953953160416552292205303472385821865149506385253288720289821989527638737775788813821530666750115570314878801006769788081210972033847525363153043089877727694797924036411136300336771445603813461471050973200391550947401854370443666060518873358975590970097172419639862026790846311225652848090398811875358094169651519288738390118960228101604530803321969606724912311725922448337756499637966734418346963869325271081622910481660416204449780768080477853611095487380811285585079786435766993688125139032572980668691596844866129962920167608031116040285341105950126114712951903086837536763210881921628425701962960617768308477521175577313430918681938961510035004612818763982096904565012465323637772378544606714787840038469792110463822931659759899185760171257189971701643286]
true

0 件のコメント:

コメントを投稿