import Ġjava . io . File Ċ Ċ actual Ġobject ĠResources Ġ{ ĊĠĠĠ Ġprivate Ġval Ġanswer Dir Ġby Ġlazy Ġ{ ĠgetResource Dir (" answers ") Ġ} ĊĠĠĠ Ġprivate Ġval Ġinput Dir Ġby Ġlazy Ġ{ ĠgetResource Dir (" inputs ") Ġ} ĊĊĠĠĠ Ġactual Ġfun Ġread Answer File ( year : ĠInt , Ġday : ĠInt , Ġpart : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠFile ( answer Dir , Ġ"$ year / day ${ day } p $ part ") ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( path . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath . read Text (). trim () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġfun Ġread Input File ( year : ĠInt , Ġday : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠFile ( input Dir , Ġ"$ year / day ${ day }") ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( path . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath . read Text (). trim () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" No Ġinput Ġfile Ġfound Ġfor Ġ$ year /$ day ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetResource Dir ( name : ĠString ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġworking Dir Ġ= ĠFile ( System . getProperty (" user . dir ")) ĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( working Dir . parent File , Ġ" resources /$ name ") ĊĠĠĠ Ġ} Ċ }