package Ġsh mp . visual izer . print info Ċ Ċ import Ġsh mp . simulation . Simulation Error Ċ import Ġsh mp . simulation . space . Space Data . data Ċ import Ġsh mp . simulation . space . World Map Ċ import Ġsh mp . simulation . space . tile . Tile ĊĊ Ċ class ĠMap Print Info Ġ{ ĊĠĠĠ Ġvar Ġcut Ġ= Ġ 0 ĊĊĠĠĠ Ġfun Ġcompute Cut ( map : ĠWorld Map ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! data . y Map Loop ing ) Ġreturn ĊĠĠĠĠĠĠĠ Ġvar Ġgap Start Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġgap Finish Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġstart Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġvar Ġfinish Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġ 0 Ġuntil Ġdata . map Size Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Line Clear Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 Ġuntil Ġdata . map Size X ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtile Ġ= Ġmap [ x , Ġy ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠSimulation Error (" In co herent Ġmap Ġsize ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tile . type Ġ!= ĠTile . Type . Water Ġ&& Ġtile . type Ġ!= ĠTile . Type . Ice ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Line Clear Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Line Clear ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( start Ġ== Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish Ġ= Ġy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( start Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( finish Ġ- Ġstart Ġ> Ġgap Finish Ġ- Ġgap Start ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgap Start Ġ= Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgap Finish Ġ= Ġfinish ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcut Ġ= Ġ( gap Start Ġ+ Ġgap Finish ) Ġ/ Ġ 2 ĊĠĠĠ Ġ} Ċ } Ċ