package Ġdays Ċ Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġorg . junit . jupiter . api . Nested Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġutil . Input Reader Ċ Ċ @ DisplayName (" Day Ġ 2 4 ") Ċ class ĠDay 2 4 Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` Program Ġshould Ġcompute Ġnegative Ġof ĠX `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinp Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmul Ġx Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (). lines () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( Day 2 4 ( input ). compute State ( listOf ( 1 ))). isEqualTo ( Day 2 4 . State ( 0 , Ġ- 1 , Ġ 0 , Ġ 0 , Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` Program Ġshould Ġcompute ĠZ = 3 Ġand Ġset ĠX = 3 `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinp Ġz ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinp Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmul Ġz Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (). lines () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( Day 2 4 ( input ). compute State ( listOf ( 1 , Ġ 3 ))). isEqualTo ( Day 2 4 . State ( 0 , Ġ 3 , Ġ 0 , Ġ 3 , Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` Program Ġshould Ġcompute ĠZ = 1 Ġif Ġthe Ġsecond Ġinput Ġnumber Ġis Ġthree Ġtimes Ġlarger Ġthan Ġthe Ġfirst `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinp Ġz ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinp Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmul Ġz Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeql Ġz Ġx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (). lines () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( Day 2 4 ( input ). compute State ( listOf ( 1 , Ġ 3 ))). isEqualTo ( Day 2 4 . State ( 0 , Ġ 3 , Ġ 0 , Ġ 1 , Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` Program Ġshould Ġconvert Ġpositive Ġnumber Ġinto Ġbinary `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinp Ġw ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Ġz Ġw ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmod Ġz Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv Ġw Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Ġy Ġw ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmod Ġy Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv Ġw Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Ġx Ġw ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmod Ġx Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv Ġw Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmod Ġw Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (). lines () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( Day 2 4 ( input ). compute State ( listOf ( 1 5 ))). isEqualTo ( Day 2 4 . State ( 1 , Ġ 1 , Ġ 1 , Ġ 1 , Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġ@ DisplayName (" Part Ġ 1 ") ĊĠĠĠ Ġinner Ġclass ĠPart 1 Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` 9 8 _ 9 9 8 _ 5 1 9 _ 5 9 6 _ 9 9 7 Ġshould Ġbe Ġthe Ġlargest Ġmodel Ġnumber Ġaccepted Ġby ĠMON AD `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( Day 2 4 ( Input Reader . getInput As List ( 2 4 )). part One ()). isEqualTo ( 9 8 _ 9 9 8 _ 5 1 9 _ 5 9 6 _ 9 9 7 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġ@ DisplayName (" Part Ġ 2 ") ĊĠĠĠ Ġinner Ġclass ĠPart 2 Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` 3 1 _ 5 2 1 _ 1 1 9 _ 1 5 1 _ 4 2 1 Ġshould Ġbe Ġthe Ġsmallest Ġmodel Ġnumber Ġaccepted Ġby ĠMON AD `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( Day 2 4 ( Input Reader . getInput As List ( 2 4 )). part Two ()). isEqualTo ( 3 1 _ 5 2 1 _ 1 1 9 _ 1 5 1 _ 4 2 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }