2015-02-03 2 views
-3

의 예를 들어 다음과 같은 목록을 가지고, 우리는 남은 시간과 함께 여러 값이 있다고 가정 해 봅시다 :알고리즘은 게임 결과의 가장 좋은 기회를 선택하는

220 - 1 minute left 
150 - 2 minutes left 
600 - 13 minutes left 
180 - 2 hours left 
540 - 1 hour left 
400 - 1.5 hours left 

시간은 거의 두 시간 초과하지 남아 있지만, 이론적으로 할 수있다 아무것도. 따라서 남은 최대 시간을 알 수없는 경우를 가정 해 봅시다. 이 값은 시간이 지남에 따라 거의 일정합니다. 목표는 에 따라 가장 낮은 숫자 인을 기준으로 목록을 정렬하는 것입니다. 예 목록에서, 나는 가까운 결과를 선호하는 것 :

150 - 2 minutes left 
220 - 1 minute left 
180 - 2 hours left 
400 - 1.5 hours left 
540 - 1 hour left 
600 - 13 minutes left 

나는 수학을 잘 아니에요을 나는 이런 식으로 정렬하는 가장 좋은 방법 일 것입니다 무슨 완전히 확실하지 않다. 기본적으로 시간은 최상의 순서를 결정하기 위해 어느 정도 고려되어야합니다.

심문이 분명하지 않은 것처럼 나는이 주제에 대해 더 자세히 설명 할 것입니다. 값은 특정 품목 (식품, 목재 등)에 대한 입찰가의 수를 나타냅니다. 나는 사용자가 입력하는 동안 얻을 수있는 기회를 기반으로 정렬을 보여주고 싶습니다. 예를 들어, 일부 항목은 입찰가를 자주 내지 않으며 항목이 무료로 주어지기 때문에 무언가를 얻는 기회를 얻게됩니다.

+1

귀하의 질문이 이해가되지 않습니다 : 귀하의 예제 (괄호 순서 값)을 기반으로

var sortedList = originalList.OrderBy(x => x.Score + x.TimeLeft.TotalMinutes).ToList(); 

. –

+3

왜 순서가 그렇게 정교 할 수 있습니까? – Ishamael

+0

네, 맞습니다. 설명을 추가했습니다. –

답변

1

int Score 속성 및 TimeSpan TimeLeft 속성을 갖는 class 인.

그런 다음 다음과 같은 작업을 수행 할 수 있습니다

150 - 2 minutes left (152) 
220 - 1 minute left (221) 
180 - 2 hours left (300) 
400 - 1.5 hours left (490) 
540 - 1 hour left (600) 
600 - 13 minutes left (613) 
+0

그게 제대로 작동하지 않을 것입니다, 예제를 참조하십시오. –

+0

더 나은 알고리즘을 위해 업데이트 - TimeLeft를 분으로 변환하고 점수를 점수로 추가하여 정렬합니다. – toadflakz

+0

감사합니다. 지금 당장 가지고있는 것과 가장 가까운 대답입니다. 나는 왜 내가 처음에 왜 물었는지 완전히 확신하지 못합니다. 1 분당 입찰가에 대한 정보를 얻으므로 꽤 쉽습니다. 따라서 시간을두고 걸릴 수 있습니다. –

0

나의 제안은 다음과 같습니다

  1. 사용 Regex 변환 시간으로 시간을 (그것이 될 수있는 어떤 또는 초) 분

  2. 변환 시간

  3. 종류를 얻을 수

+0

나는 이미 DateTime 객체로 시간을 가지고있다. 변환 된 시간을 기준으로 정렬해도 문제가 해결되지 않습니다. –

관련 문제