package Ġcom . m ant ono . a oc Ċ Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġjava . io . File Ċ import Ġjava . net . URL Ċ import Ġjava . nio . file . Files Ċ import Ġjava . time . LocalDateTime Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġday : ĠInt Ġ= Ġday ( args ) ĊĠĠĠ Ġprintln (" Use Ġinputs Ġfor Ġproblem Ġfor Ġday Ġ$ day ") ĊĠĠĠ Ġval Ġfile : ĠFile Ġ= Ġinput File ( day ) ĊĠĠĠ Ġval Ġinput Ġ= ĠString ( Files . read All Bytes ( file . to Path ())) ĊĠĠĠ Ġval Ġresult Ġ= Ġfind Function ( day ). invoke ( null , Ġinput ) ĊĠĠĠ Ġprintln ( result ) Ċ } Ċ Ċ fun Ġday ( args : ĠArray < String >): ĠInt Ġ{ ĊĠĠĠ Ġval Ġargs Day : ĠInt ? Ġ= Ġargs . as Sequence (). first OrNull ()?. toInt () ĊĠĠĠ Ġval Ġtoday : ĠInt Ġ= ĠLocalDateTime . now (). day OfMonth ĊĠĠĠ Ġreturn Ġargs Day Ġ?: Ġtoday Ċ } Ċ Ċ private Ġconst Ġval ĠINPUT S _ STORAGE : ĠString Ġ= Ġ" src / main / resources / inputs " Ċ private Ġconst Ġval ĠINPUT S _ URL : ĠString Ġ= Ġ" https :// ad vent of code . com / 2 0 1 9 / day " Ċ Ċ /** Ċ Ġ* ĠLoad Ġthe Ġfile Ġcontaining Ġthe Ġday 's Ġinput Ġdata , Ġand Ġdownload Ġit Ġfirst Ġif Ċ Ġ* Ġrequired Ċ Ġ*/ Ċ fun Ġinput File ( day : ĠInt ): ĠFile Ġ{ ĊĠĠĠ Ġval Ġtarget Ġ= ĠFile ("$ INPUT S _ STORAGE /$ day ") ĊĠĠĠ Ġif (! target . exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġdownload Input ( day , Ġtarget ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtarget Ċ } Ċ Ċ /** Ċ Ġ* ĠDownload Ġthe Ġinputs Ġfor Ġthe Ġday 's Ġassignment Ċ Ġ*/ Ċ private Ġfun Ġdownload Input ( day : ĠInt , Ġtarget : ĠFile ) Ġ{ ĊĠĠĠ Ġval Ġfull Url Ġ= ĠURL ("$ INPUT S _ URL /$ day / input ") ĊĠĠĠ Ġval Ġclient Ġ= ĠOk HttpClient () ĊĠĠĠ Ġval Ġsession : ĠString Ġ= ĠSystem . getenv (). getValue (" A OC _ SESSION ") ĊĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠ Ġ. url ( full Url ) ĊĠĠĠĠĠĠĠ Ġ. add Header (" Cookie ", Ġ" session =$ session ") ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġresponse Ġ= Ġclient . new Call ( request ). execute () ĊĠĠĠ Ġval Ġcontent : ĠString Ġ= Ġresponse . body !!. string () ĊĠĠĠ Ġwith ( target ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Text ( content ) ĊĠĠĠ Ġ} Ċ }