SingleValueFunction.cs 114 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using TrendChartSDK.Common;
  5. using TrendChartSDK.Entity.Base;
  6. using TrendChartSDK.Entity.Lottery.QTC;
  7. using TrendChartSDK.Entity.TrendChart;
  8. namespace TrendChartSDK.TrendChartManager
  9. {
  10. /// <summary>
  11. /// 获取单值项值类
  12. /// </summary>
  13. public class SingleValueFunction
  14. {
  15. /// <summary>
  16. /// [单值单列]开奖号码展示项
  17. /// </summary>
  18. /// <typeparam name="TEntity">泛型实体</typeparam>
  19. /// <param name="entity">实体</param>
  20. /// <param name="indexStart">开奖号开始</param>
  21. /// <param name="indexEnd">开奖号结束</param>
  22. /// <param name="count">项中列的个数</param>
  23. /// <returns>单列多个或全部开奖号码展示项</returns>
  24. [ChartFunction("[单值单列]开奖号码展示项", ChartItemType.SingleCell_OpenCodeItem, ChartItemClassName.SingleValue)]
  25. public static string GetOpenCodeItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  26. {
  27. IList<int> list = new List<int>(entity.OpenCode);
  28. if (-1 != indexEnd)
  29. {
  30. for (int i = list.Count - 1; i >= indexEnd; i--)
  31. { list.RemoveAt(indexEnd); }
  32. }
  33. for (int i = 0; i < indexStart; i++)
  34. { list.RemoveAt(0); }
  35. string num = "";
  36. foreach (int item in list)
  37. {
  38. num = num + item.ToString();
  39. }
  40. return num;
  41. }
  42. /// <summary>
  43. /// [单值单列]开奖号和值项
  44. /// </summary>
  45. /// <typeparam name="TEntity">泛型实体</typeparam>
  46. /// <param name="entity">实体</param>
  47. /// <param name="indexStart">开奖号开始</param>
  48. /// <param name="indexEnd">开奖号结束</param>
  49. /// <param name="count">项中列的个数</param>
  50. /// <returns>单列和值项</returns>
  51. [ChartFunction("[单值单列]开奖号和值项", ChartItemType.SingleCell_SumItem, ChartItemClassName.SingleValue)]
  52. public static string GetSumItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  53. {
  54. IList<int> list = new List<int>(entity.OpenCode);
  55. //modified by zizi, at 2017-1-4
  56. //对快乐扑克3开奖号和值项
  57. var klpk3_entity = entity as GP_KLPK3_ShanDong;
  58. if (klpk3_entity != null)
  59. list = GetTCKLPK3OpenCodes(klpk3_entity);
  60. if (-1 != indexEnd)
  61. {
  62. for (int i = list.Count - 1; i >= indexEnd; i--)
  63. { list.RemoveAt(indexEnd); }
  64. }
  65. for (int i = 0; i < indexStart; i++)
  66. { list.RemoveAt(0); }
  67. return LotteryUtils.GetSum(list).ToString();
  68. }
  69. /// <summary>
  70. /// [单值单列]开奖号和值尾数项
  71. /// </summary>
  72. /// <typeparam name="TEntity">泛型实体</typeparam>
  73. /// <param name="entity">实体</param>
  74. /// <param name="indexStart">开奖号开始</param>
  75. /// <param name="indexEnd">开奖号结束</param>
  76. /// <param name="count">项中列的个数</param>
  77. /// <returns>多个号码和值尾数项</returns>
  78. [ChartFunction("[单值单列]开奖号和值尾数项", ChartItemType.SingleCell_HeWeiItem, ChartItemClassName.SingleValue)]
  79. public static string GetHeWeiItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd) where TEntity : LotteryOpenCode
  80. {
  81. IList<int> list = new List<int>(entity.OpenCode);
  82. //modified by zizi, at 2017-1-4
  83. //对快乐扑克3开奖号和值尾数项
  84. var klpk3_entity = entity as GP_KLPK3_ShanDong;
  85. if (klpk3_entity != null)
  86. list = GetTCKLPK3OpenCodes(klpk3_entity);
  87. if (-1 != indexEnd)
  88. {
  89. for (int i = list.Count - 1; i >= indexEnd; i--)
  90. { list.RemoveAt(indexEnd); }
  91. }
  92. for (int i = 0; i < indexStart; i++)
  93. { list.RemoveAt(0); }
  94. return (LotteryUtils.GetSum(list) % 10).ToString();
  95. }
  96. /// <summary>
  97. /// [单值单列]开奖号012比例项
  98. /// </summary>
  99. /// <typeparam name="TEntity">泛型实体</typeparam>
  100. /// <param name="entity">实体</param>
  101. /// <param name="indexStart">开奖号开始</param>
  102. /// <param name="indexEnd">开奖号结束</param>
  103. /// <param name="count">项中列的个数</param>
  104. /// <returns>单列012比例项</returns>
  105. [ChartFunction("[单值单列]开奖号012比例项", ChartItemType.SingleCell_ProportionOf012Item, ChartItemClassName.SingleValue)]
  106. public static string GetProportionOf012ItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  107. {
  108. IList<int> list = new List<int>(entity.OpenCode);
  109. if (-1 != indexEnd)
  110. {
  111. for (int i = list.Count - 1; i >= indexEnd; i--)
  112. { list.RemoveAt(indexEnd); }
  113. }
  114. for (int i = 0; i < indexStart; i++)
  115. { list.RemoveAt(0); }
  116. return LotteryUtils.GetProportionOf012(list);
  117. }
  118. /// <summary>
  119. /// 质合项
  120. /// </summary>
  121. /// <typeparam name="TEntity">泛型实体</typeparam>
  122. /// <param name="entity">实体</param>
  123. /// <param name="indexStart">开奖号开始</param>
  124. /// <param name="indexEnd">开奖号结束</param>
  125. /// <param name="count">项中列的个数</param>
  126. /// <returns>质合项</returns>
  127. [ChartFunction("[单值单列]开奖号质合项", ChartItemType.SingleCell_ZhiHeStatusItem, ChartItemClassName.SingleValue)]
  128. public static string GetZhiHeItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  129. {
  130. IList<int> list = new List<int>(entity.OpenCode);
  131. //modified by zizi, at 2017-1-4
  132. //对快乐扑克3大小分布项
  133. var klpk3_entity = entity as GP_KLPK3_ShanDong;
  134. if (klpk3_entity != null)
  135. list = GetTCKLPK3OpenCodes(klpk3_entity);
  136. if (-1 != indexEnd)
  137. {
  138. for (int i = list.Count - 1; i >= indexEnd; i--)
  139. { list.RemoveAt(indexEnd); }
  140. }
  141. for (int i = 0; i < indexStart; i++)
  142. { list.RemoveAt(0); }
  143. var tag = "";
  144. foreach (var item in list)
  145. {
  146. tag = tag + (LotteryUtils.IsPrimeNumbers(item) ? "质" : "合");
  147. }
  148. return tag;
  149. }
  150. /// <summary>
  151. /// [单值单列]开奖号大小比例项
  152. /// </summary>
  153. /// <typeparam name="TEntity">泛型实体</typeparam>
  154. /// <param name="entity">实体</param>
  155. /// <param name="indexStart">开奖号开始</param>
  156. /// <param name="indexEnd">开奖号结束</param>
  157. /// <param name="count">项中列的个数</param>
  158. /// <param name="splitNumber">大小分隔值</param>
  159. /// <returns>单列大小比例项</returns>
  160. [ChartFunction("[单值单列]开奖号大小比例项", ChartItemType.SingleCell_ProportionOfDxItem, ChartItemClassName.SingleValue)]
  161. public static string GetProportionOfDxItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count, int splitNumber) where TEntity : LotteryOpenCode
  162. {
  163. IList<int> list = new List<int>(entity.OpenCode);
  164. //modified by zizi, at 2017-1-4
  165. //对快乐扑克3大小分布项
  166. var klpk3_entity = entity as GP_KLPK3_ShanDong;
  167. if (klpk3_entity != null)
  168. list = GetTCKLPK3OpenCodes(klpk3_entity);
  169. if (-1 != indexEnd)
  170. {
  171. for (int i = list.Count - 1; i >= indexEnd; i--)
  172. { list.RemoveAt(indexEnd); }
  173. }
  174. for (int i = 0; i < indexStart; i++)
  175. { list.RemoveAt(0); }
  176. return LotteryUtils.GetProportionOfDX(list, splitNumber);
  177. }
  178. /// <summary>
  179. /// [单值单列]开奖号奇偶比列项
  180. /// </summary>
  181. /// <typeparam name="TEntity">泛型实体</typeparam>
  182. /// <param name="entity">实体</param>
  183. /// <param name="indexStart">开奖号开始</param>
  184. /// <param name="indexEnd">开奖号结束</param>
  185. /// <param name="count">项中列的个数</param>
  186. /// <returns>单列奇偶比列项</returns>
  187. [ChartFunction("[单值单列]开奖号奇偶比列项", ChartItemType.SingleCell_ProportionOfJoItem, ChartItemClassName.SingleValue)]
  188. public static string GetProportionOfJoItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  189. {
  190. IList<int> list = new List<int>(entity.OpenCode);
  191. //modified by zizi, at 2017-1-4
  192. //对快乐扑克3大小分布项
  193. var klpk3_entity = entity as GP_KLPK3_ShanDong;
  194. if (klpk3_entity != null)
  195. list = GetTCKLPK3OpenCodes(klpk3_entity);
  196. if (-1 != indexEnd)
  197. {
  198. for (int i = list.Count - 1; i >= indexEnd; i--)
  199. { list.RemoveAt(indexEnd); }
  200. }
  201. for (int i = 0; i < indexStart; i++)
  202. { list.RemoveAt(0); }
  203. return LotteryUtils.GetProportionOfJO(list);
  204. }
  205. /// <summary>
  206. /// [单值单列]开奖号质合比列项
  207. /// </summary>
  208. /// <typeparam name="TEntity">泛型实体</typeparam>
  209. /// <param name="entity">实体</param>
  210. /// <param name="indexStart">开奖号开始</param>
  211. /// <param name="indexEnd">开奖号结束</param>
  212. /// <param name="count">项中列的个数</param>
  213. /// <returns>单列质合比列项</returns>
  214. [ChartFunction("[单值单列]开奖号质合比列项", ChartItemType.SingleCell_ProportionOfZhItem, ChartItemClassName.SingleValue)]
  215. public static string GetProportionOfZhItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  216. {
  217. IList<int> list = new List<int>(entity.OpenCode);
  218. //modified by zizi, at 2017-1-4
  219. //对快乐扑克3质合比项
  220. var klpk3_entity = entity as GP_KLPK3_ShanDong;
  221. if (klpk3_entity != null)
  222. list = GetTCKLPK3OpenCodes(klpk3_entity);
  223. if (-1 != indexEnd)
  224. {
  225. for (int i = list.Count - 1; i >= indexEnd; i--)
  226. { list.RemoveAt(indexEnd); }
  227. }
  228. for (int i = 0; i < indexStart; i++)
  229. { list.RemoveAt(0); }
  230. return LotteryUtils.GetProportionOfZh(list);
  231. }
  232. /// <summary>
  233. /// [单值单列]开奖号跨度项(大于两个号码)
  234. /// </summary>
  235. /// <typeparam name="TEntity">泛型实体</typeparam>
  236. /// <param name="entity">实体</param>
  237. /// <param name="indexStart">开奖号开始</param>
  238. /// <param name="indexEnd">开奖号结束</param>
  239. /// <param name="count">项中列的个数</param>
  240. /// <returns>全部号码跨度或两个号码以上(不包括两个号码)跨度</returns>
  241. [ChartFunction("[单值单列]开奖号跨度项(大于两个号码)", ChartItemType.SingleCell_SpanItem, ChartItemClassName.SingleValue)]
  242. public static string GetSpanItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  243. {
  244. IList<int> list = new List<int>(entity.OpenCode);
  245. if (-1 != indexEnd)
  246. {
  247. for (int i = list.Count - 1; i >= indexEnd; i--)
  248. { list.RemoveAt(indexEnd); }
  249. }
  250. for (int i = 0; i < indexStart; i++)
  251. { list.RemoveAt(0); }
  252. return LotteryUtils.GetSpan(list).ToString();
  253. }
  254. /// <summary>
  255. /// [单值单列]开奖号组三跨度项(大于两个号码)
  256. /// </summary>
  257. /// <typeparam name="TEntity">泛型实体</typeparam>
  258. /// <param name="entity">实体</param>
  259. /// <param name="indexStart">开奖号开始</param>
  260. /// <param name="indexEnd">开奖号结束</param>
  261. /// <param name="count">项中列的个数</param>
  262. /// <returns>全部号码跨度或两个号码以上(不包括两个号码)跨度</returns>
  263. [ChartFunction("[单值单列]开奖号组三跨度项(大于两个号码)", ChartItemType.SingleCell_ZSSpanItem, ChartItemClassName.SingleValue)]
  264. public static string GetZSSpanItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  265. {
  266. IList<int> list = new List<int>(entity.OpenCode);
  267. if (-1 != indexEnd)
  268. {
  269. for (int i = list.Count - 1; i >= indexEnd; i--)
  270. { list.RemoveAt(indexEnd); }
  271. }
  272. for (int i = 0; i < indexStart; i++)
  273. { list.RemoveAt(0); }
  274. return LotteryUtils.GetSpan(list).ToString();
  275. }
  276. /// <summary>
  277. /// [单值单列]开奖号AC值计算出012路值
  278. /// </summary>
  279. /// <typeparam name="TEntity">泛型实体</typeparam>
  280. /// <param name="entity">实体</param>
  281. /// <param name="indexStart">开奖号开始</param>
  282. /// <param name="indexEnd">开奖号结束</param>
  283. /// <param name="count">项中列的个数</param>
  284. /// <returns>根据AC值计算出012值</returns>
  285. [ChartFunction("[单值单列]开奖号AC值计算出012路值", ChartItemType.SingleCell_Ac012Lu, ChartItemClassName.SingleValue)]
  286. public static string GetAc012Lu<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  287. {
  288. IList<int> list = new List<int>(entity.OpenCode);
  289. if (-1 != indexEnd)
  290. {
  291. for (int i = list.Count - 1; i >= indexEnd; i--)
  292. { list.RemoveAt(indexEnd); }
  293. }
  294. for (int i = 0; i < indexStart; i++)
  295. { list.RemoveAt(0); }
  296. string[] kjh = new string[list.Count];
  297. for (int i = 0; i < list.Count; i++)
  298. {
  299. kjh[i] = list[i].ToString();
  300. }
  301. string ac = LotteryUtils.GetAC(kjh).ToString();
  302. return (int.Parse(ac) % 3).ToString();
  303. }
  304. /// <summary>
  305. /// [单值单列]开奖号AC值计算出质合值
  306. /// </summary>
  307. /// <typeparam name="TEntity">泛型实体</typeparam>
  308. /// <param name="entity">实体</param>
  309. /// <param name="indexStart">开奖号开始</param>
  310. /// <param name="indexEnd">开奖号结束</param>
  311. /// <param name="count">项中列的个数</param>
  312. /// <returns>质、合</returns>
  313. [ChartFunction("[单值单列]开奖号AC值计算出质合值", ChartItemType.SingleCell_AcZhiHe, ChartItemClassName.SingleValue)]
  314. public static string GetAcZhiHe<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  315. {
  316. IList<int> list = new List<int>(entity.OpenCode);
  317. if (-1 != indexEnd)
  318. {
  319. for (int i = list.Count - 1; i >= indexEnd; i--)
  320. { list.RemoveAt(indexEnd); }
  321. }
  322. for (int i = 0; i < indexStart; i++)
  323. { list.RemoveAt(0); }
  324. string[] kjh = new string[list.Count];
  325. for (int i = 0; i < list.Count; i++)
  326. {
  327. kjh[i] = list[i].ToString();
  328. }
  329. string ac = LotteryUtils.GetAC(kjh).ToString();
  330. if (LotteryUtils.IsPrimeNumbers(int.Parse(ac)))
  331. {
  332. return "质";
  333. }
  334. else
  335. {
  336. return "合";
  337. }
  338. }
  339. /// <summary>
  340. /// [单值单列]期号项
  341. /// </summary>
  342. /// <typeparam name="TEntity">泛型实体</typeparam>
  343. /// <param name="entity">实体</param>
  344. /// <param name="indexStart">开奖号开始</param>
  345. /// <param name="indexEnd">开奖号结束</param>
  346. /// <param name="count">项中列的个数</param>
  347. /// <returns>单列期数项</returns>
  348. [ChartFunction("[单值单列]期号项", ChartItemType.Term_TermItem, ChartItemClassName.SingleValue)]
  349. public static string GetTermItemValue<TEntity>(TEntity entity) where TEntity : LotteryOpenCode
  350. {
  351. return entity.Term.ToString();
  352. }
  353. /// <summary>
  354. /// [单值单列]大乐透附加区值
  355. /// </summary>
  356. /// <typeparam name="TEntity">泛型实体</typeparam>
  357. /// <param name="entity">实体</param>
  358. /// <param name="indexStart">开奖号开始</param>
  359. /// <param name="indexEnd">开奖号结束</param>
  360. /// <param name="count">项中列的个数</param>
  361. /// <returns>开奖号码(区间)</returns>
  362. [ChartFunction("[单值单列]大乐透附加区值", ChartItemType.SingleCell_HqItem, ChartItemClassName.SingleValue)]
  363. public static string GetHqValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  364. {
  365. IList<int> list = new List<int>(entity.OpenCode);
  366. if (-1 != indexEnd)
  367. {
  368. for (int i = list.Count - 1; i >= indexEnd; i--)
  369. { list.RemoveAt(indexEnd); }
  370. }
  371. for (int i = 0; i < indexStart; i++)
  372. { list.RemoveAt(0); }
  373. var tag = "";
  374. for (int i = 0; i < list.Count; i++)
  375. {
  376. tag += list[i].ToString("00");
  377. if (i != list.Count - 1)
  378. {
  379. tag += ",";
  380. }
  381. }
  382. return tag;
  383. }
  384. /// <summary>
  385. /// [单值单列]开奖号计算AC值(AC值是在不同数之间计算,因此号码个数必须大于1.注:indexStart于indexEnd必须同时有值,否则取全部号码)
  386. /// </summary>
  387. /// <typeparam name="TEntity">泛型实体</typeparam>
  388. /// <param name="entity">实体</param>
  389. /// <param name="indexStart">开奖号开始</param>
  390. /// <param name="indexEnd">开奖号结束</param>
  391. /// <param name="count">项中列的个数</param>
  392. /// <returns>AC值</returns>
  393. [ChartFunction("[单值单列]开奖号计算AC值", ChartItemType.SingleCell_Ac, ChartItemClassName.SingleValue)]
  394. public static string GetAcValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  395. {
  396. IList<int> list = new List<int>(entity.OpenCode);
  397. if (-1 != indexEnd)
  398. {
  399. for (int i = list.Count - 1; i >= indexEnd; i--)
  400. { list.RemoveAt(indexEnd); }
  401. }
  402. for (int i = 0; i < indexStart; i++)
  403. { list.RemoveAt(0); }
  404. string[] kjh = new string[list.Count];
  405. for (int i = 0; i < list.Count; i++)
  406. {
  407. kjh[i] = list[i].ToString();
  408. }
  409. return LotteryUtils.GetAC(kjh).ToString();
  410. }
  411. /// <summary>
  412. /// [单值多列]单个开奖号码分布项
  413. /// </summary>
  414. /// <typeparam name="TEntity">泛型实体</typeparam>
  415. /// <param name="entity">实体</param>
  416. /// <param name="indexStart">开奖号开始</param>
  417. /// <param name="indexEnd">开奖号结束</param>
  418. /// <param name="count">项中列的个数</param>
  419. /// <returns>获得单个开奖号码</returns>
  420. [ChartFunction("[单值多列]单个开奖号码分布项", ChartItemType.SingleValue_QuJianFenBu, ChartItemClassName.SingleValue)]
  421. public static string GetQuJianStatusItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  422. {
  423. return (entity.OpenCode[indexStart]).ToString();
  424. }
  425. /// <summary>
  426. /// 计算出和尾奇偶状态
  427. /// </summary>
  428. /// <typeparam name="TEntity">泛型实体</typeparam>
  429. /// <param name="entity">实体</param>
  430. /// <param name="indexStart">开奖号开始</param>
  431. /// <param name="indexEnd">开奖号结束</param>
  432. /// <param name="count">项中列的个数</param>
  433. /// <returns>奇、偶</returns>
  434. [ChartFunction("[单值多列]开奖号和尾奇偶分布项", ChartItemType.SingleValue_HeWeiJiOu, ChartItemClassName.SingleValue)]
  435. public static string GetHeWeiJiOuFenBu<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  436. {
  437. IList<int> list = new List<int>(entity.OpenCode);
  438. if (-1 != indexEnd)
  439. {
  440. for (int i = list.Count - 1; i >= indexEnd; i--)
  441. { list.RemoveAt(indexEnd); }
  442. }
  443. for (int i = 0; i < indexStart; i++)
  444. { list.RemoveAt(0); }
  445. int a = LotteryUtils.GetSum(list) % 10;
  446. if (a % 2 == 0)
  447. {
  448. return "偶";
  449. }
  450. else
  451. {
  452. return "奇";
  453. }
  454. }
  455. /// <summary>
  456. /// 单个开奖号码数字项,即单个开奖号码作为项的值
  457. /// </summary>
  458. /// <typeparam name="TEntity">泛型实体</typeparam>
  459. /// <param name="entity">实体</param>
  460. /// <param name="indexStart">开奖号开始</param>
  461. /// <param name="indexEnd">开奖号结束</param>
  462. /// <param name="count">项中列的个数</param>
  463. /// <returns>开奖号其中一位</returns>
  464. [ChartFunction("[单值多列]开奖号码单个数字项", ChartItemType.SingleValue_NumberItem, ChartItemClassName.SingleValue)]
  465. public static string GetNumberItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  466. {
  467. return entity.OpenCode[indexStart].ToString();
  468. }
  469. /// <summary>
  470. /// 两个号码跨度
  471. /// </summary>
  472. /// <typeparam name="TEntity">泛型实体</typeparam>
  473. /// <param name="entity">实体</param>
  474. /// <param name="indexStart">开奖号开始</param>
  475. /// <param name="indexEnd">开奖号结束</param>
  476. /// <param name="minValue">项最小值</param>
  477. /// <param name="maxValue">项最大值</param>
  478. /// <param name="lastItemIndex">上期重</param>
  479. /// <param name="itemcout"></param>
  480. /// <returns></returns>
  481. [ChartFunction("[单值单列]开奖号重号项", ChartItemType.SingleCell_RepeatedNumber, ChartItemClassName.SingleValue)]
  482. public static string GetRepeatNumItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int minValue, int maxValue, ref int[] lastItemIndex, int itemcout) where TEntity : LotteryOpenCode
  483. {
  484. IList<int> list = new List<int>(entity.OpenCode);
  485. if (-1 != indexEnd)
  486. {
  487. for (int i = list.Count - 1; i >= indexEnd; i--)
  488. { list.RemoveAt(indexEnd); }
  489. }
  490. for (int i = 0; i < indexStart; i++)
  491. { list.RemoveAt(0); }
  492. if (null == lastItemIndex)
  493. {
  494. lastItemIndex = new int[list.Count];
  495. for (int i = 0; i < list.Count; i++)
  496. {
  497. lastItemIndex[i] = list[i];
  498. }
  499. return "0";
  500. }
  501. int count = 0;
  502. foreach (var item in list)
  503. {
  504. if (lastItemIndex.Contains(item))
  505. {
  506. count++;
  507. }
  508. }
  509. lastItemIndex = new int[list.Count];
  510. for (int i = 0; i < list.Count; i++)
  511. {
  512. lastItemIndex[i] = list[i];
  513. }
  514. return count.ToString();
  515. }
  516. /// <summary>
  517. /// 计算连号项
  518. /// </summary>
  519. /// <typeparam name="TEntity">泛型实体</typeparam>
  520. /// <param name="entity">实体</param>
  521. /// <param name="indexStart">开奖号开始</param>
  522. /// <param name="indexEnd">开奖号结束</param>
  523. /// <param name="count">项中列的个数</param>
  524. /// <returns>连号值</returns>
  525. [ChartFunction("[单值单列]开奖号连号项", ChartItemType.SingleCell_LinkNumber, ChartItemClassName.SingleValue)]
  526. public static string GetLinkNumItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  527. {
  528. int linkNum = 0;
  529. List<int> nums = entity.OpenCode.Take(indexEnd - indexStart).ToList();
  530. nums.Sort();
  531. for (int i = 1; i < nums.Count; i++)
  532. {
  533. if (i != 0 && nums[i - 1] + 1 == nums[i])
  534. {
  535. linkNum++;
  536. }
  537. }
  538. return linkNum.ToString();
  539. }
  540. /// <summary>
  541. /// 单列试机号和值项
  542. /// </summary>
  543. /// <typeparam name="TEntity">泛型实体</typeparam>
  544. /// <param name="entity">实体</param>
  545. /// <param name="indexStart">开奖号开始</param>
  546. /// <param name="indexEnd">开奖号结束</param>
  547. /// <param name="count">项中列的个数</param>
  548. /// <returns>试机号和值项</returns>
  549. [ChartFunction("[单值单列]试机号和值项", ChartItemType.SingleCell_ShiJiHaoHzItem, ChartItemClassName.SingleValue)]
  550. public static string GetShiJiHaoHzValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  551. {
  552. IList<int> list = GetShiJiHaoList<TEntity>(entity, indexStart, indexEnd);
  553. return LotteryUtils.GetSum(list).ToString();
  554. }
  555. /// <summary>
  556. /// 试机号跨度
  557. /// </summary>
  558. /// <typeparam name="TEntity">泛型实体</typeparam>
  559. /// <param name="entity">实体</param>
  560. /// <param name="indexStart">开奖号开始</param>
  561. /// <param name="indexEnd">开奖号结束</param>
  562. /// <param name="count">项中列的个数</param>
  563. /// <returns>试机号跨度</returns>
  564. [ChartFunction("[单值单列]试机号跨度项", ChartItemType.SingleCell_ShiJiHaoSpanItem, ChartItemClassName.SingleValue)]
  565. public static string GetShiJiHaoSpanValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  566. {
  567. IList<int> list = GetShiJiHaoList<TEntity>(entity, indexStart, indexEnd);
  568. return LotteryUtils.GetSpan(list).ToString();
  569. }
  570. /// <summary>
  571. /// 试机号奇偶比例
  572. /// </summary>
  573. /// <typeparam name="TEntity">泛型实体</typeparam>
  574. /// <param name="entity">实体</param>
  575. /// <param name="indexStart">开奖号开始</param>
  576. /// <param name="indexEnd">开奖号结束</param>
  577. /// <param name="count">项中列的个数</param>
  578. /// <returns>试机号奇偶比例</returns>
  579. [ChartFunction("[单值单列]试机号奇偶比例项", ChartItemType.SingleCell_ProportionOfShiJiHaoJoItem, ChartItemClassName.SingleValue)]
  580. public static string GetProportionOfShiJiHaoJoItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  581. {
  582. IList<int> list = GetShiJiHaoList<TEntity>(entity, indexStart, indexEnd);
  583. return LotteryUtils.GetProportionOfJO(list);
  584. }
  585. /// <summary>
  586. /// 试机号大小比例
  587. /// </summary>
  588. /// <typeparam name="TEntity">泛型实体</typeparam>
  589. /// <param name="entity">实体</param>
  590. /// <param name="indexStart">开奖号开始</param>
  591. /// <param name="indexEnd">开奖号结束</param>
  592. /// <param name="count">项中列的个数</param>
  593. /// <param name="splitNumber">大小分隔值</param>
  594. /// <returns>试机号大小比例</returns>
  595. [ChartFunction("[单值单列]试机号大小比例项", ChartItemType.SingleCell_ProportionOfShiJiHaoDxItem, ChartItemClassName.SingleValue)]
  596. public static string GetProportionOfShiJiHaoDxItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count, int splitNumber) where TEntity : LotteryOpenCode
  597. {
  598. IList<int> list = GetShiJiHaoList<TEntity>(entity, indexStart, indexEnd);
  599. return LotteryUtils.GetProportionOfDX(list, splitNumber);
  600. }
  601. /// <summary>
  602. /// 单列组三遗漏项
  603. /// </summary>
  604. /// <typeparam name="TEntity">泛型实体</typeparam>
  605. /// <param name="entity">实体</param>
  606. /// <param name="lastTerm">最近一期期号</param>
  607. /// <returns>组三遗漏</returns>
  608. [ChartFunction("[单值单列]开奖号组三遗漏项", ChartItemType.SingleCell_ZsMissItem, ChartItemClassName.SingleValue)]
  609. public static string GetZsMissItem<TEntity>(TEntity entity, ref long lastTerm) where TEntity : LotteryOpenCode
  610. {
  611. string miss = "";
  612. if (lastTerm == 0)
  613. {
  614. lastTerm = entity.Term;
  615. return "0";
  616. }
  617. if (entity.Term.ToString().Substring(0, 4) == lastTerm.ToString().Substring(0, 4))
  618. {
  619. miss = (entity.Term - lastTerm - 1).ToString();
  620. lastTerm = entity.Term;
  621. return miss;
  622. }
  623. //上一期的年数
  624. int year = Convert.ToInt32(lastTerm.ToString().Substring(0, 4));
  625. //上一年的最大期数
  626. long lastmaxqi = 0;
  627. if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
  628. {
  629. //瑞年
  630. lastmaxqi = year * 1000 + 359;
  631. }
  632. else
  633. {
  634. lastmaxqi = year * 1000 + 358;
  635. }
  636. long num = lastmaxqi - lastTerm - 1;
  637. long Tnum = num + (entity.Term - (Convert.ToInt32(entity.Term.ToString().Substring(0, 4)) * 1000 + 1));
  638. lastTerm = entity.Term;
  639. return Tnum.ToString();
  640. }
  641. /// <summary>
  642. /// 计算组三号码(必须为三个开奖号码)
  643. /// </summary>
  644. /// <typeparam name="TEntity">泛型实体</typeparam>
  645. /// <param name="entity">实体</param>
  646. /// <returns>组三号码</returns>
  647. [ChartFunction("[单值单列]开奖号组三号码项", ChartItemType.SingleCell_ZsHaoMaItem, ChartItemClassName.SingleValue)]
  648. public static string GetZsHaoMaValue<TEntity>(TEntity entity) where TEntity : LotteryOpenCode
  649. {
  650. IList<int> list = new List<int>(entity.OpenCode);
  651. if (list[0] == list[1])
  652. {
  653. return list[0].ToString();
  654. }
  655. if (list[0] == list[2])
  656. {
  657. return list[0].ToString();
  658. }
  659. return list[1].ToString();
  660. }
  661. /// <summary>
  662. /// [单值单列]试机号展示项(限定福彩3D和排列三)
  663. /// </summary>
  664. /// <typeparam name="TEntity">泛型实体</typeparam>
  665. /// <param name="entity">实体</param>
  666. /// <param name="indexStart">开奖号开始</param>
  667. /// <param name="indexEnd">开奖号结束</param>
  668. /// <param name="count">项中列的个数</param>
  669. /// <returns>单列多个或全部试机号展示项</returns>
  670. [ChartFunction("[单值单列]试机号展示项(限福彩3D和排列三)", ChartItemType.SingleCell_ShiJiHao, ChartItemClassName.SingleValue)]
  671. public static string GetShiJiHaoItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  672. {
  673. IList<int> list = GetShiJiHaoList<TEntity>(entity, indexStart, indexEnd);
  674. string num = "";
  675. foreach (int item in list)
  676. {
  677. num = num + item.ToString();
  678. }
  679. return num;
  680. }
  681. /// <summary>
  682. /// 计算三区比(适用于双色球)
  683. /// </summary>
  684. /// <typeparam name="TEntity">泛型实体</typeparam>
  685. /// <param name="entity">实体</param>
  686. /// <param name="indexStart">开奖号开始</param>
  687. /// <param name="indexEnd">开奖号结束</param>
  688. /// <param name="count">项中列的个数</param>
  689. /// <returns>三区比(双色球)</returns>
  690. [ChartFunction("[单值单列]开奖号三区比项(限双色球)", ChartItemType.SingleCell_SanQu, ChartItemClassName.SingleValue)]
  691. public static string GetSsqsanqu<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  692. {
  693. IList<int> list = new List<int>(entity.OpenCode);
  694. if (-1 != indexEnd)
  695. {
  696. for (int i = list.Count - 1; i >= indexEnd; i--)
  697. { list.RemoveAt(indexEnd); }
  698. }
  699. for (int i = 0; i < indexStart; i++)
  700. { list.RemoveAt(0); }
  701. return LotteryUtils.SsqSanQu(list);
  702. }
  703. /// <summary>
  704. /// 开奖号码012值
  705. /// </summary>
  706. /// <typeparam name="TEntity">泛型实体</typeparam>
  707. /// <param name="entity">实体</param>
  708. /// <param name="indexStart">开奖号开始</param>
  709. /// <param name="indexEnd">开奖号结束</param>
  710. /// <param name="count">项中列的个数</param>
  711. /// <returns>开奖号码012值</returns>
  712. [ChartFunction("[单值单列]开奖号码012值", ChartItemType.SingleCell_012StatusItem, ChartItemClassName.SingleValue)]
  713. public static string Get012StatusItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  714. {
  715. IList<int> list = new List<int>(entity.OpenCode);
  716. if (-1 != indexEnd)
  717. {
  718. for (int i = list.Count - 1; i >= indexEnd; i--)
  719. { list.RemoveAt(indexEnd); }
  720. }
  721. for (int i = 0; i < indexStart; i++)
  722. { list.RemoveAt(0); }
  723. var tag = "";
  724. foreach (var item in list)
  725. {
  726. tag = tag + (item % 3).ToString();
  727. }
  728. return tag;
  729. }
  730. [ChartFunction("[单值多列]开奖号跨度项(两个号码)", ChartItemType.SingleValue_SpanNumberItem, ChartItemClassName.SingleValue)]
  731. public static string GetSpanNumberItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  732. {
  733. return (Math.Abs(entity.OpenCode[indexStart] - entity.OpenCode[indexEnd])).ToString();
  734. }
  735. /// <summary>
  736. /// 全部号码跨度或两个号码以上(不包括两个号码)跨度分布
  737. /// </summary>
  738. /// <typeparam name="TEntity">泛型实体</typeparam>
  739. /// <param name="entity">实体</param>
  740. /// <param name="indexStart">开奖号开始</param>
  741. /// <param name="indexEnd">开奖号结束</param>
  742. /// <param name="count">项中列的个数</param>
  743. /// <returns>全部号码跨度或两个号码以上(不包括两个号码)跨度</returns>
  744. [ChartFunction("[单值多列]开奖号跨度(大于两个号码)分布项", ChartItemType.SingleValue_SpanItem, ChartItemClassName.SingleValue)]
  745. public static string GetSpanSingleValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  746. {
  747. IList<int> list = new List<int>(entity.OpenCode);
  748. if (-1 != indexEnd)
  749. {
  750. for (int i = list.Count - 1; i >= indexEnd; i--)
  751. { list.RemoveAt(indexEnd); }
  752. }
  753. for (int i = 0; i < indexStart; i++)
  754. { list.RemoveAt(0); }
  755. return LotteryUtils.GetSpan(list).ToString();
  756. }
  757. /// <summary>
  758. /// 单值_多个号码和值尾数分布项
  759. /// </summary>
  760. /// <typeparam name="TEntity">泛型实体</typeparam>
  761. /// <param name="entity">实体</param>
  762. /// <param name="indexStart">开奖号开始</param>
  763. /// <param name="indexEnd">开奖号结束</param>
  764. /// <param name="count">项中列的个数</param>
  765. /// <returns>多个号码和值尾数项</returns>
  766. [ChartFunction("[单值多列]开奖号和尾分布项", ChartItemType.SingleValue_HeWeiItem, ChartItemClassName.SingleValue)]
  767. public static string GetHeWeiSingleValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  768. {
  769. IList<int> list = new List<int>(entity.OpenCode);
  770. //modified by zizi, at 2017-1-4
  771. //对快乐扑克3开奖号和尾分布项
  772. var klpk3_entity = entity as GP_KLPK3_ShanDong;
  773. if (klpk3_entity != null)
  774. list = GetTCKLPK3OpenCodes(klpk3_entity);
  775. if (-1 != indexEnd)
  776. {
  777. for (int i = list.Count - 1; i >= indexEnd; i--)
  778. { list.RemoveAt(indexEnd); }
  779. }
  780. for (int i = 0; i < indexStart; i++)
  781. { list.RemoveAt(0); }
  782. return (LotteryUtils.GetSum(list) % 10).ToString();
  783. }
  784. /// <summary>
  785. /// 单列和值分布项
  786. /// </summary>
  787. /// <typeparam name="TEntity">泛型实体</typeparam>
  788. /// <param name="entity">实体</param>
  789. /// <param name="indexStart">开奖号开始</param>
  790. /// <param name="indexEnd">开奖号结束</param>
  791. /// <param name="count">项中列的个数</param>
  792. /// <returns>单列和值项</returns>
  793. [ChartFunction("[单值多列]开奖号和值分布项", ChartItemType.SingleValue_SumItem, ChartItemClassName.SingleValue)]
  794. public static string GetSumSingleValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  795. {
  796. IList<int> list = new List<int>(entity.OpenCode);
  797. //modified by zizi, at 2017-1-4
  798. //对快乐扑克3开奖号和值分布项
  799. var klpk3_entity = entity as GP_KLPK3_ShanDong;
  800. if (klpk3_entity != null)
  801. list = GetTCKLPK3OpenCodes(klpk3_entity);
  802. if (-1 != indexEnd)
  803. {
  804. for (int i = list.Count - 1; i >= indexEnd; i--)
  805. { list.RemoveAt(indexEnd); }
  806. }
  807. for (int i = 0; i < indexStart; i++)
  808. { list.RemoveAt(0); }
  809. return LotteryUtils.GetSum(list).ToString();
  810. }
  811. /// <summary>
  812. /// 单列和值分布(区间)项
  813. /// </summary>
  814. /// <typeparam name="TEntity">泛型实体</typeparam>
  815. /// <param name="entity">实体</param>
  816. /// <param name="indexStart">开奖号开始</param>
  817. /// <param name="indexEnd">开奖号结束</param>
  818. /// <param name="count">项中列的个数</param>
  819. /// <returns>单列和值项</returns>
  820. [ChartFunction("[单值多列]开奖号和值分布项(根据区间)", ChartItemType.SingleValue_SumItemGroup, ChartItemClassName.SingleValue)]
  821. public static string GetSumSingleValueGroup<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  822. {
  823. IList<int> list = new List<int>(entity.OpenCode);
  824. if (-1 != indexEnd)
  825. {
  826. for (int i = list.Count - 1; i >= indexEnd; i--)
  827. { list.RemoveAt(indexEnd); }
  828. }
  829. for (int i = 0; i < indexStart; i++)
  830. { list.RemoveAt(0); }
  831. return LotteryUtils.GetSum(list).ToString();
  832. }
  833. /// <summary>
  834. /// 通过AC值计算出奇偶状态
  835. /// </summary>
  836. /// <typeparam name="TEntity">泛型实体</typeparam>
  837. /// <param name="entity">实体</param>
  838. /// <param name="indexStart">开奖号开始</param>
  839. /// <param name="indexEnd">开奖号结束</param>
  840. /// <param name="count">项中列的个数</param>
  841. /// <returns>值计算出奇偶状态</returns>
  842. [ChartFunction("[单值多列]开奖号AC值计算出奇偶分布项", ChartItemType.SingleCell_AcJiOu, ChartItemClassName.SingleValue)]
  843. public static string GetAcJiOu<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  844. {
  845. IList<int> list = new List<int>(entity.OpenCode);
  846. if (-1 != indexEnd)
  847. {
  848. for (int i = list.Count - 1; i >= indexEnd; i--)
  849. { list.RemoveAt(indexEnd); }
  850. }
  851. for (int i = 0; i < indexStart; i++)
  852. { list.RemoveAt(0); }
  853. string[] kjh = new string[list.Count];
  854. for (int i = 0; i < list.Count; i++)
  855. {
  856. kjh[i] = list[i].ToString();
  857. }
  858. string ac = LotteryUtils.GetAC(kjh).ToString();
  859. if (LotteryUtils.IsJoNumbers(int.Parse(ac)))
  860. {
  861. return "奇";
  862. }
  863. else
  864. {
  865. return "偶";
  866. }
  867. }
  868. /// <summary>
  869. /// 单个或多个开奖号码大小状态项
  870. /// </summary>
  871. /// <typeparam name="TEntity">泛型实体</typeparam>
  872. /// <param name="entity">实体</param>
  873. /// <param name="indexStart">开奖号开始</param>
  874. /// <param name="indexEnd">开奖号结束</param>
  875. /// <param name="count">项中列的个数</param>
  876. /// <returns>单个或多个开奖号码大小状态项</returns>
  877. [ChartFunction("[单值多列]开奖号码大小分布项", ChartItemType.SingleValue_DaXiaoStatusItem, ChartItemClassName.SingleValue)]
  878. public static string GetDaXiaoStatusItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count, int splitNumber) where TEntity : LotteryOpenCode
  879. {
  880. IList<int> list = new List<int>(entity.OpenCode);
  881. //modified by zizi, at 2017-1-4
  882. //对快乐扑克3大小分布项
  883. var klpk3_entity = entity as GP_KLPK3_ShanDong;
  884. if (klpk3_entity != null)
  885. list = GetTCKLPK3OpenCodes(klpk3_entity);
  886. if (-1 != indexEnd)
  887. {
  888. for (int i = list.Count - 1; i >= indexEnd; i--)
  889. { list.RemoveAt(indexEnd); }
  890. }
  891. for (int i = 0; i < indexStart; i++)
  892. { list.RemoveAt(0); }
  893. var tag = "";
  894. foreach (var item in list)
  895. {
  896. tag = tag + (item >= splitNumber ? "大" : "小");
  897. }
  898. return tag;
  899. }
  900. /// <summary>
  901. /// 单个或多个开奖号码奇偶状态项
  902. /// </summary>
  903. /// <typeparam name="TEntity">泛型实体</typeparam>
  904. /// <param name="entity">实体</param>
  905. /// <param name="indexStart">开奖号开始</param>
  906. /// <param name="indexEnd">开奖号结束</param>
  907. /// <param name="count">项中列的个数</param>
  908. /// <returns>单个或多个开奖号码奇偶状态项</returns>
  909. [ChartFunction("[单值多列]开奖号码奇偶分布项", ChartItemType.SingleValue_JiOuStatusItem, ChartItemClassName.SingleValue)]
  910. public static string GetJiOuStatusItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  911. {
  912. IList<int> list = new List<int>(entity.OpenCode);
  913. //modified by zizi, at 2017-1-4
  914. //对快乐扑克3大小分布项
  915. var klpk3_entity = entity as GP_KLPK3_ShanDong;
  916. if (klpk3_entity != null)
  917. list = GetTCKLPK3OpenCodes(klpk3_entity);
  918. if (-1 != indexEnd)
  919. {
  920. for (int i = list.Count - 1; i >= indexEnd; i--)
  921. { list.RemoveAt(indexEnd); }
  922. }
  923. for (int i = 0; i < indexStart; i++)
  924. { list.RemoveAt(0); }
  925. var tag = "";
  926. foreach (var item in list)
  927. {
  928. tag = tag + (1 == item % 2 ? "奇" : "偶");
  929. }
  930. return tag;
  931. }
  932. /// <summary>
  933. /// 单个开奖号码012形态项
  934. /// </summary>
  935. /// <typeparam name="TEntity">泛型实体</typeparam>
  936. /// <param name="entity">实体</param>
  937. /// <param name="indexStart">开奖号开始</param>
  938. /// <param name="indexEnd">开奖号结束</param>
  939. /// <param name="count">项中列的个数</param>
  940. /// <returns>单个开奖号码012形态项</returns>
  941. [ChartFunction("[单值多列]开奖号码012路分布项", ChartItemType.SingleValue_Number012StatusItem, ChartItemClassName.SingleValue)]
  942. public static string GetNumber012StatusItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  943. {
  944. IList<int> list = new List<int>(entity.OpenCode);
  945. if (-1 != indexEnd)
  946. {
  947. for (int i = list.Count - 1; i >= indexEnd; i--)
  948. { list.RemoveAt(indexEnd); }
  949. }
  950. for (int i = 0; i < indexStart; i++)
  951. { list.RemoveAt(0); }
  952. var tag = "";
  953. foreach (var item in list)
  954. {
  955. tag = tag + (item % 3).ToString();
  956. }
  957. return tag;
  958. //return (entity.OpenCode[indexStart] % 3).ToString();
  959. }
  960. /// <summary>
  961. /// 质合状态项
  962. /// </summary>
  963. /// <typeparam name="TEntity">泛型实体</typeparam>
  964. /// <param name="entity">实体</param>
  965. /// <param name="indexStart">开奖号开始</param>
  966. /// <param name="indexEnd">开奖号结束</param>
  967. /// <param name="count">项中列的个数</param>
  968. /// <returns>质合状态项</returns>
  969. [ChartFunction("[单值多列]开奖号质合分布项", ChartItemType.SingleValue_ZhiHeStatusItem, ChartItemClassName.SingleValue)]
  970. public static string GetZhiHeStatusItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  971. {
  972. IList<int> list = new List<int>(entity.OpenCode);
  973. //modified by zizi, at 2017-1-4
  974. //对快乐扑克3开奖号质合分布项
  975. var klpk3_entity = entity as GP_KLPK3_ShanDong;
  976. if (klpk3_entity != null)
  977. list = GetTCKLPK3OpenCodes(klpk3_entity);
  978. if (-1 != indexEnd)
  979. {
  980. for (int i = list.Count - 1; i >= indexEnd; i--)
  981. { list.RemoveAt(indexEnd); }
  982. }
  983. for (int i = 0; i < indexStart; i++)
  984. { list.RemoveAt(0); }
  985. var tag = "";
  986. foreach (var item in list)
  987. {
  988. tag = tag + (LotteryUtils.IsPrimeNumbers(item) ? "质" : "合");
  989. }
  990. return tag;
  991. }
  992. /// <summary>
  993. /// 号码组合项:组三、组六或组三、组六、豹子(特殊类项)
  994. /// 此项只有两至三列且限三个开奖号码
  995. /// </summary>
  996. /// <typeparam name="TEntity">泛型实体</typeparam>
  997. /// <param name="entity">实体</param>
  998. /// <param name="indexStart">开奖号开始</param>
  999. /// <param name="indexEnd">开奖号结束</param>
  1000. /// <param name="count">项中列的个数</param>
  1001. /// <returns>组三、组六、豹子</returns>
  1002. [ChartFunction("[单值多列]开奖号组合项(组三、组六、豹子:限三个号码)", ChartItemType.SingleValue_ZuHeStatusItem, ChartItemClassName.SingleValue)]
  1003. public static string GetZuHeStatusItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1004. {
  1005. IList<int> list = LotteryUtils.GetOpenCodeList(entity, indexStart, indexEnd);
  1006. IDictionary<int, int> d = new Dictionary<int, int>();
  1007. foreach (var item in list)
  1008. {
  1009. if (!d.ContainsKey(item))
  1010. d.Add(item, 0);
  1011. d[item]++;
  1012. }
  1013. var tag = "组六";
  1014. foreach (var item in d.Keys)
  1015. {
  1016. if (3 == d[item])
  1017. {
  1018. tag = 2 == count ? "组三" : "豹子";
  1019. break;
  1020. }
  1021. if (2 == d[item])
  1022. {
  1023. tag = "组三";
  1024. break;
  1025. }
  1026. }
  1027. return tag;
  1028. }
  1029. /// <summary>
  1030. /// 单列多个或全部试机号展示项
  1031. /// 此目前限定福彩3D和排列三
  1032. /// </summary>
  1033. /// <typeparam name="TEntity">泛型实体</typeparam>
  1034. /// <param name="entity">实体</param>
  1035. /// <param name="indexStart">开奖号开始</param>
  1036. /// <param name="indexEnd">开奖号结束</param>
  1037. /// <param name="count">项中列的个数</param>
  1038. /// <returns>单列多个或全部试机号展示项</returns>
  1039. [ChartFunction("[单值多列]试机号展示项(限定福彩3D和排列三)", ChartItemType.SingleValue_ShiJiHao, ChartItemClassName.SingleValue)]
  1040. public static string GetShiJiHaoSingleValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1041. {
  1042. IList<int> list = GetShiJiHaoList<TEntity>(entity, indexStart, indexEnd);
  1043. string num = "";
  1044. foreach (int item in list)
  1045. {
  1046. num = num + item.ToString();
  1047. }
  1048. return num;
  1049. }
  1050. /// <summary>
  1051. /// [单值多列]和值的奇偶分布项
  1052. /// </summary>
  1053. /// <typeparam name="TEntity">泛型实体</typeparam>
  1054. /// <param name="entity">实体</param>
  1055. /// <param name="indexStart">开奖号开始</param>
  1056. /// <param name="indexEnd">开奖号结束</param>
  1057. /// <param name="count">项中列的个数</param>
  1058. /// <returns>奇、偶</returns>
  1059. [ChartFunction("[单值多列]开奖号和值的奇偶分布项", ChartItemType.SingleValue_HzJoStatusItem, ChartItemClassName.SingleValue)]
  1060. public static string GetHzJoStatusValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1061. {
  1062. IList<int> list = new List<int>(entity.OpenCode);
  1063. if (-1 != indexEnd)
  1064. {
  1065. for (int i = list.Count - 1; i >= indexEnd; i--)
  1066. { list.RemoveAt(indexEnd); }
  1067. }
  1068. for (int i = 0; i < indexStart; i++)
  1069. { list.RemoveAt(0); }
  1070. int sum = LotteryUtils.GetSum(list);
  1071. if (sum % 2 == 0)
  1072. {
  1073. return "偶";
  1074. }
  1075. else
  1076. {
  1077. return "奇";
  1078. }
  1079. }
  1080. /// <summary>
  1081. /// 计算和值大小状态
  1082. /// </summary>
  1083. /// <typeparam name="TEntity">泛型实体</typeparam>
  1084. /// <param name="entity">实体</param>
  1085. /// <param name="indexStart">开奖号开始</param>
  1086. /// <param name="indexEnd">开奖号结束</param>
  1087. /// <param name="count">项中列的个数</param>
  1088. /// <returns>大、小</returns>
  1089. [ChartFunction("[单值多列]开奖号和值大小分布项", ChartItemType.SingleValue_HzDxStatusItem, ChartItemClassName.SingleValue)]
  1090. public static string GetHzDxStatusValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int SplitNumberOfDX, int count) where TEntity : LotteryOpenCode
  1091. {
  1092. IList<int> list = new List<int>(entity.OpenCode);
  1093. if (-1 != indexEnd)
  1094. {
  1095. for (int i = list.Count - 1; i >= indexEnd; i--)
  1096. { list.RemoveAt(indexEnd); }
  1097. }
  1098. for (int i = 0; i < indexStart; i++)
  1099. { list.RemoveAt(0); }
  1100. int sum = LotteryUtils.GetSum(list);
  1101. if (sum >= SplitNumberOfDX)
  1102. {
  1103. return "大";
  1104. }
  1105. else
  1106. {
  1107. return "小";
  1108. }
  1109. }
  1110. /// <summary>
  1111. /// 计算开奖号各位大小状态
  1112. /// </summary>
  1113. /// <typeparam name="TEntity">泛型实体</typeparam>
  1114. /// <param name="entity">实体</param>
  1115. /// <param name="indexStart">开奖号开始</param>
  1116. /// <param name="indexEnd">开奖号结束</param>
  1117. /// <param name="count">项中列的个数</param>
  1118. /// <returns>开奖号各位大小状态</returns>
  1119. [ChartFunction("[单值多列]开奖号单个号码大小分布项", ChartItemType.SingleValue_DxStatusItem, ChartItemClassName.SingleValue)]
  1120. public static string GetDxStatusValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1121. {
  1122. IList<int> list = new List<int>(entity.OpenCode);
  1123. if (-1 != indexEnd)
  1124. {
  1125. for (int i = list.Count - 1; i >= indexEnd; i--)
  1126. { list.RemoveAt(indexEnd); }
  1127. }
  1128. for (int i = 0; i < indexStart; i++)
  1129. { list.RemoveAt(0); }
  1130. var tag = "";
  1131. foreach (var item in list)
  1132. {
  1133. tag = tag + (LotteryUtils.IsDxNumbers(item) ? "大" : "小");
  1134. }
  1135. return tag;
  1136. }
  1137. /// <summary>
  1138. /// 计算开奖号各位的奇偶状态
  1139. /// </summary>
  1140. /// <typeparam name="TEntity">泛型实体</typeparam>
  1141. /// <param name="entity">实体</param>
  1142. /// <param name="indexStart">开奖号开始</param>
  1143. /// <param name="indexEnd">开奖号结束</param>
  1144. /// <param name="count">项中列的个数</param>
  1145. /// <returns>开奖号各位的奇偶状态</returns>
  1146. [ChartFunction("[单值多列]开奖号单个号码奇偶分布项", ChartItemType.SingleValue_JoStatusItem, ChartItemClassName.SingleValue)]
  1147. public static string GetJoStatusItem<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1148. {
  1149. IList<int> list = new List<int>(entity.OpenCode);
  1150. if (-1 != indexEnd)
  1151. {
  1152. for (int i = list.Count - 1; i >= indexEnd; i--)
  1153. { list.RemoveAt(indexEnd); }
  1154. }
  1155. for (int i = 0; i < indexStart; i++)
  1156. { list.RemoveAt(0); }
  1157. var tag = "";
  1158. foreach (var item in list)
  1159. {
  1160. tag = tag + (LotteryUtils.IsJoNumbers(item) ? "奇" : "偶");
  1161. }
  1162. return tag;
  1163. }
  1164. /// <summary>
  1165. /// 计算组三形态
  1166. /// </summary>
  1167. /// <typeparam name="TEntity">泛型实体</typeparam>
  1168. /// <param name="entity">实体</param>
  1169. /// <param name="indexStart">开奖号开始</param>
  1170. /// <param name="indexEnd">开奖号结束</param>
  1171. /// <param name="count">项中列的个数</param>
  1172. /// <returns>组三形态(AAB形态返回)</returns>
  1173. [ChartFunction("[单值多列]开奖号组三分布项", ChartItemType.SingleValue_ZsStatusItem, ChartItemClassName.SingleValue)]
  1174. public static string GetZsStatusItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1175. {
  1176. IList<int> list = new List<int>(entity.OpenCode);
  1177. if (list[0] == list[1])
  1178. {
  1179. return "AAB";
  1180. }
  1181. if (list[0] == list[2])
  1182. {
  1183. return "ABA";
  1184. }
  1185. return "BAA";
  1186. }
  1187. /// <summary>
  1188. /// 计算组三奇偶形态
  1189. /// </summary>
  1190. /// <typeparam name="TEntity">泛型实体</typeparam>
  1191. /// <param name="entity">实体</param>
  1192. /// <returns>奇、偶</returns>
  1193. [ChartFunction("[单值多列]开奖号组三奇偶分布项", ChartItemType.SingleValue_ZsJoStatusItem, ChartItemClassName.SingleValue)]
  1194. public static string GetZsJoStatusValue<TEntity>(TEntity entity) where TEntity : LotteryOpenCode
  1195. {
  1196. int num = Convert.ToInt32(GetZsHaoMaValue(entity));
  1197. if (num % 2 == 0)
  1198. {
  1199. return "偶";
  1200. }
  1201. return "奇";
  1202. }
  1203. /// <summary>
  1204. /// 组三大小形态
  1205. /// </summary>
  1206. /// <typeparam name="TEntity">泛型实体</typeparam>
  1207. /// <param name="entity">实体</param>
  1208. /// <param name="splitNumber">大小分隔值</param>
  1209. /// <returns>组三大小形态</returns>
  1210. [ChartFunction("[单值多列]开奖号组三大小分布项", ChartItemType.SingleValue_ZsDxStatusItem, ChartItemClassName.SingleValue)]
  1211. public static string GetZsDxStatusValue<TEntity>(TEntity entity, int splitNumber) where TEntity : LotteryOpenCode
  1212. {
  1213. int num = Convert.ToInt32(GetZsHaoMaValue(entity));
  1214. if (num > splitNumber)
  1215. {
  1216. return "大";
  1217. }
  1218. return "小";
  1219. }
  1220. /// <summary>
  1221. /// 组三012路形态
  1222. /// </summary>
  1223. /// <typeparam name="TEntity">泛型实体</typeparam>
  1224. /// <param name="entity">实体</param>
  1225. /// <returns>路形态</returns>
  1226. [ChartFunction("[单值多列]开奖号组三012路分布项", ChartItemType.SingleValue_Zs012StatusItem, ChartItemClassName.SingleValue)]
  1227. public static string GetZs012StatusValue<TEntity>(TEntity entity) where TEntity : LotteryOpenCode
  1228. {
  1229. int num = Convert.ToInt32(GetZsHaoMaValue(entity));
  1230. return (num % 3).ToString();
  1231. }
  1232. /// <summary>
  1233. /// 试机号类型(组三、组六、豹子)
  1234. /// </summary>
  1235. /// <typeparam name="TEntity">泛型实体</typeparam>
  1236. /// <param name="entity">实体</param>
  1237. /// <param name="indexStart">开奖号开始</param>
  1238. /// <param name="indexEnd">开奖号结束</param>
  1239. /// <param name="count">项中列的个数</param>
  1240. /// <returns>组三、组六、豹子</returns>
  1241. [ChartFunction("[单值多列]试机号类型项(组三、组六、豹子:限三个开奖号码)", ChartItemType.SingleValue_ShiJiHaoTypeItem, ChartItemClassName.SingleValue)]
  1242. public static string GetShiJiHaoTyepValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1243. {
  1244. IList<int> list = GetShiJiHaoList<TEntity>(entity, indexStart, indexEnd);
  1245. IDictionary<int, int> d = new Dictionary<int, int>();
  1246. foreach (var item in list)
  1247. {
  1248. if (!d.ContainsKey(item))
  1249. d.Add(item, 0);
  1250. d[item]++;
  1251. }
  1252. var tag = "组六";
  1253. foreach (var item in d.Keys)
  1254. {
  1255. if (3 == d[item])
  1256. {
  1257. tag = 2 == count ? "组三" : "豹子";
  1258. break;
  1259. }
  1260. if (2 == d[item])
  1261. {
  1262. tag = "组三";
  1263. break;
  1264. }
  1265. }
  1266. return tag;
  1267. }
  1268. /// <summary>
  1269. /// 生肖状态项
  1270. /// </summary>
  1271. /// <typeparam name="TEntity">泛型实体</typeparam>
  1272. /// <param name="entity">实体</param>
  1273. /// <param name="indexStart">开奖号开始</param>
  1274. /// <param name="indexEnd">开奖号结束</param>
  1275. /// <param name="count">项中列的个数</param>
  1276. /// <returns>质合状态项</returns>
  1277. [ChartFunction("[单值多列]开奖号生肖分布项", ChartItemType.SingleValue_SX, ChartItemClassName.SingleValue)]
  1278. public static string GetSXStatusItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1279. {
  1280. IList<int> list = new List<int>(entity.OpenCode);
  1281. if (-1 != indexEnd)
  1282. {
  1283. for (int i = list.Count - 1; i >= indexEnd; i--)
  1284. { list.RemoveAt(indexEnd); }
  1285. }
  1286. for (int i = 0; i < indexStart; i++)
  1287. { list.RemoveAt(0); }
  1288. string[] SX = new string[12] { "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" };
  1289. var tag = "";
  1290. foreach (var item in list)
  1291. {
  1292. tag = tag + (item % 12 == 0 ? "猪" : SX[item % 12 - 1]);
  1293. }
  1294. return tag;
  1295. }
  1296. /// <summary>
  1297. /// 季节状态项
  1298. /// </summary>
  1299. /// <typeparam name="TEntity">泛型实体</typeparam>
  1300. /// <param name="entity">实体</param>
  1301. /// <param name="indexStart">开奖号开始</param>
  1302. /// <param name="indexEnd">开奖号结束</param>
  1303. /// <param name="count">项中列的个数</param>
  1304. /// <returns>质合状态项</returns>
  1305. [ChartFunction("[单值多列]开奖号季节分布项", ChartItemType.SingleValue_JJ, ChartItemClassName.SingleValue)]
  1306. public static string GetJJStatusItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1307. {
  1308. IList<int> list = new List<int>(entity.OpenCode);
  1309. if (-1 != indexEnd)
  1310. {
  1311. for (int i = list.Count - 1; i >= indexEnd; i--)
  1312. { list.RemoveAt(indexEnd); }
  1313. }
  1314. for (int i = 0; i < indexStart; i++)
  1315. { list.RemoveAt(0); }
  1316. var tag = "";
  1317. foreach (var item in list)
  1318. {
  1319. if (item >= 1 && item <= 9)
  1320. {
  1321. tag = tag + "春";
  1322. continue;
  1323. }
  1324. if (item >= 10 && item <= 18)
  1325. {
  1326. tag = tag + "夏";
  1327. continue;
  1328. }
  1329. if (item >= 19 && item <= 27)
  1330. {
  1331. tag = tag + "秋";
  1332. continue;
  1333. }
  1334. if (item >= 28 && item <= 36)
  1335. {
  1336. tag = tag + "冬";
  1337. continue;
  1338. }
  1339. }
  1340. return tag;
  1341. }
  1342. /// <summary>
  1343. /// 方位状态项
  1344. /// </summary>
  1345. /// <typeparam name="TEntity">泛型实体</typeparam>
  1346. /// <param name="entity">实体</param>
  1347. /// <param name="indexStart">开奖号开始</param>
  1348. /// <param name="indexEnd">开奖号结束</param>
  1349. /// <param name="count">项中列的个数</param>
  1350. /// <returns>质合状态项</returns>
  1351. [ChartFunction("[单值多列]开奖号方位分布项", ChartItemType.SingleValue_FW, ChartItemClassName.SingleValue)]
  1352. public static string GetFWStatusItemValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1353. {
  1354. IList<int> list = new List<int>(entity.OpenCode);
  1355. if (-1 != indexEnd)
  1356. {
  1357. for (int i = list.Count - 1; i >= indexEnd; i--)
  1358. { list.RemoveAt(indexEnd); }
  1359. }
  1360. for (int i = 0; i < indexStart; i++)
  1361. { list.RemoveAt(0); }
  1362. var tag = "";
  1363. foreach (var item in list)
  1364. {
  1365. if (item >= 1 && item <= 18)
  1366. {
  1367. if (item % 2 == 1)
  1368. {
  1369. tag = tag + "东";
  1370. }
  1371. else
  1372. {
  1373. tag = tag + "南";
  1374. }
  1375. continue;
  1376. }
  1377. if (item >= 19 && item <= 36)
  1378. {
  1379. if (item % 2 == 1)
  1380. {
  1381. tag = tag + "西";
  1382. }
  1383. else
  1384. {
  1385. tag = tag + "北";
  1386. }
  1387. continue;
  1388. }
  1389. }
  1390. return tag;
  1391. }
  1392. /// <summary>
  1393. /// 试机号转换成IList<int>类型
  1394. /// </summary>
  1395. /// <typeparam name="TEntity">泛型实体</typeparam>
  1396. /// <param name="entity">实体</param>
  1397. /// <param name="indexStart">开奖号开始</param>
  1398. /// <param name="indexEnd">开奖号结束</param>
  1399. /// <returns>试机号列表</returns>
  1400. private static IList<int> GetShiJiHaoList<TEntity>(TEntity entity, int indexStart, int indexEnd) where TEntity : LotteryOpenCode
  1401. {
  1402. if (entity.ShiJiHao == "-1")
  1403. {
  1404. return new List<int> { -1, -1, -1 };
  1405. }
  1406. string[] arr_sjh = entity.ShiJiHao.Split(',');
  1407. IList<int> list = new List<int>();
  1408. foreach (var item in arr_sjh)
  1409. {
  1410. list.Add(Convert.ToInt32(item));
  1411. }
  1412. if (-1 != indexEnd)
  1413. {
  1414. for (int i = list.Count - 1; i >= indexEnd; i--)
  1415. { list.RemoveAt(indexEnd); }
  1416. }
  1417. for (int i = 0; i < indexStart; i++)
  1418. { list.RemoveAt(0); }
  1419. return list;
  1420. }
  1421. /// <summary>
  1422. /// 回摆项
  1423. /// </summary>
  1424. /// <typeparam name="TEntity">泛型实体</typeparam>
  1425. /// <param name="entity">实体</param>
  1426. /// <param name="indexStart">开奖号开始</param>
  1427. /// <param name="indexEnd">开奖号结束</param>
  1428. /// <param name="minValue"></param>
  1429. /// <param name="maxValue"></param>
  1430. /// <param name="lastItemIndex"></param>
  1431. /// <param name="itemcout">项中列的个数</param>
  1432. /// <returns>回摆状态</returns>
  1433. [ChartFunction("[单值多列]回摆", ChartItemType.SingleValue_HB, ChartItemClassName.SingleValue)]
  1434. public static string HBSingleValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int minValue, int maxValue, ref int[] lastItemIndex, int itemcout) where TEntity : LotteryOpenCode
  1435. {
  1436. IList<int> list = new List<int>(entity.OpenCode);
  1437. if (-1 != indexEnd)
  1438. {
  1439. for (int i = list.Count - 1; i >= indexEnd; i--)
  1440. { list.RemoveAt(indexEnd); }
  1441. }
  1442. for (int i = 0; i < indexStart; i++)
  1443. { list.RemoveAt(0); }
  1444. if (null == lastItemIndex)
  1445. {
  1446. lastItemIndex = new int[list.Count];
  1447. for (int i = 0; i < list.Count; i++)
  1448. {
  1449. lastItemIndex[i] = list[i];
  1450. }
  1451. return "重号";
  1452. }
  1453. string result = "";
  1454. foreach (var item in list)
  1455. {
  1456. if (lastItemIndex[0] > item)
  1457. {
  1458. result = "反向";
  1459. break;
  1460. }
  1461. }
  1462. foreach (var item in list)
  1463. {
  1464. if (lastItemIndex[0] < item)
  1465. {
  1466. result = "正向";
  1467. break;
  1468. }
  1469. }
  1470. foreach (var item in list)
  1471. {
  1472. if (lastItemIndex[0] == item)
  1473. {
  1474. result = "重号";
  1475. break;
  1476. }
  1477. }
  1478. lastItemIndex = new int[list.Count];
  1479. for (int i = 0; i < list.Count; i++)
  1480. {
  1481. lastItemIndex[i] = list[i];
  1482. }
  1483. return result;
  1484. }
  1485. /// <summary>
  1486. /// 振幅项
  1487. /// </summary>
  1488. /// <typeparam name="TEntity">泛型实体</typeparam>
  1489. /// <param name="entity">实体</param>
  1490. /// <param name="indexStart">开奖号开始</param>
  1491. /// <param name="indexEnd">开奖号结束</param>
  1492. /// <param name="count">项中列的个数</param>
  1493. /// <returns>振幅值</returns>
  1494. [ChartFunction("[单值多列]振幅", ChartItemType.SingleCell_ZF, ChartItemClassName.SingleValue)]
  1495. public static string ZFSingleCell<TEntity>(TEntity entity, int indexStart, int indexEnd, int minValue, int maxValue, ref int[] lastItemIndex, int itemcout) where TEntity : LotteryOpenCode
  1496. {
  1497. IList<int> list = new List<int>(entity.OpenCode);
  1498. if (-1 != indexEnd)
  1499. {
  1500. for (int i = list.Count - 1; i >= indexEnd; i--)
  1501. { list.RemoveAt(indexEnd); }
  1502. }
  1503. for (int i = 0; i < indexStart; i++)
  1504. { list.RemoveAt(0); }
  1505. if (null == lastItemIndex)
  1506. {
  1507. lastItemIndex = new int[list.Count];
  1508. for (int i = 0; i < list.Count; i++)
  1509. {
  1510. lastItemIndex[i] = list[i];
  1511. }
  1512. return list.Sum().ToString();
  1513. }
  1514. int result = list.Sum() - lastItemIndex.Sum();
  1515. lastItemIndex = new int[list.Count];
  1516. for (int i = 0; i < list.Count; i++)
  1517. {
  1518. lastItemIndex[i] = list[i];
  1519. }
  1520. return Math.Abs(result).ToString();
  1521. }
  1522. /// <summary>
  1523. /// 福建31选7三区比
  1524. /// </summary>
  1525. /// <typeparam name="TEntity"></typeparam>
  1526. /// <param name="entity"></param>
  1527. /// <param name="indexStart"></param>
  1528. /// <param name="indexEnd"></param>
  1529. /// <param name="count"></param>
  1530. /// <returns></returns>
  1531. [ChartFunction("[单值单列]福建31选7三区比", ChartItemType.SingleCell_FJ31X7SanQu, ChartItemClassName.SingleValue)]
  1532. public static string GetFj31x7sanqu<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1533. {
  1534. IList<int> list = new List<int>(entity.OpenCode);
  1535. if (-1 != indexEnd)
  1536. {
  1537. for (int i = list.Count - 1; i >= indexEnd; i--)
  1538. { list.RemoveAt(indexEnd); }
  1539. }
  1540. for (int i = 0; i < indexStart; i++)
  1541. { list.RemoveAt(0); }
  1542. return LotteryUtils.Fj31x7SanQu(list);
  1543. }
  1544. /// <summary>
  1545. /// 福建36选7三区比
  1546. /// </summary>
  1547. /// <typeparam name="TEntity"></typeparam>
  1548. /// <param name="entity"></param>
  1549. /// <param name="indexStart"></param>
  1550. /// <param name="indexEnd"></param>
  1551. /// <param name="count"></param>
  1552. /// <returns></returns>
  1553. [ChartFunction("[单值单列]福建36选7三区比", ChartItemType.SingleCell_FJ36X7SanQu, ChartItemClassName.SingleValue)]
  1554. public static string GetFj36x7sanqu<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1555. {
  1556. IList<int> list = new List<int>(entity.OpenCode);
  1557. if (-1 != indexEnd)
  1558. {
  1559. for (int i = list.Count - 1; i >= indexEnd; i--)
  1560. { list.RemoveAt(indexEnd); }
  1561. }
  1562. for (int i = 0; i < indexStart; i++)
  1563. { list.RemoveAt(0); }
  1564. return LotteryUtils.Fj36x7SanQu(list);
  1565. }
  1566. /// <summary>
  1567. /// 和尾大小
  1568. /// </summary>
  1569. /// <typeparam name="TEntity"></typeparam>
  1570. /// <param name="entity"></param>
  1571. /// <param name="indexStart"></param>
  1572. /// <param name="indexEnd"></param>
  1573. /// <param name="count"></param>
  1574. /// <returns></returns>
  1575. [ChartFunction("[单值单列]和尾大小", ChartItemType.SingleValue_HeWeiDx, ChartItemClassName.SingleValue)]
  1576. public static string GetHeWeiDxFenBu<TEntity>(TEntity entity, int indexStart, int indexEnd, int SplitNumberOfDX, int count) where TEntity : LotteryOpenCode
  1577. {
  1578. IList<int> list = new List<int>(entity.OpenCode);
  1579. if (-1 != indexEnd)
  1580. {
  1581. for (int i = list.Count - 1; i >= indexEnd; i--)
  1582. { list.RemoveAt(indexEnd); }
  1583. }
  1584. for (int i = 0; i < indexStart; i++)
  1585. { list.RemoveAt(0); }
  1586. int sum = LotteryUtils.GetSum(list);
  1587. int hw = sum % 10;
  1588. if (hw >= SplitNumberOfDX)
  1589. {
  1590. return "大";
  1591. }
  1592. else
  1593. {
  1594. return "小";
  1595. }
  1596. }
  1597. /// <summary>
  1598. /// 生肖
  1599. /// </summary>
  1600. /// <typeparam name="TEntity"></typeparam>
  1601. /// <param name="entity"></param>
  1602. /// <param name="indexStart"></param>
  1603. /// <param name="indexEnd"></param>
  1604. /// <param name="count"></param>
  1605. /// <returns></returns>
  1606. [ChartFunction("[单值单列]东方6+1生肖", ChartItemType.SingleValue_ShengXiao, ChartItemClassName.SingleValue)]
  1607. public static string Getdf6j1sx<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1608. {
  1609. IList<int> list = new List<int>(entity.OpenCode);
  1610. if (-1 != indexEnd)
  1611. {
  1612. for (int i = list.Count - 1; i >= indexEnd; i--)
  1613. { list.RemoveAt(indexEnd); }
  1614. }
  1615. for (int i = 0; i < indexStart; i++)
  1616. { list.RemoveAt(0); }
  1617. switch (list[0])
  1618. {
  1619. case 1:
  1620. return "鼠";
  1621. case 2:
  1622. return "牛";
  1623. case 3:
  1624. return "虎";
  1625. case 4:
  1626. return "兔";
  1627. case 5:
  1628. return "龙";
  1629. case 6:
  1630. return "蛇";
  1631. case 7:
  1632. return "马";
  1633. case 8:
  1634. return "羊";
  1635. case 9:
  1636. return "猴";
  1637. case 10:
  1638. return "鸡";
  1639. case 11:
  1640. return "狗";
  1641. case 12:
  1642. return "猪";
  1643. default:
  1644. return "";
  1645. }
  1646. }
  1647. /// <summary>
  1648. /// 华东15选5三区比
  1649. /// </summary>
  1650. /// <typeparam name="TEntity"></typeparam>
  1651. /// <param name="entity"></param>
  1652. /// <param name="indexStart"></param>
  1653. /// <param name="indexEnd"></param>
  1654. /// <param name="count"></param>
  1655. /// <returns></returns>
  1656. [ChartFunction("[单值单列]华东15选5三区比", ChartItemType.SingleCell_Hd15x5SanQU, ChartItemClassName.SingleValue)]
  1657. public static string Gethd15x5sanqu<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1658. {
  1659. IList<int> list = new List<int>(entity.OpenCode);
  1660. if (-1 != indexEnd)
  1661. {
  1662. for (int i = list.Count - 1; i >= indexEnd; i--)
  1663. { list.RemoveAt(indexEnd); }
  1664. }
  1665. for (int i = 0; i < indexStart; i++)
  1666. { list.RemoveAt(0); }
  1667. return LotteryUtils.Hd15x5SanQu(list);
  1668. }
  1669. /// <summary>
  1670. /// 华东15选5一区个数
  1671. /// </summary>
  1672. /// <typeparam name="TEntity"></typeparam>
  1673. /// <param name="entity"></param>
  1674. /// <param name="indexStart"></param>
  1675. /// <param name="indexEnd"></param>
  1676. /// <param name="count"></param>
  1677. /// <returns></returns>
  1678. [ChartFunction("[单值单列]华东15选5一区的个数", ChartItemType.SingleValue_Hd11x5Yq, ChartItemClassName.SingleValue)]
  1679. public static string Gethd15x5Yq<TEntity>(TEntity entity, int indexStart, int indexEnd, int count, int min, int max) where TEntity : LotteryOpenCode
  1680. {
  1681. IList<int> list = new List<int>(entity.OpenCode);
  1682. if (-1 != indexEnd)
  1683. {
  1684. for (int i = list.Count - 1; i >= indexEnd; i--)
  1685. { list.RemoveAt(indexEnd); }
  1686. }
  1687. for (int i = 0; i < indexStart; i++)
  1688. { list.RemoveAt(0); }
  1689. int num = 0;
  1690. for (int i = 0; i < list.Count; i++)
  1691. {
  1692. if (list[i] >= min && list[i] <= max)
  1693. {
  1694. num++;
  1695. }
  1696. }
  1697. return num.ToString();
  1698. }
  1699. /// <summary>
  1700. /// 华东15选5二区个数
  1701. /// </summary>
  1702. /// <typeparam name="TEntity"></typeparam>
  1703. /// <param name="entity"></param>
  1704. /// <param name="indexStart"></param>
  1705. /// <param name="indexEnd"></param>
  1706. /// <param name="count"></param>
  1707. /// <returns></returns>
  1708. [ChartFunction("[单值单列]华东15选5二区的个数", ChartItemType.SingleValue_Hd11x5Eq, ChartItemClassName.SingleValue)]
  1709. public static string Gethd15x5Eq<TEntity>(TEntity entity, int indexStart, int indexEnd, int count, int min, int max) where TEntity : LotteryOpenCode
  1710. {
  1711. IList<int> list = new List<int>(entity.OpenCode);
  1712. if (-1 != indexEnd)
  1713. {
  1714. for (int i = list.Count - 1; i >= indexEnd; i--)
  1715. { list.RemoveAt(indexEnd); }
  1716. }
  1717. for (int i = 0; i < indexStart; i++)
  1718. { list.RemoveAt(0); }
  1719. int num = 0;
  1720. for (int i = 0; i < list.Count; i++)
  1721. {
  1722. if (list[i] >= min && list[i] <= max)
  1723. {
  1724. num++;
  1725. }
  1726. }
  1727. return num.ToString();
  1728. }
  1729. /// <summary>
  1730. /// 华东15选5三区个数
  1731. /// </summary>
  1732. /// <typeparam name="TEntity"></typeparam>
  1733. /// <param name="entity"></param>
  1734. /// <param name="indexStart"></param>
  1735. /// <param name="indexEnd"></param>
  1736. /// <param name="count"></param>
  1737. /// <returns></returns>
  1738. [ChartFunction("[单值单列]华东15选5三区的个数", ChartItemType.SingleValue_Hd11x5Sq, ChartItemClassName.SingleValue)]
  1739. public static string Gethd15x5Sq<TEntity>(TEntity entity, int indexStart, int indexEnd, int count, int min, int max) where TEntity : LotteryOpenCode
  1740. {
  1741. IList<int> list = new List<int>(entity.OpenCode);
  1742. if (-1 != indexEnd)
  1743. {
  1744. for (int i = list.Count - 1; i >= indexEnd; i--)
  1745. { list.RemoveAt(indexEnd); }
  1746. }
  1747. for (int i = 0; i < indexStart; i++)
  1748. { list.RemoveAt(0); }
  1749. int num = 0;
  1750. for (int i = 0; i < list.Count; i++)
  1751. {
  1752. if (list[i] >= min && list[i] <= max)
  1753. {
  1754. num++;
  1755. }
  1756. }
  1757. return num.ToString();
  1758. }
  1759. /// <summary>
  1760. /// 南粤36选7三区比
  1761. /// </summary>
  1762. /// <typeparam name="TEntity"></typeparam>
  1763. /// <param name="entity"></param>
  1764. /// <param name="indexStart"></param>
  1765. /// <param name="indexEnd"></param>
  1766. /// <param name="count"></param>
  1767. /// <returns></returns>
  1768. [ChartFunction("[单值单列]南粤36选7三区比", ChartItemType.SingleCell_NY36x7Sanqu, ChartItemClassName.SingleValue)]
  1769. public static string Getny36x7sanqu<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1770. {
  1771. IList<int> list = new List<int>(entity.OpenCode);
  1772. if (-1 != indexEnd)
  1773. {
  1774. for (int i = list.Count - 1; i >= indexEnd; i--)
  1775. { list.RemoveAt(indexEnd); }
  1776. }
  1777. for (int i = 0; i < indexStart; i++)
  1778. { list.RemoveAt(0); }
  1779. return LotteryUtils.Ny36x7SanQu(list);
  1780. }
  1781. /// <summary>
  1782. /// 和值012路
  1783. /// </summary>
  1784. /// <typeparam name="TEntity"></typeparam>
  1785. /// <param name="entity"></param>
  1786. /// <param name="indexStart"></param>
  1787. /// <param name="indexEnd"></param>
  1788. /// <param name="count"></param>
  1789. /// <returns></returns>
  1790. [ChartFunction("[单值多列]和值012路", ChartItemType.SingleCell_Hz012, ChartItemClassName.SingleValue)]
  1791. public static string GetHz012Value<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1792. {
  1793. IList<int> list = new List<int>(entity.OpenCode);
  1794. if (-1 != indexEnd)
  1795. {
  1796. for (int i = list.Count - 1; i >= indexEnd; i--)
  1797. { list.RemoveAt(indexEnd); }
  1798. }
  1799. for (int i = 0; i < indexStart; i++)
  1800. { list.RemoveAt(0); }
  1801. string hz = (list.Sum() % 3).ToString();
  1802. return hz;
  1803. }
  1804. /// <summary>
  1805. /// 快3三不同走势
  1806. /// </summary>
  1807. /// <typeparam name="TEntity"></typeparam>
  1808. /// <param name="entity"></param>
  1809. /// <param name="indexStart"></param>
  1810. /// <param name="indexEnd"></param>
  1811. /// <param name="count"></param>
  1812. /// <returns></returns>
  1813. [ChartFunction("[单值多列]快3三不同走势", ChartItemType.SingleValue_K3sbt, ChartItemClassName.SingleValue)]
  1814. public static string GetK3sbtValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count, string[] ItemString) where TEntity : LotteryOpenCode
  1815. {
  1816. IList<int> list = new List<int>(entity.OpenCode);
  1817. if (-1 != indexEnd)
  1818. {
  1819. for (int i = list.Count - 1; i >= indexEnd; i--)
  1820. { list.RemoveAt(indexEnd); }
  1821. }
  1822. for (int i = 0; i < indexStart; i++)
  1823. { list.RemoveAt(0); }
  1824. int[] k3s = new int[list.Count];
  1825. for (int i = 0; i < list.Count; i++)
  1826. {
  1827. k3s[i] = list[i];
  1828. }
  1829. Array.Sort(k3s);
  1830. string result = "";
  1831. for (int i = 0; i < k3s.Count(); i++)
  1832. {
  1833. result += k3s[i];
  1834. }
  1835. if (ItemString.Contains(result))
  1836. {
  1837. return result;
  1838. }
  1839. return "";
  1840. }
  1841. /// <summary>
  1842. /// 快3二不同(单值)
  1843. /// </summary>
  1844. /// <typeparam name="TEntity"></typeparam>
  1845. /// <param name="entity"></param>
  1846. /// <param name="indexStart"></param>
  1847. /// <param name="indexEnd"></param>
  1848. /// <param name="count"></param>
  1849. /// <returns></returns>
  1850. [ChartFunction("[单值多列]快3二不同(单值)", ChartItemType.SingleCell_K3ebt, ChartItemClassName.SingleValue)]
  1851. public static string GetEbtValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1852. {
  1853. IList<int> list = new List<int>(entity.OpenCode);
  1854. if (-1 != indexEnd)
  1855. {
  1856. for (int i = list.Count - 1; i >= indexEnd; i--)
  1857. { list.RemoveAt(indexEnd); }
  1858. }
  1859. for (int i = 0; i < indexStart; i++)
  1860. { list.RemoveAt(0); }
  1861. string result = "";
  1862. if (list.Count != 3)
  1863. {
  1864. return result;
  1865. }
  1866. if (list[0] == list[1])
  1867. {
  1868. result = list[0].ToString() + list[1].ToString();
  1869. return result;
  1870. }
  1871. if (list[0] == list[2])
  1872. {
  1873. result = list[0].ToString() + list[2].ToString();
  1874. return result;
  1875. }
  1876. if (list[1] == list[2])
  1877. {
  1878. result = list[1].ToString() + list[2].ToString();
  1879. return result;
  1880. }
  1881. return result;
  1882. }
  1883. /// <summary>
  1884. /// 奇偶个数
  1885. /// </summary>
  1886. /// <typeparam name="TEntity"></typeparam>
  1887. /// <param name="entity"></param>
  1888. /// <param name="indexStart"></param>
  1889. /// <param name="indexEnd"></param>
  1890. /// <param name="count"></param>
  1891. /// <returns></returns>
  1892. [ChartFunction("[单值多列]奇偶个数", ChartItemType.SingleValue_JoValue, ChartItemClassName.SingleValue)]
  1893. public static string GetJoValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1894. {
  1895. IList<int> list = new List<int>(entity.OpenCode);
  1896. if (-1 != indexEnd)
  1897. {
  1898. for (int i = list.Count - 1; i >= indexEnd; i--)
  1899. { list.RemoveAt(indexEnd); }
  1900. }
  1901. for (int i = 0; i < indexStart; i++)
  1902. { list.RemoveAt(0); }
  1903. int result = 0;
  1904. foreach (var item in list)
  1905. {
  1906. if (item % 2 != 0)
  1907. {
  1908. result++;
  1909. }
  1910. }
  1911. return result.ToString();
  1912. }
  1913. /// <summary>
  1914. /// 偶数个数
  1915. /// </summary>
  1916. /// <typeparam name="TEntity"></typeparam>
  1917. /// <param name="entity"></param>
  1918. /// <param name="indexStart"></param>
  1919. /// <param name="indexEnd"></param>
  1920. /// <param name="count"></param>
  1921. /// <returns></returns>
  1922. [ChartFunction("[单值多列]偶数个数", ChartItemType.SingleValue_OsValue, ChartItemClassName.SingleValue)]
  1923. public static string GetOsValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  1924. {
  1925. IList<int> list = new List<int>(entity.OpenCode);
  1926. if (-1 != indexEnd)
  1927. {
  1928. for (int i = list.Count - 1; i >= indexEnd; i--)
  1929. { list.RemoveAt(indexEnd); }
  1930. }
  1931. for (int i = 0; i < indexStart; i++)
  1932. { list.RemoveAt(0); }
  1933. int result = 0;
  1934. foreach (var item in list)
  1935. {
  1936. if (item % 2 == 0)
  1937. {
  1938. result++;
  1939. }
  1940. }
  1941. return result.ToString();
  1942. }
  1943. /// <summary>
  1944. /// 大小个数(大数个数)
  1945. /// </summary>
  1946. /// <typeparam name="TEntity"></typeparam>
  1947. /// <param name="entity"></param>
  1948. /// <param name="indexStart"></param>
  1949. /// <param name="indexEnd"></param>
  1950. /// <param name="count"></param>
  1951. /// <returns></returns>
  1952. [ChartFunction("[单值多列]大小个数", ChartItemType.SingleValue_DxValue, ChartItemClassName.SingleValue)]
  1953. public static string GetDxValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count, int splitNumber) where TEntity : LotteryOpenCode
  1954. {
  1955. IList<int> list = new List<int>(entity.OpenCode);
  1956. if (-1 != indexEnd)
  1957. {
  1958. for (int i = list.Count - 1; i >= indexEnd; i--)
  1959. { list.RemoveAt(indexEnd); }
  1960. }
  1961. for (int i = 0; i < indexStart; i++)
  1962. { list.RemoveAt(0); }
  1963. int result = 0;
  1964. foreach (var item in list)
  1965. {
  1966. if (item >= splitNumber)
  1967. {
  1968. result++;
  1969. }
  1970. }
  1971. return result.ToString();
  1972. }
  1973. /// <summary>
  1974. /// 小数个数
  1975. /// </summary>
  1976. /// <typeparam name="TEntity"></typeparam>
  1977. /// <param name="entity"></param>
  1978. /// <param name="indexStart"></param>
  1979. /// <param name="indexEnd"></param>
  1980. /// <param name="count"></param>
  1981. /// <returns></returns>
  1982. [ChartFunction("[单值多列]小数个数", ChartItemType.SingleValue_XsValue, ChartItemClassName.SingleValue)]
  1983. public static string GetXsValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count, int splitNumber) where TEntity : LotteryOpenCode
  1984. {
  1985. IList<int> list = new List<int>(entity.OpenCode);
  1986. if (-1 != indexEnd)
  1987. {
  1988. for (int i = list.Count - 1; i >= indexEnd; i--)
  1989. { list.RemoveAt(indexEnd); }
  1990. }
  1991. for (int i = 0; i < indexStart; i++)
  1992. { list.RemoveAt(0); }
  1993. int result = 0;
  1994. foreach (var item in list)
  1995. {
  1996. if (item < splitNumber)
  1997. {
  1998. result++;
  1999. }
  2000. }
  2001. return result.ToString();
  2002. }
  2003. /// <summary>
  2004. /// 质合个数
  2005. /// </summary>
  2006. /// <typeparam name="TEntity"></typeparam>
  2007. /// <param name="entity"></param>
  2008. /// <param name="indexStart"></param>
  2009. /// <param name="indexEnd"></param>
  2010. /// <param name="count"></param>
  2011. /// <returns></returns>
  2012. [ChartFunction("[单值多列]质合个数", ChartItemType.SingleValue_ZhValue, ChartItemClassName.SingleValue)]
  2013. public static string GetZhValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  2014. {
  2015. IList<int> list = new List<int>(entity.OpenCode);
  2016. if (-1 != indexEnd)
  2017. {
  2018. for (int i = list.Count - 1; i >= indexEnd; i--)
  2019. { list.RemoveAt(indexEnd); }
  2020. }
  2021. for (int i = 0; i < indexStart; i++)
  2022. { list.RemoveAt(0); }
  2023. int[] zs = { 1, 2, 3, 5 };
  2024. int result = 0;
  2025. foreach (var item in list)
  2026. {
  2027. if (zs.Contains(item))
  2028. {
  2029. result++;
  2030. }
  2031. }
  2032. return result.ToString();
  2033. }
  2034. /// <summary>
  2035. /// 合数个数
  2036. /// </summary>
  2037. /// <typeparam name="TEntity"></typeparam>
  2038. /// <param name="entity"></param>
  2039. /// <param name="indexStart"></param>
  2040. /// <param name="indexEnd"></param>
  2041. /// <param name="count"></param>
  2042. /// <returns></returns>
  2043. [ChartFunction("[单值多列]合数个数", ChartItemType.SingleValue_HsValue, ChartItemClassName.SingleValue)]
  2044. public static string GetHsValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  2045. {
  2046. IList<int> list = new List<int>(entity.OpenCode);
  2047. if (-1 != indexEnd)
  2048. {
  2049. for (int i = list.Count - 1; i >= indexEnd; i--)
  2050. { list.RemoveAt(indexEnd); }
  2051. }
  2052. for (int i = 0; i < indexStart; i++)
  2053. { list.RemoveAt(0); }
  2054. int[] zs = { 4, 6 };
  2055. int result = 0;
  2056. foreach (var item in list)
  2057. {
  2058. if (zs.Contains(item))
  2059. {
  2060. result++;
  2061. }
  2062. }
  2063. return result.ToString();
  2064. }
  2065. /// <summary>
  2066. /// 大小奇偶
  2067. /// </summary>
  2068. /// <typeparam name="TEntity"></typeparam>
  2069. /// <param name="entity"></param>
  2070. /// <param name="indexStart"></param>
  2071. /// <param name="indexEnd"></param>
  2072. /// <param name="count"></param>
  2073. /// <returns></returns>
  2074. [ChartFunction("[单值多列]大小奇偶", ChartItemType.SingleValue_DxjoValue, ChartItemClassName.SingleValue)]
  2075. public static string GetDxjoValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int splitNumber, int count) where TEntity : LotteryOpenCode
  2076. {
  2077. IList<int> list = new List<int>(entity.OpenCode);
  2078. if (-1 != indexEnd)
  2079. {
  2080. for (int i = list.Count - 1; i >= indexEnd; i--)
  2081. { list.RemoveAt(indexEnd); }
  2082. }
  2083. for (int i = 0; i < indexStart; i++)
  2084. { list.RemoveAt(0); }
  2085. string result = "";
  2086. if (list[0] > splitNumber)
  2087. {
  2088. result = "大";
  2089. }
  2090. else
  2091. {
  2092. result = "小";
  2093. }
  2094. if (list[0] % 2 == 0)
  2095. {
  2096. result += "双";
  2097. }
  2098. else
  2099. {
  2100. result += "单";
  2101. }
  2102. return result;
  2103. }
  2104. /// <summary>
  2105. /// 升降平
  2106. /// </summary>
  2107. /// <typeparam name="TEntity">泛型实体</typeparam>
  2108. /// <param name="entity">实体</param>
  2109. /// <param name="indexStart">开奖号开始</param>
  2110. /// <param name="indexEnd">开奖号结束</param>
  2111. /// <param name="count">项中列的个数</param>
  2112. /// <returns>升降平</returns>
  2113. [ChartFunction("[单值多列]升降平", ChartItemType.SingleValue_SJP, ChartItemClassName.SingleValue)]
  2114. public static string SJPSingleValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int minValue, int maxValue, ref int[] lastItemIndex, int itemcout) where TEntity : LotteryOpenCode
  2115. {
  2116. IList<int> list = new List<int>(entity.OpenCode);
  2117. if (-1 != indexEnd)
  2118. {
  2119. for (int i = list.Count - 1; i >= indexEnd; i--)
  2120. { list.RemoveAt(indexEnd); }
  2121. }
  2122. for (int i = 0; i < indexStart; i++)
  2123. { list.RemoveAt(0); }
  2124. if (null == lastItemIndex)
  2125. {
  2126. lastItemIndex = new int[list.Count];
  2127. for (int i = 0; i < list.Count; i++)
  2128. {
  2129. lastItemIndex[i] = list[i];
  2130. }
  2131. return "平";
  2132. }
  2133. string result = "";
  2134. foreach (var item in list)
  2135. {
  2136. if (lastItemIndex[0] > item)
  2137. {
  2138. result = "降";
  2139. break;
  2140. }
  2141. }
  2142. foreach (var item in list)
  2143. {
  2144. if (lastItemIndex[0] < item)
  2145. {
  2146. result = "升";
  2147. break;
  2148. }
  2149. }
  2150. foreach (var item in list)
  2151. {
  2152. if (lastItemIndex[0] == item)
  2153. {
  2154. result = "平";
  2155. break;
  2156. }
  2157. }
  2158. lastItemIndex = new int[list.Count];
  2159. for (int i = 0; i < list.Count; i++)
  2160. {
  2161. lastItemIndex[i] = list[i];
  2162. }
  2163. return result;
  2164. }
  2165. /// <summary>
  2166. /// 快乐扑克3_开奖号
  2167. /// </summary>
  2168. /// <typeparam name="TEntity"></typeparam>
  2169. /// <param name="entity"></param>
  2170. /// <param name="indexStart"></param>
  2171. /// <param name="indexEnd"></param>
  2172. /// <param name="count"></param>
  2173. /// <returns></returns>
  2174. [ChartFunction("[单值单列]快乐扑克3开奖号", ChartItemType.SingleValue_KLPKKJValue, ChartItemClassName.SingleValue)]
  2175. public static string GetTCKLPK_KaiJiangHao<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : GP_KLPK3_ShanDong
  2176. {
  2177. if (entity == null) throw new ArgumentNullException("entity");
  2178. //var tp1 = entity.TpOpenCode1;
  2179. //var tp2 = entity.TpOpenCode2;
  2180. //var tp3 = entity.TpOpenCode3;
  2181. //return tp1.Item1 + "," + tp1.Item2 + ";" + tp2.Item1 + "," + tp2.Item2 + ";" + tp3.Item1 + "," + tp3.Item2;
  2182. Tuple<string, string> tp = entity.TpOpenCode1;
  2183. if (indexStart == 1)
  2184. tp = entity.TpOpenCode2;
  2185. else if (indexStart == 2)
  2186. tp = entity.TpOpenCode3;
  2187. return tp.Item1 + "," + tp.Item2;
  2188. }
  2189. /// <summary>
  2190. /// [单值单列]快乐扑克3形态
  2191. /// </summary>
  2192. /// <typeparam name="TEntity"></typeparam>
  2193. /// <param name="entity"></param>
  2194. /// <returns></returns>
  2195. [ChartFunction("[单值单列]快乐扑克3形态", ChartItemType.SingleValue_KLPKXTValue, ChartItemClassName.SingleValue)]
  2196. public static string GetTCKLPK3_XingTai<TEntity>(TEntity entity) where TEntity : GP_KLPK3_ShanDong
  2197. {
  2198. if (entity == null) throw new ArgumentNullException("entity");
  2199. return entity.PokerShowName();
  2200. }
  2201. /// <summary>
  2202. /// [单值多列]快乐扑克3形态分布
  2203. /// </summary>
  2204. /// <typeparam name="TEntity"></typeparam>
  2205. /// <param name="entity"></param>
  2206. /// <returns></returns>
  2207. [ChartFunction("[单值多列]快乐扑克3形态分布", ChartItemType.SingleValue_KLPKXTFBValue, ChartItemClassName.SingleValue)]
  2208. public static string GetTCKLPK3_XingTaiFenBu<TEntity>(TEntity entity) where TEntity : GP_KLPK3_ShanDong
  2209. {
  2210. if (entity == null) throw new ArgumentNullException("entity");
  2211. return entity.PokerShowName();
  2212. }
  2213. /// <summary>
  2214. /// [单值单列]快乐扑克3和值
  2215. /// </summary>
  2216. /// <typeparam name="TEntity"></typeparam>
  2217. /// <param name="entity"></param>
  2218. /// <returns></returns>
  2219. [ChartFunction("[单值单列]快乐扑克3和值", ChartItemType.SingleValue_KLPKHZValue, ChartItemClassName.SingleValue)]
  2220. public static string GetTCKLPK3_Hz<TEntity>(TEntity entity) where TEntity : GP_KLPK3_ShanDong
  2221. {
  2222. if (entity == null) throw new ArgumentNullException("entity");
  2223. var tp1 = GP_KLPK3_ShanDong.SplitOpenCodeTo(entity.OpenCode1);
  2224. var tp2 = GP_KLPK3_ShanDong.SplitOpenCodeTo(entity.OpenCode2);
  2225. var tp3 = GP_KLPK3_ShanDong.SplitOpenCodeTo(entity.OpenCode3);
  2226. return (tp1.Item2 + tp2.Item2 + tp3.Item2).ToString();
  2227. }
  2228. /// <summary>
  2229. /// [单值多列]快乐扑克3和值分布
  2230. /// </summary>
  2231. /// <typeparam name="TEntity"></typeparam>
  2232. /// <param name="entity"></param>
  2233. /// <param name="indexStart"></param>
  2234. /// <param name="indexEnd"></param>
  2235. /// <param name="count"></param>
  2236. /// <param name="minNum"></param>
  2237. /// <param name="maxNum"></param>
  2238. /// <param name="index"></param>
  2239. /// <param name="missNumber"></param>
  2240. /// <param name="lastMiss"></param>
  2241. /// <param name="maxMiss"></param>
  2242. /// <param name="times"></param>
  2243. /// <param name="avgMiss"></param>
  2244. /// <param name="RecordCount"></param>
  2245. [ChartFunction("[单值多列]快乐扑克3和值分布", ChartItemType.SingleValue_KLPKHZFBValue, ChartItemClassName.MultiValue)]
  2246. public static void GetTCKLPK3_HZFB<TEntity>(TEntity entity, int indexStart, int indexEnd, int count, int minNum, int maxNum,
  2247. ref int[] index, ref int[] missNumber, ref int[] lastMiss, ref int[] maxMiss, ref int[] times, ref int[] avgMiss, int RecordCount) where TEntity : GP_KLPK3_ShanDong
  2248. {
  2249. if (entity == null) throw new ArgumentNullException("entity");
  2250. var tp1 = GP_KLPK3_ShanDong.SplitOpenCodeTo(entity.OpenCode1);
  2251. var tp2 = GP_KLPK3_ShanDong.SplitOpenCodeTo(entity.OpenCode2);
  2252. var tp3 = GP_KLPK3_ShanDong.SplitOpenCodeTo(entity.OpenCode3);
  2253. var hz = tp1.Item2 + tp2.Item2 + tp3.Item2;
  2254. for (int i = maxNum; i >= minNum; i--)
  2255. {
  2256. missNumber[i - minNum]++;
  2257. if (hz == i)
  2258. {
  2259. index[i - minNum]++;
  2260. if (null != lastMiss)
  2261. lastMiss[i - minNum] = missNumber[i - minNum];//上期遗漏
  2262. missNumber[i - minNum] = 0;
  2263. if (null != times)
  2264. times[i - minNum]++;
  2265. }
  2266. //最大遗漏
  2267. if (null != maxMiss)
  2268. if (missNumber[i - minNum] > maxMiss[i - minNum])
  2269. { maxMiss[i - minNum] = missNumber[i - minNum]; }
  2270. // avgMiss[i - minNum] = maxMiss[i - minNum] / (times[i - minNum] + 1);//计算平均遗漏
  2271. if (null != avgMiss && null != times)
  2272. avgMiss[i - minNum] = (RecordCount - times[i - minNum]) / (times[i - minNum] + 1);//计算平均遗漏
  2273. }
  2274. }
  2275. //[ChartFunction("[单值多列]快乐扑克3对子")]
  2276. internal static string GetTCKLPK3_DuiZiFenBu<TEntity>(TEntity entity) where TEntity : GP_KLPK3_ShanDong
  2277. {
  2278. if (entity == null) throw new ArgumentNullException("entity");
  2279. //粗暴
  2280. var tp1 = entity.TpOpenCode1;
  2281. var tp2 = entity.TpOpenCode2;
  2282. var tp3 = entity.TpOpenCode3;
  2283. if (tp1.Item2 == tp2.Item2 || tp1.Item2 == tp3.Item2)
  2284. return tp1.Item2 + tp1.Item2;
  2285. if (tp2.Item2 == tp3.Item2)
  2286. return tp2.Item2 + tp2.Item2;
  2287. return string.Empty;
  2288. }
  2289. private static IList<int> GetTCKLPK3OpenCodes<TEntity>(TEntity entity) where TEntity : GP_KLPK3_ShanDong
  2290. {
  2291. var tp1 = GP_KLPK3_ShanDong.SplitOpenCodeTo(entity.OpenCode1);
  2292. var tp2 = GP_KLPK3_ShanDong.SplitOpenCodeTo(entity.OpenCode2);
  2293. var tp3 = GP_KLPK3_ShanDong.SplitOpenCodeTo(entity.OpenCode3);
  2294. return new List<int>(new int[] { tp1.Item2, tp2.Item2, tp3.Item2 });
  2295. }
  2296. /// <summary>
  2297. /// 和尾升降平
  2298. /// </summary>
  2299. /// <typeparam name="TEntity">泛型实体</typeparam>
  2300. /// <param name="entity">实体</param>
  2301. /// <param name="indexStart">开奖号开始</param>
  2302. /// <param name="indexEnd">开奖号结束</param>
  2303. /// <param name="count">项中列的个数</param>
  2304. /// <returns>和尾升降平</returns>
  2305. [ChartFunction("[单值多列]和尾升降平", ChartItemType.SingleValue_HwSjp, ChartItemClassName.SingleValue)]
  2306. public static string HwSjpSingleValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int minValue, int maxValue, ref int[] lastItemIndex, int itemcout) where TEntity : LotteryOpenCode
  2307. {
  2308. IList<int> list = new List<int>(entity.OpenCode);
  2309. if (-1 != indexEnd)
  2310. {
  2311. for (int i = list.Count - 1; i >= indexEnd; i--)
  2312. { list.RemoveAt(indexEnd); }
  2313. }
  2314. for (int i = 0; i < indexStart; i++)
  2315. { list.RemoveAt(0); }
  2316. if (null == lastItemIndex)
  2317. {
  2318. lastItemIndex = new int[list.Count];
  2319. for (int i = 0; i < list.Count; i++)
  2320. {
  2321. lastItemIndex[i] = list[i];
  2322. }
  2323. return "平";
  2324. }
  2325. string result = "";
  2326. if (lastItemIndex.Sum() % 10 > list.Sum() % 10)
  2327. {
  2328. result = "降";
  2329. }
  2330. if (lastItemIndex.Sum() % 10 < list.Sum() % 10)
  2331. {
  2332. result = "升";
  2333. }
  2334. if (lastItemIndex.Sum() % 10 == list.Sum() % 10)
  2335. {
  2336. result = "平";
  2337. }
  2338. lastItemIndex = new int[list.Count];
  2339. for (int i = 0; i < list.Count; i++)
  2340. {
  2341. lastItemIndex[i] = list[i];
  2342. }
  2343. return result;
  2344. }
  2345. /// <summary>
  2346. /// 和尾012
  2347. /// </summary>
  2348. /// <typeparam name="TEntity">泛型实体</typeparam>
  2349. /// <param name="entity">实体</param>
  2350. /// <param name="indexStart">开奖号开始</param>
  2351. /// <param name="indexEnd">开奖号结束</param>
  2352. /// <param name="count">项中列的个数</param>
  2353. /// <returns>和尾012</returns>
  2354. [ChartFunction("[单值多列]和尾012", ChartItemType.SingleValue_Hw012, ChartItemClassName.SingleValue)]
  2355. public static string GetHeWei012SingleValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  2356. {
  2357. IList<int> list = new List<int>(entity.OpenCode);
  2358. if (-1 != indexEnd)
  2359. {
  2360. for (int i = list.Count - 1; i >= indexEnd; i--)
  2361. { list.RemoveAt(indexEnd); }
  2362. }
  2363. for (int i = 0; i < indexStart; i++)
  2364. { list.RemoveAt(0); }
  2365. return (LotteryUtils.GetSum(list) % 10 % 3).ToString();
  2366. }
  2367. /// <summary>
  2368. /// 最大值
  2369. /// </summary>
  2370. /// <typeparam name="TEntity">泛型实体</typeparam>
  2371. /// <param name="entity">实体</param>
  2372. /// <param name="indexStart">开奖号开始</param>
  2373. /// <param name="indexEnd">开奖号结束</param>
  2374. /// <param name="count">项中列的个数</param>
  2375. /// <returns>最大值</returns>
  2376. [ChartFunction("[单值多列]最大值", ChartItemType.SingleValue_Max, ChartItemClassName.SingleValue)]
  2377. public static string GetMaxSingleValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  2378. {
  2379. IList<int> list = new List<int>(entity.OpenCode);
  2380. if (-1 != indexEnd)
  2381. {
  2382. for (int i = list.Count - 1; i >= indexEnd; i--)
  2383. { list.RemoveAt(indexEnd); }
  2384. }
  2385. for (int i = 0; i < indexStart; i++)
  2386. { list.RemoveAt(0); }
  2387. return list.Max().ToString();
  2388. }
  2389. /// <summary>
  2390. /// 最小值
  2391. /// </summary>
  2392. /// <typeparam name="TEntity">泛型实体</typeparam>
  2393. /// <param name="entity">实体</param>
  2394. /// <param name="indexStart">开奖号开始</param>
  2395. /// <param name="indexEnd">开奖号结束</param>
  2396. /// <param name="count">项中列的个数</param>
  2397. /// <returns>最小值</returns>
  2398. [ChartFunction("[单值多列]最小值", ChartItemType.SingleValue_Min, ChartItemClassName.SingleValue)]
  2399. public static string GetMinSingleValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  2400. {
  2401. IList<int> list = new List<int>(entity.OpenCode);
  2402. if (-1 != indexEnd)
  2403. {
  2404. for (int i = list.Count - 1; i >= indexEnd; i--)
  2405. { list.RemoveAt(indexEnd); }
  2406. }
  2407. for (int i = 0; i < indexStart; i++)
  2408. { list.RemoveAt(0); }
  2409. return list.Min().ToString();
  2410. }
  2411. /// <summary>
  2412. /// 平均值
  2413. /// </summary>
  2414. /// <typeparam name="TEntity">泛型实体</typeparam>
  2415. /// <param name="entity">实体</param>
  2416. /// <param name="indexStart">开奖号开始</param>
  2417. /// <param name="indexEnd">开奖号结束</param>
  2418. /// <param name="count">项中列的个数</param>
  2419. /// <returns>平均值</returns>
  2420. [ChartFunction("[单值多列]平均值", ChartItemType.SingleValue_Avg, ChartItemClassName.SingleValue)]
  2421. public static string GetAvgSingleValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  2422. {
  2423. IList<int> list = new List<int>(entity.OpenCode);
  2424. if (-1 != indexEnd)
  2425. {
  2426. for (int i = list.Count - 1; i >= indexEnd; i--)
  2427. { list.RemoveAt(indexEnd); }
  2428. }
  2429. for (int i = 0; i < indexStart; i++)
  2430. { list.RemoveAt(0); }
  2431. return (list.Sum() / list.Count()).ToString();
  2432. }
  2433. /// <summary>
  2434. /// 和跨和
  2435. /// </summary>
  2436. /// <typeparam name="TEntity">泛型实体</typeparam>
  2437. /// <param name="entity">实体</param>
  2438. /// <param name="indexStart">开奖号开始</param>
  2439. /// <param name="indexEnd">开奖号结束</param>
  2440. /// <param name="count">项中列的个数</param>
  2441. /// <returns>和跨和</returns>
  2442. [ChartFunction("[单值多列]和跨和", ChartItemType.SingleValue_Hkh, ChartItemClassName.SingleValue)]
  2443. public static string GetHkhSingleValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  2444. {
  2445. IList<int> list = new List<int>(entity.OpenCode);
  2446. if (-1 != indexEnd)
  2447. {
  2448. for (int i = list.Count - 1; i >= indexEnd; i--)
  2449. { list.RemoveAt(indexEnd); }
  2450. }
  2451. for (int i = 0; i < indexStart; i++)
  2452. { list.RemoveAt(0); }
  2453. return (list.Max() - list.Min() + list.Sum()).ToString();
  2454. }
  2455. /// <summary>
  2456. /// 和跨差
  2457. /// </summary>
  2458. /// <typeparam name="TEntity">泛型实体</typeparam>
  2459. /// <param name="entity">实体</param>
  2460. /// <param name="indexStart">开奖号开始</param>
  2461. /// <param name="indexEnd">开奖号结束</param>
  2462. /// <param name="count">项中列的个数</param>
  2463. /// <returns>和跨差</returns>
  2464. [ChartFunction("[单值多列]和跨差", ChartItemType.SingleValue_Hkc, ChartItemClassName.SingleValue)]
  2465. public static string GetHkcSingleValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  2466. {
  2467. IList<int> list = new List<int>(entity.OpenCode);
  2468. if (-1 != indexEnd)
  2469. {
  2470. for (int i = list.Count - 1; i >= indexEnd; i--)
  2471. { list.RemoveAt(indexEnd); }
  2472. }
  2473. for (int i = 0; i < indexStart; i++)
  2474. { list.RemoveAt(0); }
  2475. return (list.Sum() - (list.Max() - list.Min())).ToString();
  2476. }
  2477. /// <summary>
  2478. /// 尾数和值
  2479. /// </summary>
  2480. /// <typeparam name="TEntity">泛型实体</typeparam>
  2481. /// <param name="entity">实体</param>
  2482. /// <param name="indexStart">开奖号开始</param>
  2483. /// <param name="indexEnd">开奖号结束</param>
  2484. /// <param name="count">项中列的个数</param>
  2485. /// <returns>尾数和值</returns>
  2486. [ChartFunction("[单值多列]尾数和值", ChartItemType.SingleValue_Whz, ChartItemClassName.SingleValue)]
  2487. public static string GetWhzSingleValue<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  2488. {
  2489. IList<int> list = new List<int>(entity.OpenCode);
  2490. if (-1 != indexEnd)
  2491. {
  2492. for (int i = list.Count - 1; i >= indexEnd; i--)
  2493. { list.RemoveAt(indexEnd); }
  2494. }
  2495. for (int i = 0; i < indexStart; i++)
  2496. { list.RemoveAt(0); }
  2497. int whz = 0;
  2498. foreach (var item in list)
  2499. {
  2500. whz += item % 10;
  2501. }
  2502. return whz.ToString();
  2503. }
  2504. /// <summary>
  2505. /// [单值多列]快乐扑克3花色分布
  2506. /// </summary>
  2507. /// <typeparam name="TEntity"></typeparam>
  2508. /// <param name="entity"></param>
  2509. /// <param name="startIndex"></param>
  2510. /// <param name="endIndex"></param>
  2511. /// <returns></returns>
  2512. [ChartFunction("[单值多列]快乐扑克3花色分布", ChartItemType.SingleValue_KLPKHSValue, ChartItemClassName.SingleValue)]
  2513. public static string GetTCKLPK3OpenCodeSuit<TEntity>(TEntity entity, int startIndex, int endIndex) where TEntity : GP_KLPK3_ShanDong
  2514. {
  2515. var tps = new Tuple<string, string>[] { entity.TpOpenCode1, entity.TpOpenCode2, entity.TpOpenCode3 };
  2516. var _s_index = startIndex < 0 || startIndex > 3 ? 0 : startIndex;
  2517. var _e_index = endIndex <= startIndex || endIndex > 3 ? 3 : endIndex;
  2518. var sb = new System.Text.StringBuilder();
  2519. for (; _s_index < _e_index; _s_index++)
  2520. {
  2521. var _tp = tps[_s_index];
  2522. sb.AppendFormat("{0}", _tp.Item1);
  2523. }
  2524. return sb.ToString();
  2525. }
  2526. /// <summary>
  2527. /// [单值多列]幸运赛车颜色
  2528. /// </summary>
  2529. /// <typeparam name="TEntity"></typeparam>
  2530. /// <param name="entity"></param>
  2531. /// <param name="indexStart"></param>
  2532. /// <param name="indexEnd"></param>
  2533. /// <param name="count"></param>
  2534. /// <returns></returns>
  2535. [ChartFunction("[单值多列]幸运赛车颜色", ChartItemType.SingleValue_XYSCColor, ChartItemClassName.SingleValue)]
  2536. public static string GetTCXYSCOpenCodeColor<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  2537. {
  2538. IList<int> list = new List<int>(entity.OpenCode);
  2539. if (-1 != indexEnd)
  2540. {
  2541. for (int i = list.Count - 1; i >= indexEnd; i--)
  2542. { list.RemoveAt(indexEnd); }
  2543. }
  2544. for (int i = 0; i < indexStart; i++)
  2545. { list.RemoveAt(0); }
  2546. var colors = new string[] { "红", "红", "蓝", "蓝", "绿", "绿", "黄", "黄", "银", "银", "紫", "紫" };
  2547. var sb = new System.Text.StringBuilder();
  2548. foreach (var item in list)
  2549. {
  2550. sb.Append(colors[item - 1]);
  2551. }
  2552. return sb.ToString();
  2553. }
  2554. /// <summary>
  2555. /// [单值多列]幸运赛车除余(012)
  2556. /// </summary>
  2557. /// <typeparam name="TEntity"></typeparam>
  2558. /// <param name="entity"></param>
  2559. /// <param name="indexStart"></param>
  2560. /// <param name="indexEnd"></param>
  2561. /// <param name="count"></param>
  2562. /// <returns></returns>
  2563. [ChartFunction("[单值多列]幸运赛车除余(012)", ChartItemType.SingleValue_XYSC012, ChartItemClassName.SingleValue)]
  2564. public static string GetTCXYSCOpenCodeDivide<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  2565. {
  2566. IList<int> list = new List<int>(entity.OpenCode);
  2567. if (-1 != indexEnd)
  2568. {
  2569. for (int i = list.Count - 1; i >= indexEnd; i--)
  2570. { list.RemoveAt(indexEnd); }
  2571. }
  2572. for (int i = 0; i < indexStart; i++)
  2573. { list.RemoveAt(0); }
  2574. var tag = "";
  2575. foreach (var item in list)
  2576. {
  2577. tag = tag + (item % 3).ToString();
  2578. }
  2579. return "余" + tag;
  2580. }
  2581. /// <summary>
  2582. /// [单值多列]泳坛夺金组选
  2583. /// </summary>
  2584. /// <typeparam name="TEntity"></typeparam>
  2585. /// <param name="entity"></param>
  2586. /// <param name="indexStart"></param>
  2587. /// <param name="indexEnd"></param>
  2588. /// <param name="count"></param>
  2589. /// <returns></returns>
  2590. [ChartFunction("[单值多列]泳坛夺金组选", ChartItemType.SingleValue_YTDJZuXuan, ChartItemClassName.SingleValue)]
  2591. public static string GetTCYTDJOpenCodeZuXuan<TEntity>(TEntity entity, int indexStart, int indexEnd, int count) where TEntity : LotteryOpenCode
  2592. {
  2593. int[] list = entity.OpenCode.ToArray();
  2594. var dict = new Dictionary<int, int>();
  2595. for (int i = 0, n = list.Length; i < n; i++)
  2596. {
  2597. var op1 = list[i];
  2598. for (int j = i + 1; j < n; j++)
  2599. {
  2600. var op2 = list[j];
  2601. if (op1 == op2)
  2602. {
  2603. if (dict.ContainsKey(op1))
  2604. dict[op1] += 1;
  2605. else
  2606. dict[op1] = 1;
  2607. }
  2608. }
  2609. }
  2610. if (dict.Count == 0)
  2611. return "组选24";
  2612. if (dict.Count == 2)
  2613. return "组选6";
  2614. if (dict.Count == 1 && dict.Values.FirstOrDefault() > 1)
  2615. return "组选4";
  2616. return "组选12";
  2617. }
  2618. }
  2619. }