728x90
728x170
using System;
/// <summary>
/// 정수 범위
/// </summary>
public class IntegerRange
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 최소 값
/// </summary>
private int minimum;
/// <summary>
/// 최대 값
/// </summary>
private int maximum;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 최소 값 - Minimum
/// <summary>
/// 최소 값
/// </summary>
public int Minimum
{
get
{
return this.minimum;
}
set
{
this.minimum = value;
}
}
#endregion
#region 최대 값 - Maximum
/// <summary>
/// 최대 값
/// </summary>
public int Maximum
{
get
{
return this.maximum;
}
set
{
this.maximum = value;
}
}
#endregion
#region 길이 - Length
/// <summary>
/// 길이
/// </summary>
public int Length
{
get
{
return this.maximum - this.minimum;
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - IntegerRange(minimum, maximum)
/// <summary>
/// 생성자
/// </summary>
/// <param name="minimum">최소 값</param>
/// <param name="maximum">최대 값</param>
public IntegerRange(int minimum, int maximum)
{
this.minimum = minimum;
this.maximum = maximum;
}
#endregion
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 생성자 - IntegerRange()
/// <summary>
/// 생성자
/// </summary>
private IntegerRange()
{
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 포함 여부 조사하기 - IsInside(x)
/// <summary>
/// 포함 여부 조사하기
/// </summary>
/// <param name="x">X</param>
/// <returns>포함 여부 조사 결과</returns>
public bool IsInside(int x)
{
return (x >= this.minimum) && (x <= this.maximum);
}
#endregion
#region 포함 여부 조사하기 - IsInside(integerRange)
/// <summary>
/// 포함 여부 조사하기
/// </summary>
/// <param name="integerRange">범위</param>
/// <returns>포함 여부 조사 결과</returns>
public bool IsInside(IntegerRange integerRange)
{
return (IsInside(integerRange.Minimum)) && (IsInside(integerRange.Maximum));
}
#endregion
#region 중첩 여부 조사하기 - IsOverlapping(integerRange)
/// <summary>
/// 중첩 여부 조사하기
/// </summary>
/// <param name="integerRange">범위</param>
/// <returns>중첩 여부 조사 결과</returns>
public bool IsOverlapping(IntegerRange integerRange)
{
return (IsInside(integerRange.Minimum)) || (IsInside(integerRange.Maximum));
}
#endregion
}
#region 범위 구하기 - GetRange(valueArray, percent)
/// <summary>
/// 범위 구하기
/// </summary>
/// <param name="valueArray">값 배열</param>
/// <param name="percent">퍼센트</param>
/// <returns>범위</returns>
public IntegerRange GetRange(int[] valueArray, double percent)
{
int total = 0;
int length = valueArray.Length;
for(int i = 0; i < length; i++)
{
total += valueArray[i];
}
int minimum;
int maximum;
int hitCount;
int upperCount = (int)(total * (percent + (1d - percent) / 2d));
for(minimum = 0, hitCount = total; minimum < length; minimum++)
{
hitCount -= valueArray[minimum];
if(hitCount < upperCount)
{
break;
}
}
for(maximum = length - 1, hitCount = total; maximum >= 0; maximum--)
{
hitCount -= valueArray[maximum];
if(hitCount < upperCount)
{
break;
}
}
return new IntegerRange(minimum, maximum);
}
#endregion
728x90
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] 평균 구하기 (0) | 2015.01.01 |
---|---|
[C#/COMMON] 각도 구조체 (0) | 2014.12.31 |
[C#/COMMON] 엑셀 XLSX 파일 데이터 구하기 (0) | 2014.12.31 |
[C#/COMMON] 엑셀 XLS 파일 데이터 구하기 (0) | 2014.12.31 |
[C#/COMMON] 엔트로피 구하기 (0) | 2014.12.31 |
[C#/COMMON] 다각형 포인트 리스트 구하기 (0) | 2014.12.31 |
[C#/COMMON] 나선형 포인트 리스트 구하기 (0) | 2014.12.31 |
[C#/COMMON] 원형 포인트 리스트 구하기 (0) | 2014.12.31 |
[C#/COMMON] 각도 구하기 (0) | 2014.12.31 |
[C#/COMMON] 2 제곱 수 여부 조사하기 (0) | 2014.12.31 |