package Ġchapter 2 . section 1 Ċ Ċ import Ġchapter 2 . enum ValueOf Ċ import Ġedu . pr inc et on . cs . al gs 4 . Std Random Ċ Ċ /** Ċ Ġ* Ġ çº ¸ çīĮ æİĴåºı Ċ Ġ* Ġ è¯´ è¯´ ä½ł ä¼ļ å¦Ĥä½ķ å°Ĩ ä¸Ģ åī¯ æī ĳ åħĭ çīĮ æĮī èĬ± èī² æİĴåºı ï¼Ī èĬ± èī² é¡ºåºı æĺ¯ é»ĳ æ¡ ĥ ãĢģ çº¢ æ¡ ĥ ãĢģ æ¢ ħ èĬ± åĴĮ æĸ¹ çīĩ ï¼īï¼Į Ċ Ġ* Ġ éĻĲåĪ¶ æĿ¡ä»¶ æĺ¯ æīĢæľī çīĮ éĥ½æĺ¯ èĥĮ éĿ¢ æľ Ŀ ä¸Ĭ æİĴ æĪĲ ä¸Ģ åĪĹ ï¼Į èĢĮ ä½ł ä¸Ģæ¬¡ åıªèĥ½ ç¿» çľĭ åħ¶ä¸Ń ä¸¤ å¼ł çīĮ æĪĸèĢħ äº¤ æį¢ ä¸¤ å¼ł çīĮ ï¼Ī ä¿ĿæĮģ èĥĮ éĿ¢ æľ Ŀ ä¸Ĭ ï¼īãĢĤ Ċ Ġ* Ċ Ġ* Ġ è§£ ï¼ļ åħĪ çĶ¨ å¸Į å°Ķ æİĴåºı å¯¹ æī ĳ åħĭ æĮī çĤ¹ æķ° å¤§å°ı æİĴåºı ï¼Į åĨį åĽĽ ä¸ª ä¸Ģ ç»Ħ ï¼Į å¯¹ çĽ¸åĲĮ çĤ¹ æķ° ä¸įåĲĮ èĬ± èī² çļĦ çīĮ æĮīçħ§ èĬ± èī² å¤§å°ı æıĴåħ¥ æİĴåºı Ċ Ġ* Ġ é¢ĺ çĽ® åİŁ æĦı åı¯èĥ½ æĺ¯ è¦ģ æĮī é»ĳ æ¡ ĥ 0 ãĢģ é»ĳ æ¡ ĥ 1 ãĢģ é»ĳ æ¡ ĥ 2 ... çº¢ æ¡ ĥ 0 ãĢģ çº¢ æ¡ ĥ 1 ãĢģ çº¢ æ¡ ĥ 2 ... çļĦ é¡ºåºı æİĴåºı Ċ Ġ* Ġ æĮī åĲĮ æł· çļĦ æĢĿ æĥ³ ä¸¤ æ¬¡ å¸Į å°Ķ æİĴåºı åį³åı¯ ï¼Į çľģ çķ¥ è¿ĩç¨ĭ Ċ Ġ*/ Ċ fun Ġex 1 3 _ Deck Sort ( poker List : ĠArray < Poker >) Ġ{ ĊĠĠĠ Ġ// æĮī çĤ¹ æķ° å¯¹ æī ĳ åħĭ æİĴåºı ĊĠĠĠ Ġshell Sort ( poker List ) ĊĊĠĠĠ Ġ// å¯¹ æĮĩå®ļ èĮĥåĽ´ åĨħ çļĦ æī ĳ åħĭ æĮī èĬ± èī² æİĴåºı ï¼Į åĮħæĭ¬ start ä¸į åĮħæĭ¬ end ĊĠĠĠ Ġfun Ġsort Poker By Suit ( start : ĠInt , Ġend : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġstart Ġ+ Ġ 1 Ġuntil Ġend ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġi Ġdown To Ġstart Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( poker List [ j Ġ- Ġ 1 ]. suit Ġ<= Ġp oker List [ j ]. suit ) Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Ġ= Ġp oker List [ j Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp oker List [ j Ġ- Ġ 1 ] Ġ= Ġp oker List [ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp oker List [ j ] Ġ= Ġtemp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġstart Ġ= Ġ 0 ĊĠĠĠ Ġfor Ġ( i Ġin Ġp oker List . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( poker List [ i ]. points Ġ!= Ġp oker List [ start ]. points ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort Poker By Suit ( start , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġi ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ å®ļä¹ī æī ĳ åħĭ ç±» ï¼Į åĮħåĲ« çĤ¹ æķ° åĴĮ èĬ± èī² ä¸¤ä¸ª åıĺéĩı ï¼Į çĤ¹ æķ° ä¸º [ 0 , 1 2 ] åħ± 1 3 ç§į ï¼Į èĬ± èī² ä¸º åĽĽ ä¸ª æŀļ ä¸¾ åĢ¼ ï¼Į ä¸į åĮħåĲ« å¤§å°ı çİĭ æľī 4 * 1 3 = 5 2 ç§į Ċ Ġ*/ Ċ class ĠP oker ( val Ġpoints : ĠInt , Ġval Ġsuit : ĠS uit ) Ġ: ĠComparable < Poker > Ġ{ ĊĠĠĠ Ġenum Ġclass ĠS uit Ġ{ ĊĠĠĠĠĠĠĠ ĠSP ADE , Ġ// é»ĳ æ¡ ĥ ĊĠĠĠĠĠĠĠ ĠHE ART , Ġ// çº¢ æ¡ ĥ ĊĠĠĠĠĠĠĠ ĠCL UB , Ġ// æ¢ ħ èĬ± ĊĠĠĠĠĠĠĠ ĠDI AM OND Ġ// æĸ¹ çīĩ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠP oker ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpoints Ġ- Ġother . points ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ points }:${ suit . name }" ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġ// ä¸Ģ åī¯ æī ĳ åħĭ æİĴ éĻ¤ å¤§å°ı çİĭ åħ± 5 2 å¼ł ĊĠĠĠ Ġval Ġp oker List Ġ= ĠArray ( 5 2 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠP oker ( it Ġ/ Ġ 4 , Ġenum ValueOf ( it Ġ% Ġ 4 )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// æīĵ ä¹± æī ĳ åħĭ ĊĠĠĠ ĠStd Random . shuffle ( poker List ) ĊĠĠĠ Ġprintln ( poker List . join ToString ()) ĊĠĠĠ Ġex 1 3 _ Deck Sort ( poker List ) ĊĠĠĠ Ġprintln ( poker List . join ToString ()) Ċ } Ċ