package Ġio . github . ps he g ger . a oc . y 2 0 2 0 . visualization Ċ Ċ import Ġio . github . ps he g ger . a oc . common . Bitmap Ċ import Ġio . github . ps he g ger . a oc . common . Color Ċ import Ġio . github . ps he g ger . a oc . common . Task Visualizer Ċ import Ġio . github . ps he g ger . a oc . y 2 0 2 0 . Y 2 0 2 0 D 4 Ċ import Ġkotlin . math . min Ċ Ċ class ĠY 2 0 2 0 D 4 Visualizer ( private Ġval Ġpass ports : ĠList < Y 2 0 2 0 D 4 . Passport >) Ġ: ĠTask Visualizer Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Visualization () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbmp Ġ= ĠBitmap ( 5 9 4 , Ġ 5 9 4 , ĠColor ( 0 x 6 4 9 5 ED )) ĊĠĠĠĠĠĠĠ Ġ( 1 .. 1 0 ). forEach Ġ{ Ġbmp . fillRect ( Pair ( 0 , Ġit Ġ* ĠCELL _ HEIGHT ), Ġ 5 9 4 , Ġ 1 , ĠColor . Black ) Ġ} ĊĠĠĠĠĠĠĠ Ġ( 1 .. 1 7 ). forEach Ġ{ Ġbmp . fillRect ( Pair ( it Ġ* ĠCELL _ WIDTH , Ġ 0 ), Ġ 1 , Ġ 5 9 4 , ĠColor . Black ) Ġ} ĊĠĠĠĠĠĠĠ Ġpass ports . indices . forEach Ġ{ Ġdraw Image ( bmp , Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġbmp . save (" visual izations / Y 2 0 2 0 D 4 . pp m ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Image ( bmp : ĠBitmap , Ġindex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhair Color Str Ġ= Ġpass ports [ index ]. fields [" h cl "] Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġeye Color Str Ġ= Ġpass ports [ index ]. fields [" e cl "] Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġheight Cm Ġ= Ġpass ports [ index ]. height Cm Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġhair Color Ġ= ĠColor . parse String ( hair Color Str ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġeye Color Ġ= Ġwhen Ġ( eye Color Str ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" oth " Ġ-> ĠColor . random () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġeye Colors [ eye Color Str ] Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġskin Color Ġ= Ġskin Colors . random () ĊĠĠĠĠĠĠĠ Ġval Ġsh irt Color Ġ= ĠColor . random () ĊĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġindex Ġ% ĠH ORIZONTAL _ COUNT ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġ( index Ġ- Ġx ) Ġ/ ĠH ORIZONTAL _ COUNT ĊĠĠĠĠĠĠĠ Ġval Ġdx Ġ= Ġx Ġ* ĠCELL _ WIDTH ĊĠĠĠĠĠĠĠ Ġval Ġdy Ġ= Ġy Ġ* ĠCELL _ HEIGHT ĊĊĠĠĠĠĠĠĠ Ġval Ġhead Top Ġ= Ġ 6 Ġ- Ġ(( height Cm Ġ- Ġ 1 9 3 ) Ġ/ Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġhair ĊĠĠĠĠĠĠĠ Ġbmp . fillRect ( Pair ( 1 0 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy Ġ- Ġ 3 ), Ġ 1 3 , Ġ 1 , Ġhair Color ) ĊĠĠĠĠĠĠĠ Ġbmp . fillRect ( Pair ( 9 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy Ġ- Ġ 2 ), Ġ 1 5 , Ġ 1 , Ġhair Color ) ĊĠĠĠĠĠĠĠ Ġbmp . fillRect ( Pair ( 8 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy Ġ- Ġ 1 ), Ġ 1 7 , Ġ 1 0 , Ġhair Color ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġhead ĊĠĠĠĠĠĠĠ Ġbmp . fillRect ( Pair ( 9 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy ), Ġ 1 5 , Ġ 1 8 , Ġskin Color ) ĊĠĠĠĠĠĠĠ Ġbmp . draw Rect ( Pair ( 9 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy ), Ġ 1 5 , Ġ 1 8 , ĠColor . Black ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġhair Ġ 2 ĊĠĠĠĠĠĠĠ Ġbmp . fillRect ( Pair ( 9 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy ), Ġ 1 5 , Ġ 2 , Ġhair Color ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġeyes ĊĠĠĠĠĠĠĠ Ġbmp . fillRect ( Pair ( 1 2 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy Ġ+ Ġ 4 ), Ġ 4 , Ġ 4 , Ġeye Color ) ĊĠĠĠĠĠĠĠ Ġbmp . draw Rect ( Pair ( 1 2 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy Ġ+ Ġ 4 ), Ġ 4 , Ġ 4 , ĠColor . Black ) ĊĠĠĠĠĠĠĠ Ġbmp . fillRect ( Pair ( 1 7 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy Ġ+ Ġ 4 ), Ġ 4 , Ġ 4 , Ġeye Color ) ĊĠĠĠĠĠĠĠ Ġbmp . draw Rect ( Pair ( 1 7 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy Ġ+ Ġ 4 ), Ġ 4 , Ġ 4 , ĠColor . Black ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġm outh ĊĠĠĠĠĠĠĠ Ġbmp . fillRect ( Pair ( 1 4 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy Ġ+ Ġ 1 3 ), Ġ 5 , Ġ 1 , ĠColor . Black ) ĊĠĠĠĠĠĠĠ Ġbmp . fillRect ( Pair ( 1 2 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy Ġ+ Ġ 1 2 ), Ġ 2 , Ġ 1 , ĠColor . Black ) ĊĠĠĠĠĠĠĠ Ġbmp . fillRect ( Pair ( 1 9 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy Ġ+ Ġ 1 2 ), Ġ 2 , Ġ 1 , ĠColor . Black ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġne ck ĊĠĠĠĠĠĠĠ Ġbmp . fillRect ( Pair ( 1 3 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy Ġ+ Ġ 1 7 ), Ġ 7 , Ġ 7 , Ġskin Color ) ĊĠĠĠĠĠĠĠ Ġbmp . draw Rect ( Pair ( 1 3 Ġ+ Ġdx , Ġhead Top Ġ+ Ġdy Ġ+ Ġ 1 7 ), Ġ 7 , Ġ 7 , ĠColor . Black ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġbody ĊĠĠĠĠĠĠĠ Ġval Ġbody Top Ġ= Ġhead Top Ġ+ Ġdy Ġ+ Ġ 2 3 ĊĠĠĠĠĠĠĠ Ġval Ġbody Height Ġ= Ġmin ( body Top Ġ+ Ġ 3 0 , Ġdy Ġ+ ĠCELL _ HEIGHT Ġ+ Ġ 1 ) Ġ- Ġbody Top ĊĠĠĠĠĠĠĠ Ġbmp . fillRect ( Pair ( 3 Ġ+ Ġdx , Ġbody Top ), Ġ 2 8 , Ġbody Height , Ġsh irt Color ) ĊĠĠĠĠĠĠĠ Ġbmp . draw Rect ( Pair ( 3 Ġ+ Ġdx , Ġbody Top ), Ġ 2 8 , Ġbody Height , ĠColor . Black ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġar ms ĊĠĠĠĠĠĠĠ Ġval Ġarm Top Ġ= Ġbody Top Ġ+ Ġ 6 ĊĠĠĠĠĠĠĠ Ġval Ġarm Height Ġ= Ġmin ( arm Top Ġ+ Ġ 2 4 , Ġdy Ġ+ ĠCELL _ HEIGHT Ġ+ Ġ 1 ) Ġ- Ġarm Top ĊĠĠĠĠĠĠĠ Ġbmp . fillRect ( Pair ( 9 Ġ+ Ġdx , Ġarm Top ), Ġ 1 , Ġarm Height , ĠColor . Black ) ĊĠĠĠĠĠĠĠ Ġbmp . fillRect ( Pair ( 2 4 Ġ+ Ġdx , Ġarm Top ), Ġ 1 , Ġarm Height , ĠColor . Black ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠH ORIZONTAL _ COUNT Ġ= Ġ 1 8 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCELL _ WIDTH Ġ= Ġ 3 3 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCELL _ HEIGHT Ġ= Ġ 5 4 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġeye Colors Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" amb " Ġto ĠColor ( 0 xFF BF 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" bl u " Ġto ĠColor ( 0 xA 1 CA F 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" br n " Ġto ĠColor ( 0 x 9 E 6 B 4 A ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" gry " Ġto ĠColor ( 0 x 7 7 8 8 9 9 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" gr n " Ġto ĠColor ( 0 x 6 CA 5 8 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" hz l " Ġto ĠColor ( 0 xee e 8 aa ), ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġskin Colors Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor ( 0 x 8 D 5 5 2 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor ( 0 xC 6 8 6 4 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor ( 0 xE 0 AC 6 9 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor ( 0 xF 1 C 2 7 D ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor ( 0 xFF DB AC ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ