package Ġcom . ae . a oc 2 0 2 0 . day 0 1 Ċ Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . boot . CommandLine Runner Ċ import Ġorg . springframework . boot . autoconfigure . SpringBoot Application Ċ import Ġorg . springframework . boot . run Application Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . InputStream Reader ĊĊ Ċ @ SpringBoot Application Ċ class ĠA oc 2 0 2 0 Application Day 0 1 Ġ: ĠCommandLine Runner Ġ{ ĊĊ ĉ private Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( java Class ) ĊĊ ĉ private Ġfun Ġsolve 1 ( total File : ĠString ) Ġ{ Ċĉ ĉ val Ġbuffered Reader Ġ= ĠBufferedReader ( InputStream Reader ( A oc 2 0 2 0 Application Day 0 1 :: class . java . getResource AsStream ("/ $ total File "))) ĊĊĉ ĉ buffered Reader . use Lines Ġ{ Ċĉĉ ĉ val Ġnumbers Ġ= Ġit . map Ġ{ Ġit . toInt () Ġ}. toList () Ċĉĉ ĉ val Ġpairs Ġ= Ġsequence Ġ{ Ċĉĉĉ ĉ for Ġ( i Ġin Ġ 0 Ġuntil Ġnumbers . count ()) Ġ{ Ċĉĉĉĉ ĉ for Ġ( j Ġin Ġ( i Ġ+ Ġ 1 ) Ġuntil Ġnumbers . count ()) Ġ{ Ċĉĉĉĉĉ ĉ yield ( Pair ( numbers [ i ], Ġnumbers [ j ])) Ċĉĉĉĉ ĉ } Ċĉĉĉ ĉ } Ċĉĉ ĉ }. toList () Ċĉĉ ĉ pairs . filter Ġ{ Ġpair Ġ-> Ġpair . first Ġ+ Ġ Ġpair . second Ġ== ĠĠ 2 0 2 0 } Ċĉĉĉĉĉ Ġ. forEach Ġ{ pair Ġ-> Ċĉĉĉ ĉ logger . info ("$ pair Ġsums Ġto Ġ 2 0 2 0 Ġand Ġmultiply Ġto Ġ${ pair . first Ġ* Ġpair . second } Ġ... ") Ċĉĉ ĉ } Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ private Ġfun Ġsolve 2 ( total File : ĠString ) Ġ{ Ċĉ ĉ val Ġbuffered Reader Ġ= ĠBufferedReader ( InputStream Reader ( A oc 2 0 2 0 Application Day 0 1 :: class . java . getResource AsStream ("/ $ total File "))) ĊĊĉ ĉ buffered Reader . use Lines Ġ{ Ċĉĉ ĉ val Ġnumbers Ġ= Ġit . map Ġ{ Ġit . toInt () Ġ}. toList () Ċĉĉ ĉ val Ġpairs Ġ= Ġsequence Ġ{ Ċĉĉĉ ĉ for Ġ( i Ġin Ġ 0 Ġuntil Ġnumbers . count ()) Ġ{ Ċĉĉĉĉ ĉ for Ġ( j Ġin Ġ( i Ġ+ Ġ 1 ) Ġuntil Ġnumbers . count ()) Ġ{ Ċĉĉĉĉĉ ĉ for Ġ( k Ġin Ġ( j Ġ+ Ġ 1 ) Ġuntil Ġnumbers . count () Ġ) Ġ{ Ċĉĉĉĉĉĉ ĉ yield ( Triple ( numbers [ i ], Ġnumbers [ j ], Ġnumbers [ k ])) Ċĉĉĉĉĉ ĉ } Ċĉĉĉĉ ĉ } Ċĉĉĉ ĉ } Ċĉĉ ĉ }. toList () Ċĉĉ ĉ pairs . filter Ġ{ Ġtriple Ġ-> Ġtriple . first Ġ+ Ġ Ġtriple . second Ġ+ Ġ Ġtriple . third Ġ== ĠĠ 2 0 2 0 } Ċĉĉĉĉĉĉ ĉ . forEach Ġ{ triple Ġ-> Ċĉĉĉĉĉĉĉ ĉ val Ġmultiple Ġ= Ġtriple . first Ġ* Ġtriple . second Ġ* Ġtriple . third Ċĉĉĉĉĉĉĉ ĉ logger . info ("$ triple Ġsums Ġto Ġ 2 0 2 0 Ġand Ġmultiply Ġto Ġ$ multiple Ġ... ") Ċĉĉĉĉĉĉ ĉ } Ċĉ ĉ } Ċ ĉ } ĊĊĊ ĉ override Ġfun Ġrun ( var arg Ġargs : ĠString ?) Ġ{ Ċĉ ĉ solve 1 ( args [ 0 ] !! ) Ċĉ ĉ solve 2 ( args [ 0 ] !! ) Ċ ĉ } Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ Ċ ĉ run Application < A oc 2 0 2 0 Application Day 0 1 >(* args ) Ċ } Ċ