package Ġcom . sc avi . brains queeze . ad vent of code Ċ Ċ import Ġcom . sc avi . brains queeze . ad vent of code . util . File Helper Ċ import Ġorg . junit . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠTest Day 1 8 Operation Order Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate A 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġday 1 8 Ġ= ĠDay 1 8 Operation Order () ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġday 1 8 . solve ( listOf (" 1 Ġ+ Ġ 2 Ġ* Ġ 3 Ġ+ Ġ 4 Ġ* Ġ 5 Ġ+ Ġ 6 "), Ġday 1 8 :: eval A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 7 1 , Ġoutput ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate A 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġday 1 8 Ġ= ĠDay 1 8 Operation Order () ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġday 1 8 . solve ( listOf (" 2 Ġ* Ġ 3 Ġ+ Ġ( 4 Ġ* Ġ 5 )"), Ġday 1 8 :: eval A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 6 , Ġoutput ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate A 3 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġday 1 8 Ġ= ĠDay 1 8 Operation Order () ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġday 1 8 . solve ( listOf (" 5 Ġ+ Ġ( 8 Ġ* Ġ 3 Ġ+ Ġ 9 Ġ+ Ġ 3 Ġ* Ġ 4 Ġ* Ġ 3 )"), Ġday 1 8 :: eval A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 3 7 , Ġoutput ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate B 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġday 1 8 Ġ= ĠDay 1 8 Operation Order () ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġday 1 8 . solve ( listOf (" 1 Ġ+ Ġ 2 Ġ* Ġ 3 Ġ+ Ġ 4 Ġ* Ġ 5 Ġ+ Ġ 6 "), Ġday 1 8 :: eval B ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 3 1 , Ġoutput ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate B 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġday 1 8 Ġ= ĠDay 1 8 Operation Order () ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġday 1 8 . solve ( listOf (" 2 Ġ* Ġ 3 Ġ+ Ġ( 4 Ġ* Ġ 5 )"), Ġday 1 8 :: eval B ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 6 , Ġoutput ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate B 3 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġday 1 8 Ġ= ĠDay 1 8 Operation Order () ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġday 1 8 . solve ( listOf (" 5 Ġ+ Ġ( 8 Ġ* Ġ 3 Ġ+ Ġ 9 Ġ+ Ġ 3 Ġ* Ġ 4 Ġ* Ġ 3 )"), Ġday 1 8 :: eval B ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 4 4 5 , Ġoutput ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate B 4 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġday 1 8 Ġ= ĠDay 1 8 Operation Order () ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġday 1 8 . solve ( listOf (" 5 Ġ* Ġ 9 Ġ* Ġ( 7 Ġ* Ġ 3 Ġ* Ġ 3 Ġ+ Ġ 9 Ġ* Ġ 3 Ġ+ Ġ( 8 Ġ+ Ġ 6 Ġ* Ġ 4 )) "), Ġday 1 8 :: eval B ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 6 9 0 6 0 , Ġoutput ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate B 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġday 1 8 Ġ= ĠDay 1 8 Operation Order () ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġday 1 8 . solve ( listOf (" (( 2 Ġ+ Ġ 4 Ġ* Ġ 9 ) Ġ* Ġ( 6 Ġ+ Ġ 9 Ġ* Ġ 8 Ġ+ Ġ 6 ) Ġ+ Ġ 6 ) Ġ+ Ġ 2 Ġ+ Ġ 4 Ġ* Ġ 2 "), Ġday 1 8 :: eval B ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 3 3 4 0 , Ġoutput ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsolve A () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠfilePath Ġ= ĠFile Helper . file For UnitTest (" input / ad vent of code / y 2 0 2 0 / Day 1 8 . txt ") ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠfilePath . reader (). read Lines () ĊĠĠĠĠĠĠĠ Ġval Ġday 1 8 Ġ= ĠDay 1 8 Operation Order () ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġday 1 8 . solve ( input , Ġday 1 8 :: eval A ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 3 1 0 7 6 6 4 5 6 2 6 , Ġoutput ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsolve B () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠfilePath Ġ= ĠFile Helper . file For UnitTest (" input / ad vent of code / y 2 0 2 0 / Day 1 8 . txt ") ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠfilePath . reader (). read Lines () ĊĠĠĠĠĠĠĠ Ġval Ġday 1 8 Ġ= ĠDay 1 8 Operation Order () ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġday 1 8 . solve ( input , Ġday 1 8 :: eval B ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 9 4 1 8 5 1 2 1 6 1 7 5 1 , Ġoutput ) ĊĠĠĠ Ġ} Ċ } Ċ