using System;
using System.Collections.Generic;
using System.Linq;
using CB.Common;
using CB.Entity;
namespace CB.TrendMiss
{
///
/// 遗漏项值计算 by JNswins
///
public class MissItemFunction
{
///
/// 多开奖号码遗漏
///
///
/// 彩种开奖
///
///
///
///
///
///
[MissFunction("[多值]开奖号码(数字遗漏)项", MissItemType.MultiValue_OpenCodeItem, ChartItemClassName.MultiValue)]
public static Tuple SetOpenCodeItemValue(TEntity entity, int indexStart, int indexEnd, int minNum, int maxNum, bool isFirst, int count,
ref IList missData) where TEntity : LotteryOpenCode
{
if(entity.OpenCode.Contains(-1))
return new Tuple(false, "开奖号码错误!");
IList list = new List(entity.OpenCode);
if (-1 != indexEnd)
{
for (int i = list.Count - 1; i >= indexEnd; i--)
{ list.RemoveAt(i); }
}
for (int i = 0; i < indexStart; i++)
{ list.RemoveAt(0); }
int[] index = new int[count];
int j = 0;
for (int i = maxNum; i >= minNum; i--)
{
j = i - minNum;
missData[j].LocalMiss++;//当前遗漏
missData[j].RecordCount++;
if (list.Contains(i))
{
index[j]++;
missData[j].LastMiss = missData[j].LocalMiss - 1;//上期遗漏
missData[j].LocalMiss = 0;//重置当前遗漏
missData[j].Times++;//出现次数加1
//---------以下为连出及连出遗漏---------------
missData[j].ContinuousLocalMiss++;
if (missData[j].ItemSelect && 1 <= index[j])
{
missData[j].ContinuousTimes++;
missData[j].ContinuousLocalTimes++;
missData[j].ContinuousLocalMiss = 0;
//最大连出次数
if (missData[j].ContinuousLocalTimes > missData[j].ContinuousMaxTimes)
{ missData[j].ContinuousMaxTimes = missData[j].ContinuousLocalTimes; }
}
else
{
missData[j].ContinuousLocalTimes = 0;
missData[j].ContinuousLocalMiss++;
//最大连出遗漏
if (missData[j].ContinuousLocalMiss > missData[j].ContinuousMaxMiss)
{ missData[j].ContinuousMaxMiss = missData[j].ContinuousLocalMiss; }
}
}
if (isFirst)
missData[j].LastMiss = 0;
//最大遗漏
if (missData[j].LocalMiss > missData[j].MaxMiss)
{ missData[j].MaxMiss = missData[j].LocalMiss; }
//历史最大遗漏
if (missData[j].LastMiss > missData[j].LastMaxMiss)
{ missData[j].LastMaxMiss = missData[j].LastMiss; }
missData[j].AvgMiss = ((double)(missData[j].RecordCount - missData[j].Times)) / (missData[j].Times + 1);//计算平均遗漏
missData[j].ItemSelect = 1 <= index[j];
}
return new Tuple(true, "");;
}
/////
///// 单值开奖号码遗漏
/////
/////
/////
/////
/////
/////
/////
/////
/////
/////
//public static bool SetSingleValueItem(TEntity entity, TrendMissItemInfo itemConfig, int indexStart, int indexEnd, int count,
// bool isFirst,
// ref IList missData) where TEntity : LotteryOpenCode
//{
// IList list = new List(entity.OpenCode);
// if (-1 != indexEnd)
// {
// for (int i = list.Count - 1; i >= indexEnd; i--)
// { list.RemoveAt(i); }
// }
// for (int i = 0; i < indexStart; i++)
// { list.RemoveAt(0); }
// switch (itemConfig.FuntionType)
// {
// case MissItemType.SingleValue_Sum:
// return SingleValue_Sum(entity, count, isFirst, ref missData, list);
// case MissItemType.SingleValue_JOItem:
// return SingleValue_JOItem(entity, count, isFirst, ref missData, list);
// case MissItemType.SingleValue_DXItem:
// return SingleValue_DXItem(entity, itemConfig, count, isFirst, ref missData, list);
// case MissItemType.SingleValue_ZHItem:
// return SingleValue_ZHItem(entity, count, isFirst, ref missData, list);
// case MissItemType.SingleValue_KDItem:
// return SingleValue_KDItem(entity, count, isFirst, ref missData, list);
// case MissItemType.SingleValue_012Item:
// return SingleValue_012Item(entity, count, isFirst, ref missData, list);
// case MissItemType.SingleValue_HWItem:
// return SingleValue_HWItem(entity, count, isFirst, ref missData, list);
// }
// return true;
//}
///
/// 单值开奖号码(和尾遗漏)
///
///
///
///
///
///
///
///
[MissFunction("[单值]开奖号码(和尾遗漏)项", MissItemType.SingleValue_HWItem, ChartItemClassName.SingleValue)]
public static Tuple SingleValue_HWItem(TEntity entity, int indexStart, int indexEnd) where TEntity : LotteryOpenCode
{
if (entity.OpenCode.Contains(-1))
return new Tuple(false, "开奖号码错误!");
IList list = new List(entity.OpenCode);
if (-1 != indexEnd)
{
for (int i = list.Count - 1; i >= indexEnd; i--)
{ list.RemoveAt(i); }
}
for (int i = 0; i < indexStart; i++)
{ list.RemoveAt(0); }
return new Tuple(true, LotteryUtils.GetHWString(list).ToString());
}
///
/// 单值开奖号码(012路遗漏)
///
///
///
///
///
///
///
///
[MissFunction("[单值]开奖号码(012路遗漏)项", MissItemType.SingleValue_012Item, ChartItemClassName.SingleValue)]
public static Tuple SingleValue_012Item(TEntity entity, int indexStart, int indexEnd) where TEntity : LotteryOpenCode
{
if (entity.OpenCode.Contains(-1))
return new Tuple(false, "开奖号码错误!");
IList list = new List(entity.OpenCode);
if (-1 != indexEnd)
{
for (int i = list.Count - 1; i >= indexEnd; i--)
{ list.RemoveAt(i); }
}
for (int i = 0; i < indexStart; i++)
{ list.RemoveAt(0); }
return new Tuple(true, LotteryUtils.Get012String(list).ToString());
}
///
/// 单值开奖号码(跨度遗漏)
///
///
///
///
///
///
///
///
[MissFunction("[单值]开奖号码(跨度遗漏)项", MissItemType.SingleValue_KDItem, ChartItemClassName.SingleValue)]
public static Tuple SingleValue_KDItem(TEntity entity, int indexStart, int indexEnd) where TEntity : LotteryOpenCode
{
if (entity.OpenCode.Contains(-1))
return new Tuple(false, "开奖号码错误!");
IList list = new List(entity.OpenCode);
if (-1 != indexEnd)
{
for (int i = list.Count - 1; i >= indexEnd; i--)
{ list.RemoveAt(i); }
}
for (int i = 0; i < indexStart; i++)
{ list.RemoveAt(0); }
return new Tuple(true, LotteryUtils.GetSpan(list).ToString());
}
///
/// 单值开奖号码(质合遗漏)
///
///
///
///
///
///
///
///
[MissFunction("[单值]开奖号码(质合遗漏)项", MissItemType.SingleValue_ZHItem, ChartItemClassName.SingleValue)]
public static Tuple SingleValue_ZHItem(TEntity entity, int indexStart, int indexEnd) where TEntity : LotteryOpenCode
{
if (entity.OpenCode.Contains(-1))
return new Tuple(false, "开奖号码错误!");
IList list = new List(entity.OpenCode);
if (-1 != indexEnd)
{
for (int i = list.Count - 1; i >= indexEnd; i--)
{ list.RemoveAt(i); }
}
for (int i = 0; i < indexStart; i++)
{ list.RemoveAt(0); }
return new Tuple(true, LotteryUtils.GetZHString(list).ToString());
}
///
/// 单值开奖号码(大小遗漏)
///
///
///
///
///
///
///
///
///
[MissFunction("[单值]开奖号码(大小遗漏)项", MissItemType.SingleValue_DXItem, ChartItemClassName.SingleValue)]
public static Tuple SingleValue_DXItem(TEntity entity, int indexStart, int indexEnd, int splitNumberOfDX) where TEntity : LotteryOpenCode
{
if (entity.OpenCode.Contains(-1))
return new Tuple(false, "开奖号码错误!");
IList list = new List(entity.OpenCode);
if (-1 != indexEnd)
{
for (int i = list.Count - 1; i >= indexEnd; i--)
{ list.RemoveAt(i); }
}
for (int i = 0; i < indexStart; i++)
{ list.RemoveAt(0); }
return new Tuple(true, LotteryUtils.GetDXString(list, splitNumberOfDX).ToString());
}
///
/// 单值开奖号码(奇偶遗漏)
///
///
///
///
///
///
///
///
[MissFunction("[单值]开奖号码(奇偶遗漏)项", MissItemType.SingleValue_JOItem, ChartItemClassName.SingleValue)]
public static Tuple SingleValue_JOItem(TEntity entity, int indexStart, int indexEnd) where TEntity : LotteryOpenCode
{
if (entity.OpenCode.Contains(-1))
return new Tuple(false, "开奖号码错误!");
IList list = new List(entity.OpenCode);
if (-1 != indexEnd)
{
for (int i = list.Count - 1; i >= indexEnd; i--)
{ list.RemoveAt(i); }
}
for (int i = 0; i < indexStart; i++)
{ list.RemoveAt(0); }
return new Tuple(true, LotteryUtils.GetJOString(list).ToString());
}
///
/// 单值开奖号码(和值遗漏)
///
///
///
///
///
///
///
///
[MissFunction("[单值]开奖号码(和值遗漏)项", MissItemType.SingleValue_Sum, ChartItemClassName.SingleValue)]
public static Tuple SingleValue_Sum(TEntity entity, int indexStart, int indexEnd) where TEntity : LotteryOpenCode
{
if (entity.OpenCode.Contains(-1))
return new Tuple(false, "开奖号码错误!");
IList list = new List(entity.OpenCode);
if (-1 != indexEnd)
{
for (int i = list.Count - 1; i >= indexEnd; i--)
{ list.RemoveAt(i); }
}
for (int i = 0; i < indexStart; i++)
{ list.RemoveAt(0); }
return new Tuple(true, LotteryUtils.GetSum(list).ToString());
}
/////
///// 单值项遗漏计算通用方法
/////
/////
/////
/////
/////
/////
/////
/////
//public static bool SetSingleValue(TEntity entity, string itemValue, int count, bool isFirst,
// ref IList missData) where TEntity : LotteryOpenCode
//{
// int index = -1;
// for (int i = 0; i < count; i++)
// {
// missData[i].LocalMiss++;//当前遗漏
// missData[i].RecordCount++;
// if (itemValue == missData[i].ItemValue)
// {
// index = i;
// missData[i].LastMiss = missData[i].LocalMiss;//上期遗漏
// missData[i].LocalMiss = 0;//重置当前遗漏
// missData[i].Times++;//出现次数加1
// }
// if (isFirst)
// missData[i].LastMiss = 0;
// //最大遗漏
// if (missData[i].LocalMiss > missData[i].MaxMiss)
// { missData[i].MaxMiss = missData[i].LocalMiss; }
// //历史最大遗漏
// if (missData[i].LastMiss > missData[i].LastMaxMiss)
// { missData[i].LastMaxMiss = missData[i].LastMiss; }
// missData[i].AvgMiss = ((double)(missData[i].RecordCount - missData[i].Times)) / (missData[i].Times + 1);//计算平均遗漏
// //---------以下为连出及连出遗漏---------------
// missData[i].ContinuousLocalMiss++;
// if (missData[i].ItemSelect && i == index)
// {
// missData[i].ContinuousTimes++;
// missData[i].ContinuousLocalTimes++;
// missData[i].ContinuousLocalMiss = 0;
// }
// //最大连出遗漏
// if (missData[i].ContinuousLocalMiss > missData[i].ContinuousMaxMiss)
// { missData[i].ContinuousMaxMiss = missData[i].ContinuousLocalMiss; }
// //最大连出次数
// if (missData[i].ContinuousLocalTimes > missData[i].ContinuousMaxTimes)
// { missData[i].ContinuousMaxTimes = missData[i].ContinuousLocalTimes; }
// missData[i].ItemSelect = i == index;
// }
// return true;
//}
}
}