/* ĠĊ Ġ* ĠCopyright Ġ 2 0 1 5 ĠAlex ander ĠNo z ik . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġru . in r . mass . min uit Ċ Ċ import Ġjava . lang . StringBuffer Ċ import Ġkotlin . jvm . Jvm Over loads Ċ Ċ /** Ċ Ġ* ĠM n Plot Ġproduces Ġa Ġtext - screen Ġgraphical Ġoutput Ġof Ġ( x , y ) Ġpoints . ĠE . g . Ġfrom Ċ Ġ* ĠScan Ġor ĠCont ours . Ċ Ġ* Ċ Ġ* Ġ@ version Ġ$ Id $ Ċ Ġ* Ġ@ author ĠDark snake Ċ Ġ*/ Ċ class ĠM n Plot Ġ@ Jvm Over loads Ġconstructor ( private Ġval Ġthe Page Width : ĠInt Ġ= Ġ 8 0 , Ġprivate Ġval Ġthe Page Length : ĠInt Ġ= Ġ 3 0 ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġbh Ġ= Ġ 0 . 0 ĊĠĠĠ Ġprivate Ġvar Ġbl Ġ= Ġ 0 . 0 ĊĠĠĠ Ġprivate Ġvar Ġbw id Ġ= Ġ 0 . 0 ĊĠĠĠ Ġprivate Ġvar Ġnb Ġ= Ġ 0 ĊĠĠĠ Ġfun Ġlength (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthe Page Length ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġm nb ins ( a 1 : ĠDouble , Ġa 2 : ĠDouble , Ġn aa : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// *- *- *- *- *- *- *- *- *- *- * Compute Ġreasonable Ġhistogram Ġintervals *- *- *- *- *- *- *- *- * ĊĠĠĠĠĠĠĠ Ġ// *- * ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ================================= ===== ĊĠĠĠĠĠĠĠ Ġ// *- * ĠĠĠĠĠĠĠ ĠFunction ĠTO ĠDET ER M INE ĠRE ASON ABLE ĠHIST O GRAM ĠINTER VAL S ĊĠĠĠĠĠĠĠ Ġ// *- * ĠĠĠĠĠĠĠ ĠG IV EN ĠA BS OL UTE ĠUPPER ĠAND ĠLOWER ĠBO UN DS Ġ ĠA 1 ĠAND ĠA 2 ĊĠĠĠĠĠĠĠ Ġ// *- * ĠĠĠĠĠĠĠ ĠAND ĠDES I RED ĠMAX IMUM ĠNUMBER ĠOF ĠB INS ĠN AA ĊĠĠĠĠĠĠĠ Ġ// *- * ĠĠĠĠĠĠĠ ĠPRO GRAM ĠM AK ES ĠRE ASON ABLE ĠBIN NING ĠFROM ĠBL ĠTO ĠB H ĠOF ĠWIDTH ĠB WID ĊĠĠĠĠĠĠĠ Ġ// *- * ĠĠĠĠĠĠĠ ĠF . ĠJ AMES , ĠĠ ĠA UG UST , Ġ 1 9 7 4 Ġ, Ġst olen Ġfor ĠMin uit , Ġ 1 9 8 8 ĊĠĠĠĠĠĠĠ Ġ// *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- * ĊĊĠĠĠĠĠĠĠ Ġ/* ĠLocal Ġvariables Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġaw id : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġah : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġsig fig : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġs igr nd : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġal b : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġkw id : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġlw id : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġna Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġlog _: ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġal : ĠDouble Ġ= Ġif Ġ( a 1 Ġ< Ġa 2 ) Ġa 1 Ġelse Ġa 2 ĊĠĠĠĠĠĠĠ Ġah Ġ= Ġif Ġ( a 1 Ġ> Ġa 2 ) Ġa 1 Ġelse Ġa 2 ĊĠĠĠĠĠĠĠ Ġif Ġ( al Ġ== Ġah ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġah Ġ= Ġal Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// *- *- ĠĠĠĠĠĠ ĠIF ĠN AA Ġ. EQ . Ġ- 1 Ġ, ĠPRO GRAM ĠUSE S ĠB WID ĠINPUT ĠFROM ĠCALL ING ĠROUT INE ĊĠĠĠĠĠĠĠ Ġvar Ġskip Ġ= Ġn aa Ġ== Ġ- 1 Ġ&& Ġbw id Ġ> Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ(! skip ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġna Ġ= Ġn aa Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( na Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġna Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! skip ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// *- *- ĠĠĠĠĠĠĠ ĠGET ĠNO MIN AL ĠBIN ĠWIDTH ĠIN ĠEXP ON ĠFORM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaw id Ġ= Ġ( ah Ġ- Ġal ) Ġ/ Ġna . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog _ Ġ= Ġlog 1 0 ( aw id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( aw id Ġ<= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-- log _ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsig fig Ġ= Ġaw id Ġ* Ġpow ( 1 0 . 0 , Ġ- log _. toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// *- *- ĠĠĠĠĠĠ ĠRO UND ĠM ANT IS SA ĠUP ĠTO Ġ 2 , Ġ 2 . 5 , Ġ 5 , ĠOR Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sig fig Ġ<= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs igr nd Ġ= Ġ 2 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( sig fig Ġ<= Ġ 2 . 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs igr nd Ġ= Ġ 2 . 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( sig fig Ġ<= Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs igr nd Ġ= Ġ 5 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs igr nd Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ log _ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbw id Ġ= Ġs igr nd Ġ* Ġpow ( 1 0 . 0 , Ġlog _. toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġal b Ġ= Ġal Ġ/ Ġbw id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlw id Ġ= Ġal b . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( al b Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-- lw id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbl Ġ= Ġbw id Ġ* Ġlw id . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġal b Ġ= Ġah Ġ/ Ġbw id Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkw id Ġ= Ġal b . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( al b Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-- kw id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbh Ġ= Ġbw id Ġ* Ġkw id . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnb Ġ= Ġkw id Ġ- Ġlw id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( n aa Ġ<= Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( n aa Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// *- *- ĠĠĠĠĠĠĠ ĠREQUEST ĠFOR ĠONE ĠBIN ĠIS ĠDIFF IC ULT ĠCASE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( n aa Ġ> Ġ 1 Ġ|| Ġnb Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbw id Ġ*= Ġ 2 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnb Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( nb Ġshl Ġ 1 Ġ!= Ġn aa ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ na ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskip Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmn plot ( x pt : ĠDouble Array , Ġy pt : ĠDouble Array , Ġch pt : ĠStringBuffer , Ġn xy pt : ĠInt , Ġnp ag wd : ĠInt , Ġnp ag ln : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// *- *- *- * P lots Ġpoints Ġin Ġarray Ġxy pt Ġonto Ġone Ġpage Ġwith Ġlabel led Ġaxes *- *- *- *- * ĊĠĠĠĠĠĠĠ Ġ// *- * ĠĠĠ Ġ================================================= ========== ĊĠĠĠĠĠĠĠ Ġ// *- * ĠĠĠĠĠĠĠ ĠN XY PT Ġis Ġthe Ġnumber Ġof Ġpoints Ġto Ġbe Ġplotted ĊĠĠĠĠĠĠĠ Ġ// *- * ĠĠĠĠĠĠĠ ĠX PT ( I ) Ġ= Ġx - coord . Ġof Ġ ith Ġpoint ĊĠĠĠĠĠĠĠ Ġ// *- * ĠĠĠĠĠĠĠ ĠY PT ( I ) Ġ= Ġy - coord . Ġof Ġ ith Ġpoint ĊĠĠĠĠĠĠĠ Ġ// *- * ĠĠĠĠĠĠĠ ĠC HP T ( I ) Ġ= Ġcharacter Ġto Ġbe Ġplotted Ġat Ġthis Ġposition ĊĠĠĠĠĠĠĠ Ġ// *- * ĠĠĠĠĠĠĠ Ġthe Ġinput Ġpoint Ġarrays ĠX PT , ĠY PT , ĠC HP T Ġare Ġdestroyed . ĊĠĠĠĠĠĠĠ Ġ// *- * ĊĠĠĠĠĠĠĠ Ġ// *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- *- * ĊĊĠĠĠĠĠĠĠ Ġ/* ĠLocal Ġvariables Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġxmin : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġxmax : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġymax : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġs avx : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġs avy : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġy prt : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġx best : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġy best : ĠDouble ĊĠĠĠĠĠĠĠ Ġval Ġx val us Ġ= ĠDouble Array ( 1 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġany : ĠDouble ĊĠĠĠĠĠĠĠ Ġval Ġit en : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġj : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġk : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġmax nx : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġmax ny : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġi quit : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġni : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġlin odd : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġi bk : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġis p 1 : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġks : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġix : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġover pr : ĠBoolean ĊĠĠĠĠĠĠĠ Ġval Ġcline Ġ= ĠStringBuffer ( np ag wd ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( ii Ġin Ġ 0 Ġuntil Ġnp ag wd ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcline . append (' Ġ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġch sav : ĠChar ĊĠĠĠĠĠĠĠ Ġval Ġch best : ĠChar ĊĊĠĠĠĠĠĠĠ Ġ/* ĠFunction ĠBody Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// *- * Ġ ĠComputing ĠMIN ĊĠĠĠĠĠĠĠ Ġmax nx Ġ= Ġif Ġ( np ag wd Ġ- Ġ 2 0 Ġ< Ġ 1 0 0 ) Ġnp ag wd Ġ- Ġ 2 0 Ġelse Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( max nx Ġ< Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax nx Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmax ny Ġ= Ġnp ag ln ĊĠĠĠĠĠĠĠ Ġif Ġ( max ny Ġ< Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax ny Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( n xy pt Ġ<= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġx best Ġ= Ġx pt [ 0 ] ĊĠĠĠĠĠĠĠ Ġy best Ġ= Ġy pt [ 0 ] ĊĠĠĠĠĠĠĠ Ġch best Ġ= Ġch pt . get ( 0 ) ĊĠĠĠĠĠĠĠ Ġ// *- *- ĠĠĠĠĠĠĠ Ġorder Ġthe Ġpoints Ġby Ġde creasing Ġy ĊĠĠĠĠĠĠĠ Ġval Ġkm 1 : ĠInt Ġ= Ġn xy pt Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġi : ĠInt Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ<= Ġkm 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi quit Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġni Ġ= Ġn xy pt Ġ- Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( j Ġ<= Ġni ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( y pt [ j Ġ- Ġ 1 ] Ġ> Ġy pt [ j ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ j ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs avx Ġ= Ġx pt [ j Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx pt [ j Ġ- Ġ 1 ] Ġ= Ġx pt [ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx pt [ j ] Ġ= Ġs avx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs avy Ġ= Ġy pt [ j Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy pt [ j Ġ- Ġ 1 ] Ġ= Ġy pt [ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy pt [ j ] Ġ= Ġs avy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch sav Ġ= Ġch pt . get ( j Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch pt . set Char At ( j Ġ- Ġ 1 , Ġch pt . get ( j )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch pt . set Char At ( j , Ġch sav ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi quit Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ j ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i quit Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ i ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// *- *- ĠĠĠĠĠĠĠ Ġfind Ġextreme Ġvalues ĊĠĠĠĠĠĠĠ Ġxmax Ġ= Ġx pt [ 0 ] ĊĠĠĠĠĠĠĠ Ġxmin Ġ= Ġxmax ĊĠĠĠĠĠĠĠ Ġi Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ<= Ġn xy pt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x pt [ i Ġ- Ġ 1 ] Ġ> Ġxmax ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmax Ġ= Ġx pt [ i Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x pt [ i Ġ- Ġ 1 ] Ġ< Ġxmin ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmin Ġ= Ġx pt [ i Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ i ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġd xx : ĠDouble Ġ= Ġ( xmax Ġ- Ġxmin ) Ġ* Ġ. 0 0 1 ĊĠĠĠĠĠĠĠ Ġxmax Ġ+= Ġd xx ĊĠĠĠĠĠĠĠ Ġxmin Ġ-= Ġd xx ĊĠĠĠĠĠĠĠ Ġm nb ins ( xmin , Ġxmax , Ġmax nx ) ĊĠĠĠĠĠĠĠ Ġxmin Ġ= Ġbl ĊĠĠĠĠĠĠĠ Ġxmax Ġ= Ġbh ĊĠĠĠĠĠĠĠ Ġvar Ġnx : ĠInt Ġ= Ġnb ĊĠĠĠĠĠĠĠ Ġval Ġbw idx : ĠDouble Ġ= Ġbw id ĊĠĠĠĠĠĠĠ Ġymax Ġ= Ġy pt [ 0 ] ĊĠĠĠĠĠĠĠ Ġvar Ġymin : ĠDouble Ġ= Ġy pt [ n xy pt Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġif Ġ( ymax Ġ== Ġymin ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġymax Ġ= Ġymin Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġd yy : ĠDouble Ġ= Ġ( ymax Ġ- Ġymin ) Ġ* Ġ. 0 0 1 ĊĠĠĠĠĠĠĠ Ġymax Ġ+= Ġd yy ĊĠĠĠĠĠĠĠ Ġymin Ġ-= Ġd yy ĊĠĠĠĠĠĠĠ Ġm nb ins ( ymin , Ġymax , Ġmax ny ) ĊĠĠĠĠĠĠĠ Ġymin Ġ= Ġbl ĊĠĠĠĠĠĠĠ Ġymax Ġ= Ġbh ĊĠĠĠĠĠĠĠ Ġvar Ġny : ĠInt Ġ= Ġnb ĊĠĠĠĠĠĠĠ Ġval Ġbw idy : ĠDouble Ġ= Ġbw id ĊĠĠĠĠĠĠĠ Ġany Ġ= Ġny . toDouble () ĊĠĠĠĠĠĠĠ Ġ// *- *- ĠĠĠĠĠĠĠ Ġif Ġfirst Ġpoint Ġis Ġblank , Ġit Ġis Ġan Ġ' origin ' ĊĠĠĠĠĠĠĠ Ġif Ġ( ch best Ġ!= Ġ' Ġ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx best Ġ= Ġ( xmax Ġ+ Ġxmin ) Ġ* Ġ. 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy best Ġ= Ġ( ymax Ġ+ Ġymin ) Ġ* Ġ. 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// *- *- ĠĠĠĠĠĠĠ Ġfind Ġscale Ġconstants ĊĠĠĠĠĠĠĠ Ġval Ġax : ĠDouble Ġ= Ġ 1 Ġ/ Ġbw idx ĊĠĠĠĠĠĠĠ Ġval Ġay : ĠDouble Ġ= Ġ 1 Ġ/ Ġbw idy ĊĠĠĠĠĠĠĠ Ġval Ġbx : ĠDouble Ġ= Ġ- ax Ġ* Ġxmin Ġ+ Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġby : ĠDouble Ġ= Ġ- ay Ġ* Ġymin Ġ- Ġ 2 ĊĠĠĠĠĠĠĠ Ġ// *- *- ĠĠĠĠĠĠĠ Ġconvert Ġpoints Ġto Ġgrid Ġpositions ĊĠĠĠĠĠĠĠ Ġi Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ<= Ġn xy pt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx pt [ i Ġ- Ġ 1 ] Ġ= Ġax Ġ* Ġx pt [ i Ġ- Ġ 1 ] Ġ+ Ġbx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy pt [ i Ġ- Ġ 1 ] Ġ= Ġany Ġ- Ġay Ġ* Ġy pt [ i Ġ- Ġ 1 ] Ġ- Ġby ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ i ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġn xb est : ĠInt Ġ= Ġ( ax Ġ* Ġx best Ġ+ Ġbx ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġny best : ĠInt Ġ= Ġ( any Ġ- Ġay Ġ* Ġy best Ġ- Ġby ). toInt () ĊĠĠĠĠĠĠĠ Ġ// *- *- ĠĠĠĠĠĠĠ Ġprint Ġthe Ġpoints ĊĠĠĠĠĠĠĠ Ġny Ġ+= Ġ 2 ĊĠĠĠĠĠĠĠ Ġnx Ġ+= Ġ 2 ĊĠĠĠĠĠĠĠ Ġis p 1 Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġlin odd Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġover pr Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġi Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ<= Ġny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi bk Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( ib k Ġ<= Ġnx ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcline . set Char At ( ib k Ġ- Ġ 1 , Ġ' Ġ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ ib k ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġcline . set Char At ( nx ,' \ 0 '); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġcline . set Char At ( nx + 1 ,' \ 0 '); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcline . set Char At ( 0 , Ġ'.') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcline . set Char At ( nx Ġ- Ġ 1 , Ġ'.') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcline . set Char At ( n xb est Ġ- Ġ 1 , Ġ'.') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġ 1 Ġ|| Ġi Ġ== Ġny best Ġ|| Ġi Ġ== Ġny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( j Ġ<= Ġnx ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcline . set Char At ( j Ġ- Ġ 1 , Ġ'.') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ j ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy prt Ġ= Ġymax Ġ- Ġ( i Ġ- Ġ 1 . 0 ) Ġ* Ġbw idy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis pl set Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isp 1 Ġ<= Ġn xy pt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// *- *- ĠĠĠĠĠĠĠ Ġfind Ġthe Ġpoints Ġto Ġbe Ġplotted Ġon Ġthis Ġline ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk Ġ= Ġis p 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( k Ġ<= Ġn xy pt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġks Ġ= Ġy pt [ k Ġ- Ġ 1 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ks Ġ> Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis p 1 Ġ= Ġk ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis pl set Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġix Ġ= Ġx pt [ k Ġ- Ġ 1 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cline . get ( ix Ġ- Ġ 1 ) Ġ!= Ġ'.' Ġ&& Ġcline . get ( ix Ġ- Ġ 1 ) Ġ!= Ġ' Ġ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cline . get ( ix Ġ- Ġ 1 ) Ġ== Ġch pt . get ( k Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ k ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġover pr Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// *- *- ĠĠĠĠĠĠĠ ĠOVER PR Ġis Ġtrue Ġif Ġone Ġor Ġmore Ġpositions Ġcontains Ġmore Ġthan ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// *- *- ĠĠĠĠĠĠĠĠĠĠ Ġone Ġpoint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcline . set Char At ( ix Ġ- Ġ 1 , Ġ'& ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ k ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcline . set Char At ( ix Ġ- Ġ 1 , Ġch pt . get ( k Ġ- Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ k ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is pl set ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis p 1 Ġ= Ġn xy pt Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lin odd Ġ!= Ġ 1 Ġ&& Ġi Ġ!= Ġny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlin odd Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . lang . System . out . printf (" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% s ", Ġcline . substring ( 0 , Ġ 6 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . lang . System . out . printf (" Ġ% 1 4 . 7 g Ġ.. % s ", Ġy prt , Ġcline . substring ( 0 , Ġ 6 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlin odd Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ i ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// *- *- ĠĠĠĠĠĠĠ Ġprint Ġlabels Ġon Ġx - axis Ġevery Ġten Ġcolumns ĊĠĠĠĠĠĠĠ Ġi bk Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( ib k Ġ<= Ġnx ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcline . set Char At ( ib k Ġ- Ġ 1 , Ġ' Ġ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ib k Ġ% Ġ 1 0 Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcline . set Char At ( ib k Ġ- Ġ 1 , Ġ'/') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ ib k ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġjava . lang . System . out . printf (" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% s ", Ġcline ) ĊĠĠĠĠĠĠĠ Ġjava . lang . System . out . printf ("\ n ") ĊĠĠĠĠĠĠĠ Ġi bk Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( ib k Ġ<= Ġ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx val us [ ib k Ġ- Ġ 1 ] Ġ= Ġxmin Ġ+ Ġ( ib k Ġ- Ġ 1 . 0 ) Ġ* Ġ 1 0 Ġ* Ġbw idx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ ib k ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġjava . lang . System . out . printf (" ĠĠĠĠĠĠĠĠĠĠ Ġ") ĊĠĠĠĠĠĠĠ Ġit en Ġ= Ġ( nx Ġ+ Ġ 9 ) Ġ/ Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġi bk Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( ib k Ġ<= Ġit en ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava . lang . System . out . printf (" Ġ% 9 . 4 g ", Ġx val us [ ib k Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ ib k ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġjava . lang . System . out . printf ("\ n ") ĊĠĠĠĠĠĠĠ Ġif Ġ( over pr ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġch mess Ġ= Ġ" ĠĠ ĠOver print Ġcharacter Ġis Ġ& " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava . lang . System . out . printf (" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠONE ĠCOLUMN =% 1 3 . 7 g % s ", Ġbw idx , Ġch mess ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġch mess Ġ= Ġ" Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava . lang . System . out . printf (" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠONE ĠCOLUMN =% 1 3 . 7 g % s ", Ġbw idx , Ġch mess ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġplot . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġpoints Ġa Ġ[ List ] Ġobject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġplot ( points : ĠList < Range >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= ĠDouble Array ( points . size ) ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= ĠDouble Array ( points . size ) ĊĠĠĠĠĠĠĠ Ġval Ġch pt Ġ= ĠStringBuffer ( points . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ(( i , Ġi point ) Ġin Ġpoints . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx [ i ] Ġ= Ġi point . getFirst () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy [ i ] Ġ= Ġi point . get Second () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġch pt . append ('* ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmn plot ( x , Ġy , Ġch pt , Ġpoints . size , Ġwidth (), Ġlength ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġplot . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġxmin Ġa Ġdouble . ĊĠĠĠĠ Ġ* Ġ@ param Ġymin Ġa Ġdouble . ĊĠĠĠĠ Ġ* Ġ@ param Ġpoints Ġa Ġ[ List ] Ġobject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġplot ( xmin : ĠDouble , Ġymin : ĠDouble , Ġpoints : ĠList < Range >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= ĠDouble Array ( points . size Ġ+ Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġx [ 0 ] Ġ= Ġxmin ĊĠĠĠĠĠĠĠ Ġx [ 1 ] Ġ= Ġxmin ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= ĠDouble Array ( points . size Ġ+ Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġy [ 0 ] Ġ= Ġymin ĊĠĠĠĠĠĠĠ Ġy [ 1 ] Ġ= Ġymin ĊĠĠĠĠĠĠĠ Ġval Ġch pt Ġ= ĠStringBuffer ( points . size Ġ+ Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġch pt . append (' Ġ') ĊĠĠĠĠĠĠĠ Ġch pt . append (' X ') ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġfor Ġ( ip oint Ġin Ġpoints ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx [ i ] Ġ= Ġi point . getFirst () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy [ i ] Ġ= Ġi point . get Second () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġch pt . append ('* ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmn plot ( x , Ġy , Ġch pt , Ġpoints . size Ġ+ Ġ 2 , Ġwidth (), Ġlength ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwidth (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthe Page Width ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠConstructor Ġfor ĠM n Plot . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġthe Page Width Ġa Ġint . ĊĠĠĠĠ Ġ* Ġ@ param Ġthe Page Length Ġa Ġint . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠConstructor Ġfor ĠM n Plot . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( the Page Width Ġ> Ġ 1 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthe Page Width Ġ= Ġ 1 2 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( the Page Length Ġ> Ġ 5 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthe Page Length Ġ= Ġ 5 6 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }