package Ġio . github . suit ou gre ent ea . var ious _ min os _ tro is Ċ Ċ class ĠM ino Ġ( val Ġmin o Id : ĠInt , Ġval Ġblocks : ĠList < Pair < Pos , ĠBlock >> ){ ĊĠ Ġval Ġsize : ĠInt ĊĠ Ġinit Ġ{ ĊĠĠĠ Ġval Ġdata Ġ= ĠM ino List . list [ mino Id ] ĊĠĠĠ Ġsize Ġ= Ġdata . first ĊĠ Ġ} ĊĊĠ Ġfun Ġget Rot ated Blocks ( rotation : ĠInt ) Ġ= Ġblocks . map Ġ{ Ġe Ġ-> ĠPair ( Min o Coordinate Helper . get Rot ated Coordinate ( e . first , Ġrotation , Ġsize ), Ġe . second ) Ġ} ĊĠ Ġfun Ġget Rot ated Rectangle ( rotation : ĠInt ): ĠPair < Pos , ĠPos > Ġ{ ĊĠĠĠ Ġval Ġblock Coords Ġ= Ġblocks . map Ġ{ Ġe Ġ-> ĠM ino Coordinate Helper . get Rot ated Coordinate ( e . first , Ġrotation , Ġsize ) Ġ} ĊĠĠĠ Ġval Ġx Coords Ġ= Ġblock Coords . map Ġ{ Ġit . x Ġ} ĊĠĠĠ Ġval Ġy Coords Ġ= Ġblock Coords . map Ġ{ Ġit . y Ġ} ĊĠĠĠ Ġreturn ĠPair ( Pos ( x Coords . min () Ġ?: Ġ 0 , Ġy Coords . min () Ġ?: Ġ 0 ), ĠPos ( x Coords . max () Ġ?: Ġsize - 1 , Ġy Coords . max () Ġ?: Ġsize - 1 )) ĊĠ Ġ} Ċ } Ċ Ċ object ĠM ino Coordinate Helper Ġ{ ĊĠ Ġfun Ġget Rot ated Coordinate ( coordinate : ĠPos , Ġrotation : ĠInt , Ġsize : ĠInt ) Ġ= Ġwhen Ġ( rotation ) Ġ{ ĊĠĠĠĠ 0 Ġ-> ĠPos ( coordinate . x , Ġcoordinate . y ) ĊĠĠĠĠ 1 Ġ-> ĠPos ( coordinate . y , Ġsize - 1 Ġ- Ġcoordinate . x ) ĊĠĠĠĠ 2 Ġ-> ĠPos ( size - 1 Ġ- Ġcoordinate . x , Ġsize - 1 Ġ- Ġcoordinate . y ) ĊĠĠĠĠ 3 Ġ-> ĠPos ( size - 1 Ġ- Ġcoordinate . y , Ġcoordinate . x ) ĊĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException () ĊĠ Ġ} ĊĠ Ġfun Ġget Rot ated Rectangle ( mino Id : ĠInt , Ġrotation : ĠInt ): ĠPair < Pos , ĠPos > Ġ{ ĊĠĠĠ Ġval Ġ( size , Ġcoords ) Ġ= ĠM ino List . list [ mino Id ] ĊĠĠĠ Ġval Ġblock Coords Ġ= Ġcoords . map Ġ{ ĠM ino Coordinate Helper . get Rot ated Coordinate ( it , Ġrotation , Ġsize ) Ġ} ĊĠĠĠ Ġval Ġx Coords Ġ= Ġblock Coords . map Ġ{ Ġit . x Ġ} ĊĠĠĠ Ġval Ġy Coords Ġ= Ġblock Coords . map Ġ{ Ġit . y Ġ} ĊĠĠĠ Ġreturn ĠPair ( Pos ( x Coords . min () Ġ?: Ġ 0 , Ġy Coords . min () Ġ?: Ġ 0 ), ĠPos ( x Coords . max () Ġ?: Ġsize - 1 , Ġy Coords . max () Ġ?: Ġsize - 1 )) ĊĠ Ġ} Ċ } Ċ Ċ object ĠM ino List Ġ{ ĊĠ Ġval Ġlist Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 1 , ĠlistOf ( Pos ( 0 , Ġ 0 ))), Ġ Ġ// Ġ 0 : Ġ 1 ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 2 , ĠlistOf ( Pos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ))), Ġ Ġ// Ġ 1 : Ġ 2 ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ))), Ġ Ġ// Ġ 2 : Ġ 3 I ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 2 , ĠlistOf ( Pos ( 0 , Ġ 1 ), ĠPos ( 0 , Ġ 0 ), ĠPos ( 1 , Ġ 0 ))), Ġ Ġ// Ġ 3 : Ġ 3 L ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 4 , ĠlistOf ( Pos ( 0 , Ġ 2 ), ĠPos ( 1 , Ġ 2 ), ĠPos ( 2 , Ġ 2 ), ĠPos ( 3 , Ġ 2 ))), Ġ Ġ// Ġ 4 : Ġ 4 I ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 0 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ))), Ġ Ġ// Ġ 5 : Ġ 4 J ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 2 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ))), Ġ Ġ// Ġ 6 : Ġ 4 L ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 2 , ĠlistOf ( Pos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 0 , Ġ 0 ), ĠPos ( 1 , Ġ 0 ))), Ġ Ġ// Ġ 7 : Ġ 4 O ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 1 , Ġ 2 ), ĠPos ( 2 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ))), Ġ Ġ// Ġ 8 : Ġ 4 S ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 1 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ))), Ġ Ġ// Ġ 9 : Ġ 4 T ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 0 , Ġ 2 ), ĠPos ( 1 , Ġ 2 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ))), Ġ Ġ// Ġ 1 0 : Ġ 4 Z ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 1 , Ġ 2 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ), ĠPos ( 0 , Ġ 0 ), ĠPos ( 1 , Ġ 0 ))), Ġ Ġ// Ġ 1 1 : Ġ 5 F ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 1 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 1 , Ġ 0 ), ĠPos ( 2 , Ġ 0 ))), Ġ Ġ// Ġ 1 2 : Ġ 5 FM ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 5 , ĠlistOf ( Pos ( 0 , Ġ 2 ), ĠPos ( 1 , Ġ 2 ), ĠPos ( 2 , Ġ 2 ), ĠPos ( 3 , Ġ 2 ), ĠPos ( 4 , Ġ 2 ))), Ġ Ġ// Ġ 1 3 : Ġ 5 I ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 4 , ĠlistOf ( Pos ( 3 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ), ĠPos ( 3 , Ġ 1 ))), Ġ Ġ// Ġ 1 4 : Ġ 5 L ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 4 , ĠlistOf ( Pos ( 0 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ), ĠPos ( 3 , Ġ 1 ))), Ġ Ġ// Ġ 1 5 : Ġ 5 LM ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 4 , ĠlistOf ( Pos ( 0 , Ġ 2 ), ĠPos ( 1 , Ġ 2 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ), ĠPos ( 3 , Ġ 1 ))), Ġ Ġ// Ġ 1 6 : Ġ 5 N ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 4 , ĠlistOf ( Pos ( 2 , Ġ 2 ), ĠPos ( 3 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ))), Ġ Ġ// Ġ 1 7 : Ġ 5 NM ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 0 , Ġ 2 ), ĠPos ( 1 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ))), Ġ Ġ// Ġ 1 8 : Ġ 5 P ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 1 , Ġ 2 ), ĠPos ( 2 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ))), Ġ Ġ// Ġ 1 9 : Ġ 5 PM ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 1 , Ġ 2 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 0 , Ġ 0 ), ĠPos ( 1 , Ġ 0 ), ĠPos ( 2 , Ġ 0 ))), Ġ Ġ// Ġ 2 0 : Ġ 5 T ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 0 , Ġ 2 ), ĠPos ( 2 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ))), Ġ Ġ// Ġ 2 1 : Ġ 5 U ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 0 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 0 , Ġ 0 ), ĠPos ( 1 , Ġ 0 ), ĠPos ( 2 , Ġ 0 ))), Ġ Ġ// Ġ 2 2 : Ġ 5 V ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 0 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 1 , Ġ 0 ), ĠPos ( 2 , Ġ 0 ))), Ġ Ġ// Ġ 2 3 : Ġ 5 W ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 1 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ), ĠPos ( 1 , Ġ 0 ))), Ġ Ġ// Ġ 2 4 : Ġ 5 X ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 4 , ĠlistOf ( Pos ( 2 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ), ĠPos ( 3 , Ġ 1 ))), Ġ Ġ// Ġ 2 5 : Ġ 5 Y ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 4 , ĠlistOf ( Pos ( 1 , Ġ 2 ), ĠPos ( 0 , Ġ 1 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 2 , Ġ 1 ), ĠPos ( 3 , Ġ 1 ))), Ġ Ġ// Ġ 2 6 : Ġ 5 YM ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 0 , Ġ 2 ), ĠPos ( 1 , Ġ 2 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 1 , Ġ 0 ), ĠPos ( 2 , Ġ 0 ))), Ġ Ġ// Ġ 2 7 : Ġ 5 Z ĊĠĠĠĠĠĠĠĠĠ ĠPair ( 3 , ĠlistOf ( Pos ( 1 , Ġ 2 ), ĠPos ( 2 , Ġ 2 ), ĠPos ( 1 , Ġ 1 ), ĠPos ( 0 , Ġ 0 ), ĠPos ( 1 , Ġ 0 ))) Ġ Ġ// Ġ 2 8 : Ġ 5 ZM ĊĠ Ġ) Ċ }