练习之彩票三 添加号码相关代码
2012-06-30 14:05
225 查看
源代码已放入我的开源网址中,希望大家踊跃拍砖,或者直接优化代码。共同进步 谢谢
基础工具
排列组合算法:
View Code
基础工具
排列组合算法:
View Code
using System; using System.Collections.Generic; using TG.Package.Lottery.Base; namespace TG.Package.Lottery { public sealed class FuCai3D : ILottery,IDisposable { public FuCai3D(String pLotteryIssue) { mWelfareLotterys = new List<WelfareLottery>(); mLotteryIssue = pLotteryIssue; } #region member private Int32 mTotalBet = 0; public int TotalBet { get { return mTotalBet; } } public Int32 Count{ get{ return this.mWelfareLotterys.Count; } } private string mLotteryIssue=String.Empty; /// <summary> /// 期号 /// </summary> public string LotteryIssue{ get{ return mLotteryIssue; } } public WelfareLottery this[Int32 i]{ get{ return this.mWelfareLotterys[i]; } } private List<WelfareLottery> mWelfareLotterys; #endregion #region function public void Add(String pOne, String pTen, String pHundred) { WelfareLottery lottery = new WelfareLottery(); lottery.PlayType = PlayType.Normal; lottery.Lottery.Add(NumericType.Ones, pOne); lottery.Lottery.Add(NumericType.Tens, pTen); lottery.Lottery.Add(NumericType.Hundreds, pHundred); Valid(lottery); lottery.BetCount = CalculateBet(lottery); mTotalBet += lottery.BetCount; mWelfareLotterys.Add(lottery); } public void Add(String pDan, String pTuo, PlayType pPlayType) { WelfareLottery lottery = new WelfareLottery(); lottery.PlayType = pPlayType; lottery.Lottery.Add(NumericType.Dan, pDan); lottery.Lottery.Add(NumericType.Tuo, pTuo); Valid(lottery); lottery.BetCount = CalculateBet(lottery); mTotalBet += lottery.BetCount; mWelfareLotterys.Add(lottery); } public void Add(String pNumbers, PlayType pPlayType) { WelfareLottery lottery = new WelfareLottery(); lottery.PlayType = pPlayType; switch(pPlayType) { case PlayType.Zu3: lottery.Lottery.Add(NumericType.Zu3, pNumbers); break; case PlayType.Zu6: lottery.Lottery.Add(NumericType.Zu6, pNumbers); break; default: throw new FormatException("error:PlayType must be zu3 or zu6"); } Valid(lottery); lottery.BetCount = CalculateBet(lottery); mTotalBet += lottery.BetCount; mWelfareLotterys.Add(lottery); } public void Valid(WelfareLottery pWelfareLottery) { ValidHelper.ValidLotteryNumber.ValidNumbers(pWelfareLottery,LotteryType.FuCai3D); } #region CalculateBet private Int32 CalculateBet(WelfareLottery pWelfareLottery) { switch (pWelfareLottery.PlayType) { case PlayType.Normal: return NormalCalculateBet(pWelfareLottery); case PlayType.Zu3: return Zu3CalculateBet(pWelfareLottery); case PlayType.Zu6: return Zu6CalculateBet(pWelfareLottery); ; case PlayType.Normal | PlayType.DanTuo: return NormalDanCalculateBet(pWelfareLottery); case PlayType.Zu3 | PlayType.DanTuo: return Zu3DanCalculateBet(pWelfareLottery); case PlayType.Zu6 | PlayType.DanTuo: return Zu6DanCalculateBet(pWelfareLottery); default: throw new FormatException("error:PlayType is error"); } } private static Int32 NormalCalculateBet(WelfareLottery pWelfareLottery) { Int32 onecount=(pWelfareLottery.Lottery[NumericType.Ones].Length/2)+1; Int32 tencount = (pWelfareLottery.Lottery[NumericType.Tens].Length/2)+1; Int32 hundredcount = (pWelfareLottery.Lottery[NumericType.Hundreds].Length/2)+1; return onecount * tencount * hundredcount; } private static Int32 Zu3CalculateBet(WelfareLottery pWelfareLottery) { Int32 zu3count=(pWelfareLottery.Lottery[NumericType.Zu3].Length/2)+1; return Calculate.Discrete.P(zu3count, 2); } private static Int32 Zu6CalculateBet(WelfareLottery pWelfareLottery) { Int32 zu6count=(pWelfareLottery.Lottery[NumericType.Zu6].Length/2)+1; return Calculate.Discrete.C(zu6count, 3); } private static Int32 NormalDanCalculateBet(WelfareLottery pWelfareLottery) { Int32 dancount = (pWelfareLottery.Lottery[NumericType.Dan].Length / 2) + 1; Int32 tuocount = (pWelfareLottery.Lottery[NumericType.Tuo].Length / 2) + 1; return 3 * dancount * tuocount; } private static Int32 Zu3DanCalculateBet(WelfareLottery pWelfareLottery) { Int32 tuocount = (pWelfareLottery.Lottery[NumericType.Tuo].Length / 2) + 1; return 2 * tuocount; } private static Int32 Zu6DanCalculateBet(WelfareLottery pWelfareLottery) { Int32 dancount = (pWelfareLottery.Lottery[NumericType.Dan].Length / 2) + 1; Int32 tuocount = (pWelfareLottery.Lottery[NumericType.Tuo].Length / 2) + 1; return Calculate.Discrete.C(tuocount, 3 - dancount); } #endregion public void Remove(int i) { mTotalBet -= mWelfareLotterys[i].BetCount; this.mWelfareLotterys.RemoveAt(i); } public void Clear() { mTotalBet = 0; this.mWelfareLotterys.Clear(); } #endregion public void Dispose() { mWelfareLotterys = null; mLotteryIssue = null; } }//end FuCai3D }//end namespace System
相关文章推荐
- Java——I/O入门相关练习代码
- 20170824 Java——I/O,字节流与字符流,BufferedOutputStream,InputStream等(附相关练习代码)
- 备份数据库用到的相关代码(在数据库事务中添加)
- 刷新SQL Server所有视图、函数、存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 [SQL]代码 --视图、存储过程、函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR SCROLL DYNAMIC FO
- ART中添加 neg.s neg.d 指令及相关代码
- 个人学习代码保存:例3. GridView相关练习操作
- .NET中用弹出窗口添加或修改一个页面,当添加或修改相关内容后按下提交按钮自动刷新页面的JS代码
- C++之位测试练习的相关代码
- 抽彩票数字练习代码
- 代码注入相关知识以及扫雷程序的分析(分析过程之后添加)
- 如何在代码中动态添加布局以及相关的控件
- 小练习3与4,为代码2.21添加查询功能
- android在java代码中动态添加组件及相关布局方法(LayoutParams)
- Java——I/O相关练习代码
- Java——I/O,字节流与字符流,BufferedOutputStream,InputStream等(附相关练习代码)
- java 图形用户界面 之 在界面中添加滑动块 示例代码 及 相关知识点
- 仅仅需手动添加一行代码就可以让Laravel4执行在SAE (v. 1.0.0)
- String练习代码保存
- uGUI使用代码动态添加Button.OnClick()事件(Unity3D开发之十二)
- 使用new调用构造器创建对象并统一添加属性的代码运行过程