package Ġagents . analy se Ċ Ċ import Ġmath . Vec 2 d Ċ import Ġutilities . JE asy Frame Ċ import Ġutilities . Stat Summary Ċ import Ġviews . Easy Plot Ċ import Ġviews . Poly Draw Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠSt ick To Plan Rate Ġ{ ĊĠĠĠ Ġval Ġsequences Ġ= ĠArrayList < IntArray >() ĊĊĠĠĠ Ġfun Ġadd Sequence ( seq : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsequences . add ( seq ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreport ( n Actions : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġpass Ġn Actions Ġfor Ġthe Ġbaseline Ġrandom Ġmatch Ġexpectation ĊĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin Ġsequences ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( Arrays . toString ( s )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln () ĊĊĠĠĠĠĠĠĠ Ġval Ġhistory Ġ= Ġanaly se () ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , ss ) Ġin Ġhistory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġprintln ("$ key \ t Ġ${ ss . n () }\ t Ġ${ ss . mean () }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdat Ġ= ĠArrayList < Stat Summary >() ĊĠĠĠĠĠĠĠ Ġfor Ġ(( k , v ) Ġin Ġhistory ) Ġdat . add ( v ) ĊĠĠĠĠĠĠĠ Ġeasy Plot ( dat , Ġ 1 . 0 Ġ/ Ġn Actions . toDouble ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġnow Ġshow Ġthe Ġentire Ġhistory Ċ Ċ // ĠĠĠĠĠĠĠ Ġval Ġep Ġ= ĠEasy Plot () Ċ // ĠĠĠĠĠĠĠ ĠJ Easy Frame ( ep . view , Ġ" Individual ĠTr aces ") Ċ // ĠĠĠĠĠĠĠ Ġep . update ( arrays ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġremember , Ġwe 're Ġgoing Ġto Ġcount Ġthe Ġnumber Ġof Ġtimes Ġthat Ġwe Ġstuck Ġto Ġthe Ġplan ĊĠĠĠ Ġ// Ġn Ġsteps Ġahead ĊĠĠĠ Ġ// Ġthe Ġm - th Ġsequence Ġis Ġthe Ġplan Ġmade Ġat Ġstep Ġm Ġin Ġthe Ġreal Ġgame ĊĊĠĠĠ Ġval Ġarrays Ġ= ĠArrayList < Double Array >() ĊĊĠĠĠ Ġfun Ġanaly se () Ġ: ĠTreeMap < Int , Stat Summary > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġbut Ġdo Ġwhat Ġwith Ġit ? ĊĠĠĠĠĠĠĠ Ġval Ġhistory Ġ= ĠTreeMap < Int , Stat Summary >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsequences . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseq Ġ= Ġsequences [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġthe Ġaction Ġthat Ġwas Ġactually Ġtaken ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġseq [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeql Ġ= ĠArrayList < Double >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil ĠMath . min ( i , Ġseq . size )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnow Ġwe 're Ġgoing Ġback Ġthrough Ġprevious Ġsequences ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġand Ġchecking Ġwhether Ġthe Ġaction Ġtaken Ġwas Ġthe Ġone Ġwe Ġplanned Ġto Ġtake Ġas Ġa Ġfuture Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( history [ j ] Ġ== Ġnull ) Ġhistory [ j ] Ġ= ĠStat Summary () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsame Score Ġ= Ġif Ġ( action Ġ== Ġsequences [ i - j ][ j ] Ġ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhistory [ j ]?. add ( Ġsame Score Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeql . add ( same Score . toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarrays . add ( eql . toDouble Array ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġhistory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġeasy Plot ( data : ĠArrayList < Stat Summary >, Ġguess Rate : ĠDouble ): ĠEasy Plot Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġep Ġ= ĠEasy Plot () ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠDouble Array ( data . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdata . size ) Ġa [ i ] Ġ= Ġdata [ i ]. mean () ĊĠĠĠĠĠĠĠ ĠJ Easy Frame ( ep . view , Ġ" Data ") ĊĠĠĠĠĠĠĠ Ġval Ġdat Ġ= ĠArrayList < Double Array >() ĊĠĠĠĠĠĠĠ Ġdat . add ( a ) ĊĠĠĠĠĠĠĠ Ġep . update ( dat , Ġs sy Ġ= ĠStat Summary (). add ( 0 . 0 ). add ( 1 . 0 )) ĊĠĠĠĠĠĠĠ Ġval Ġbase Ġ= ĠArrayList < Vec 2 d >() ĊĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġep . view . height . toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġgy Ġ= Ġh Ġ- Ġ( h Ġ* Ġguess Rate ) ĊĠĠĠĠĠĠĠ Ġbase . add ( Vec 2 d ( 0 . 0 , Ġgy )) ĊĠĠĠĠĠĠĠ Ġbase . add ( Vec 2 d ( ep . view . width . toDouble (), Ġgy )) ĊĠĠĠĠĠĠĠ Ġep . view . drawable . add ( Poly Draw ( base )) ĊĠĠĠĠĠĠĠ Ġreturn Ġep ĊĠĠĠ Ġ} Ċ } Ċ