Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RUBYでアッカーマン関数の計算をがんばる方法 / How to write ackerman...

MiZUP
November 05, 2019

RUBYでアッカーマン関数の計算をがんばる方法 / How to write ackermann function in ruby

MiZUP

November 05, 2019
Tweet

More Decks by MiZUP

Other Decks in Programming

Transcript

  1. アッカーマン関数について
 Ack(4,0) = 13
 Ack(4,1) = 65,533
 Ack(4,2) = 200352993040684646497907235156025575044782547556975141

    926501697371089405955631145308950613088093334810103823 434290726318182294938211881266886950636476154702916504 187191635158796634721944293092798208430910485599057015 931895963952486337236720300291696959215610876494888925
  2. 20035299304068464649790723515602557504478254755697514192650169737108940595563114530895061308809333481010382343429072631818229493821188126688695063647615470291650418719163515879663472194429309279820843091048559905701593189596395248633723672030029169695921561087649488892540908059114570376752085002066715637023661263 59747144807111774815880914135742720967190151836282560618091458852699826141425030123391108273603843767876449043205960379124490905707560314035076162562476031863793126484703743782954975613770981604614413308692118102485959152380195331030292162800160568670105651646750568038741529463842244845292537361442533614373729088 30379460127472495841486491593064725201515569392262818069165079638106413227530726714399815850881129262890113423778270556742108007006528396332215507783121428855167555407334510721311242739956298271976915005488390522380435704584819795639315785351001899200002414196370681355984046403947219401606951769015611972698233789 00176415171900511334663068981402193834814354263873065395529696913880241581618595611006403621197961018595348027871672001226046424923851113934004643516238675670787452594646709038865477434832178970127644555294090920219595857516229733335761595523948852975799540284719435299135437637059869289137571537400019863943324648 90052543106629669165243419174691389632476560289415199775477703138064781342309596190960654591300890188887588084733625956065444888501447335706058817090162108499714529568344061979690565469813631162053579369791403236328496233046421066136200220175787851857409162050489711781820400187282939943446186224328009837323764931 81478984811945271300744022076568091037620399920349202390662626449190916798546151577883906039772075927937885224129430101745808686226336928472585140303961555856433038545068865221311481363840838477826379045960718687672850976347127198889068047824323039471865052566097815072986114143030581692792497140916105941718535227 58875044775922183011587807019755357222414000195481020056617735897814995323252085897534635470077866904064290167638081617405504051176700936732028045493390279924918673065399316407204922384748152806191669009338057321208163507076343516698696250209690231628593500718741905791612415368975148082619048479465717366010058924 76655445840838334790544144817684255327207315586349347605137419779525190365032198020108764738368682531025183377533908861426184800374008082238104076468878471647552945326947661700424461063311238021134588694532200116564076327023074292426051582811070387018345324567635625951430032037432740780879056283663406965030844225 85596703927186946115851379338647569974856867007982396060439347885086164926030494506174341236582835214480672667684180708375486221140823657980296120002744132443843240233125740354501935242877643088023285085588608996277445816468085787511580701474376386797695504999164399828435729041537814343884730348426190338884149403 13661398542576355771053355802066221855770600825512888933322264362819848386132395706761914096385338323743437588308592337222846442879962456054769324289984326526773783731732880632107532112386806046747084280511664887090847702912081611049125555983223662448685566514026846412096949825905655192161881043412268389962830716

    54868525536914850299539675503954938371853405900096187489473992880432496373165753803673586710175783994818471798498246948060532081996066183434012476096639519778021441199752546704080608499344178256285092726523709898651539462193004607364507926212975917698293892367015170992091531567814439791248475706237804600009918293 32130688057004659145838720808801688744583555792625846512476308714856631352893416611749061752667149267217612833084527393646924458289257138887783905630048248379983969202922221548614590237347822268252163995744080172714414617955922617508388902007416992623830028228624928418267124340575142418856999427233160699871298688 27718206172144531425749440150661394631691976291815065797455262361912248480638900336690743659892263495641146655030629659601997206362026035219177767406687774635493753188995878662821254697971020657472327213729181446666594218720034745089428309115351892711142871083761592223802766053278233516615551493693757784666701457 17971901227117812780450240026384758788339396817962950690798817121690686929538248529830023476068454114178139110648560236549754227497231007615131870024053910510913817843721791422528587432098524957878034683703337818421444017138688124249984418618129271198533315382567321870421530631197748535214670955334626336610864667 33229240987984925669110951614361860154890974024191350962304361219612816595051866602203071561368473236466086890501426391390651506390819937885231836505989729912540447944342516677429965981184923315155527288327402835268844240875281128328998062591267369954624734154333350014723143061275039030739713525206933817384332295 07010490618675394331307847980156551303847581556852362180104196502555961819349863159132330360964619059902361126811960234418433633345949276319461017166529138237171823942992162725384617760656945422978770713831988170369645886898118632109769003557358846244648357062914530527571012788720279653644797240254054481327483917 94128826423835171949197209797145936887537198729130831738033911016128547415377377715951728084111627597186384924222802373441925469991983672192131287035585307966942713416391033882754318613643490100943197409047331014476299861725424423355612237435715825933382804986243892498222780715951762757847109475119033482241412025 18268871372819310425347819612844017647953150505711072297431456991522345164312184865757578652819756484350895838472292353455946452121583165775147129870822590929265563883665112068194383690411625266871004456024370420066370900194118555716047204464369693285006004692814050711906926139399390273553454556747031490388602202 46399482605017624319693056406663666260902070488874388989074981528654443818629173829010518208699363826618683039152732645812867828066013375000965933646251460917231803129303478774212346791184547913111098977946482169225056293999567934838016991574397005375421344858745868560472867510654233418938390991105864655951136460 61055156838541217459801807133163612573079611168343863767667307354583494789788316330129240800836356825939157113130978030516441716682518346573675934198084958947940983292500086389778563494693212473426103062713745077286156922596628573857905533240641849018451328284632709269753830867308409142247659474439973348130810986 39941737978965701068702673416196719659159958853783482298827012560584236558953969030647496558414798131099715754204325639577607048510088157829140825077773855979012912940730946278594450585941227319481275322515232480150346651904822896140664689030510251091623777044848623022948896671138055560795662073244937337402783676 73002030116152270089218435156521213792157482068593569207902145022771330999877294595969528170445821819560809658117027980626698912050615607423256868422713062950098644218534708104071289176469065508361299166947780238225027896678434891994096573617045867862425540069425166939792926247145249454088584227261537552600719043 36329196375777502176005195800693847635789586878489536872122898557806826518192703632099480155874455575175312736471421295536494084385586615208012115079075068553344489258693283859653013272046970694571546959353658571788894862333292465202735853188533370948455403336565356988172582528918056635488363743793348411845580168 33182767683464629199560551347003914787680864032262961664156066750815371064672310846196424753749055374480531822600271021640098058449752602303564003808347205314994117296573678506642140084269649710324191918212121320693976914392336837470922826773870813223668008692470349158684099115309831541206356612318750430546753698 32308279664574176208065931772656858416818379661061449634325441117069417002226578173583512598210807691019610522292638797450490192543119006205619065774524161919131875339840493439768233102984658933183730158095925228292068208622303325852801192664963144413164427730032377922747123306964171499455322610354751456312906688 54345426869788447742981777493710117614651624183616680254815296335308490849943006763654806102940094693750609845588558043970485914449584445079978497045583550685408745163316464118083123079704389849190506587586425810738422420591191941674182490452700288263983057950057341711487031187142834184499153456702915280104485145 17605530697144176136858238410278765932466268997841831962031226242117739147720800488357833356920453393595325456489702855858973550575123512953654050284208102278524877660357424636667314868027948605244578267362623085297826505711462484659591421027812278894144816399497388188462276824485162205181707672216986326570165431 69197426512300417573299044735376725368457927543654128265535818580468400693677186050200705472475484008055304249518544952672472613473181747421800785746934654471360369758841180294080396167469462885406791721386012254195038197045384172680063988206563287928395827085109199588394482977756471520261328710895261634177071516 42899487953564854553553148754978134009964854498635824847690590033116961303766127923464323129706628411307427046202032013368350385425360313636763575212604707425311209233402837482949453104727418969287275572027615272268283376741393425652653283068469997597097750005560889932685025049212884068274139881631540456490350775 87168007405568572402175868543905322813377070741583075626962831695568742406052772648585305061135638485196591896864959633556821697543762143077866593473045016482243296489127070989807667662567151726906205881554966638257382927418208227896068448822298339481667098403902428351430681376725346012600726926296946867275079434 61904399966189796119287505194423564026443032717373415912814960561683539881885694840453423114246135599252723300648816274667235237512343118934421188850850793581638489944875447563316892138696755743027379537852625423290248810471819390372206668947022042588368958409399984535609488699468338525796751618821594109816249187 41813364726965123980677561947912557957446471427868624053750576104204267149366084980238274680575982591331006919941904651906531171908926077949119217946407355129633864523035673345588033313197080365457184791550432654899559705862888286866606618021882248602144999973122164138170653480175510438406624412822803616648904257 37764095632648282525840766904560843949032529052633753231650908768133661424239830953080654966187938194912003391948949406513239881664208008839555494223709673484007264270570116508907519615537018626479745638118785617545711340047381076276301495330973517418065547911266093803431137853253288353335202493436597912934128485 49709468263290758301930726653377825593143311109638480539408592839889077962104798479196868765399874770959127887274758744398067798249682782722009264499445593804146087706419418104407582698056880389496546165879839046605876453418102899071942930217745199761044950431968415034555140448209289333786573630528306199900777487 26922998608279053171691876578860908941817057993404890218441559791092676862796597583952483926734883634745651687016166240642424241228961118010615682342539392180052483454723779219911228595914191877491793823340010078128326506710281781396029120914720100947878752551263372884222353869490067927664511634758101193875319657 24212147603828477477457170457861041738574791130190858387789015233434301300528279703858035981518292960030568261209195094373732545417105638388704752895056396102984364136093564163258940813798151169333861979733982167076100460798009601602482309694304380695662012321365014054958625061528258803302290838581247846931572032 32336018994694376477267218793768264318283826035645206994686302160488745284243635935586223335062359450028905585816112753417837504559361261308526408280512138731774902002495527387345859564051608305830537707325339715526204447054295735383611136775231699727402929416742044232481138750756313190782721888640533746942138421 69928862940479635305150560788126366206497231257579019598873041195626227343728900516561111094111745277965482790471250581999077498063821559376885546498822938985408291325129076478386322494781016753491693489288104203015610283386143827378160946341335383578340765314321417150655877547820252454780657301342277470616744241 96895261316427410469547462148375628829977180418678508454696561915090869587425118443583730659095146098045124740941137389992782249298336779601101538709612974970556630163730720275073475992294379239382442742118615823616131788639255309511718842129850830723825972914414225157940388301135908333165185823496722125962181250 70581137594955250227472746743698871319266707692991990844671612287388584575846227265733307537355728239516169641751986750126817454293237382941438248143771398619067166575729458078048205595118816871880752129718326364421553367877512747669407901170575098195750845635652173895441798750745238544552001335720333323798950743 93905312918212255259833790909463630202185353848854825062897715616963860712382771725621313460549401770413581731931763370136332252819127547191443450920711848838366818174263342949611870091503049165339464763717766439120798347494627397822171502090670190302469762151278521956142070806461631373236517853976292092025500288 96201297014137964003805573494926907353514596120867479654773369295877362863566014376796403843079686413856344780132826128458918489852804804884418082163942397401436290348166545811445436646003249061876303950235640204453074821024136689519664422133920075747912868380517515063466256939193774028351207566626082989049187728 78338521785227920457718469658552787904475621926639920084093020756739253637356283908298175779021532021064096173732835984940666521411981838108845154597728951645721318977979074919410131483685446396169046070301075968189337412175759881651270007612627891695104063158576375347874200702220510708912576123616580268068158584 99852631465878086616800733264676830206391697203064894405628195406190685242003053463156621891327309069687353181641094514288036605995220248248886711554429104721929134248346438705368508648749099178812670565665387191049721820042371492740164460943459845392536706132210616533085662021188968234005752675486101476993688738 20958455221157192347968688816085363161586288015039594941852948922707441082820716930338781808493620401825522227101098565344481720747075601924591559943107294957819787859057894005254012286751714251118435643718405356302418122547326609330271039796809106493927272268303541046763259135527968383770501985523462122285841055 71199217317179698043393177077507556270560478317798444476375602546370333692471142208155199736913719751632413027487121998634045482485245701185533426752647159783107312456634298052214554941562527240289153333543493412178620370072603152798707718724912344944771479095207347613854254853115527733010303424768358654960937223 24007154518129732692081058424090557725645803681462234493189708138897143299831347617799679712453782310703739151473878692119187566700319321281896803322696594459286210607438827416919465162267632540665070881071030394178860564893769816734159025925194611823642945652669372203155504700213598846292758012527715422016629954 86313032491231102962792372389976641680349714122652793190763632613681414551637665655983978848938173308266877990196288693229659737995193162118721545528739417024366988559388879331674453336311954151840408828381519342123412282003095031334105070476015998798547252919066522247931971544033179483683737322082188577334162385 64413807005419135302459439135025545318864547962522602517629283743304651023610575835145507394433396102162296754614157811271970017386114942795014112532806212547758105129720884652631580948066336876701473107335407177108766159358568140982129677307591973829734414452566887708553245708889583209938234321027182241147637327 91357568615421252849657903335093152776925505845644010552192644505312073756287744998163646332835816140330175813967359427327690448920361880386754955751806890058532927201493923500525845146706982628548257883267398735220457228239290207144822219885587102896991935873074277815159757620764023951243860202032596596250212578 34995771008562638611823381331850901468657706401067627861758377277289589274603940393033727187385053691295712671506689668849388088514294360996201296675907922508227531381284985152690293170026313632894209579757795932763553116206675348865131732387243874806351331451264488996758982881292548007642518658649024111112730135 71971813816025831785069322440079986566353715440884548663931817083957357807990597308390948818040609359591909074739609044101505163217496814121007657191774837673557510007336169223865374290794578032000423374528075661530429290144957806296341383835517835997647088513490048569736979652386958459945955920907090589568914511 41412684505462117945026611750166928260250950770778211950432617383223562437601776799362796099368975191394965033358507155418436456852616674243688920371037495328425927131610537834980740739158633817967658425258036737206469351248652238481341663808061505704829059890696451936440018597120425723007316410009916987524260377 36217776343062161674488493081092990100951797454156425120482208671458684925513244426677712786372821133153622430109182439124338021404624222334915355951689081628848798998827363044537243217428021575577796702166631704796972817248339284101564227450727177926939992974030807277039501358154514249404902653610582540937311465 31049433824843797186069372144446008267980024712294894057618538922034256083026970528766213773735943942241147070740729027254613073585417456914194464876243576823970657031841684675407334663462936739836200040414007140542776324801327422026853936988697876070095900486846506267713630709798210065572851013066010107806337433 44773073478653881742681230743766066643312775356466578603715192922768440458273283243808212841218776132042460464900801054731426749260826922155637405486241717031027919996942645620955619816454547662045022411449404749349832206807191352767986747813458203859570413466177937228534940031631599544093684089572533438702986717 82977037333280680176463950209002394193149911500910527682111951099906316615031158558283558260717941005252858361136996130344279017381178741206128818206202326384986151565645123004779296756361834576810504334176954306753804111392855379252924134733948105053202570872818630729115891133594201476187266429156403637192760230 62838406504254417423354645499870553187268879264241021473636986254637471597443549434438997300517425251108773578863909468120966734281525859199248576404880550713298142993599114632399191139599267525763590074465728101918058418073422277347213977232182317717169164001088261125490933611867805757223910181861685491085008852 72274374212086524852372456248697662245384819298671129452945515497030585919307198497105414181636968976131126744027009648667545934567059936995464500558921628047976365686133316563907395703272034389175415267500915011198856872708848195531676931681272892143031376818016445477367518353497857924276463354162433601125960252 10950161226411034608346564823559793427405686884922445874549377675212032470380303549115754483129527589193989368087632768543876955769488142284431199859570072752139317683783177033913042306095899913731468456901042209516196707050642025673387344611565527617599272715187766001023894476053978951694570880272873622512107622 40918100667008834747376051562855339435658437562712412444576516630640859395079475509204639322452025354636344447917556617259621871992791865754908578529500128402290350615149373101070094461510116137124237614267225417320559592027821293257259471464172249773213163818453265552796042705418714962365852524586489332541450626 42337885651464670604298564781968461593663288954299780722542264790400616019751975007460545150060291806638271497016110987951336633771378434416194053121445291855180136575558667615019373029691932076120009255065081583275508499340768797252369987023567931026804136745718956641431852679054717169962990363015545645090044802 789055701968328313630718997699153166679208958768572290600915472919636381673596673959975710326015571920237348580521128117458610065152598883843114511894880552129145775699146577530041384717124577965048175856395072895337539755822087777506072339445587895905719156733
 

  3. 一般項を求めて関数の内部処理に組み込む
 
 m の値を固定にすることで、 それぞれで一般項を求めることがで きる (今回は m = 3

    まで)
 ∴ m <= 3 の場合は再帰の必要がなくなる
 m
 一般項
 0
 n + 1
 1
 n + 2
 2
 2 * n + 3
 3
 2 ** (n + 3) - 3