Michells Mesterværk

Vinderen af låge 6

by Administrator 8. December 2009 14:48

Puha, nu synes jeg alligevel det blev en smule svært at finde en vinder. Jeg har modtaget en del forslag til hvordan opgaven kan løses og størstedelen af dem er rimlig ens.

Mange af jer har brugt Queue typen i jeres egen type og det er sådan set cool nok, men se f.eks dette eksempel fra Rasmus Bjerner som 1. ikke bruger den 2. har rigtig lidt kode.

public class PriorityQueue<T>
{
private struct Data { public T t; public int priority; }
private readonly List<Data> list = new List<Data>();

public void InsertWithPriority(T element, int priority)
{
list.Insert(list.
Where(x => x.priority >= priority).Count(),
new Data { t = element, priority = priority });
}

public T GetNext()
{
if (list.Count > 0)
{
T t = list[0].t;
list.RemoveAt(0);
return t;
}
return default(T);
}

public T PeekAtNext()
{
return list.Count > 0 ? list[0].t : default(T);
}
}

Jeg synes ovenstående er elegant kode, let læseligt og overskueligt. Det eneste minus i denne kode er at priorteten skal være en integer.

En anden som har bidraget med noget næsten ligeså lækkert kode og lidt mere generisk er Allan Hvam Petersen. Se selv.

public class PriorityQueue<TItem, TPriority> : SortedList<TPriority, Queue<TItem>>
{
public TItem PeekAtNext()
{
return this.Last().Value.Peek();
}

public TItem GetNext()
{
var queue = this.Last().Value;
var item = queue.Dequeue();
if (queue.Count() == 0)
{
Remove(this.Last().Key);
}
return item;
}

public void InsertWithPriority(TItem item, TPriority priority)
{
if (ContainsKey(priority))
{
this[priority].Enqueue(item);
}
else
{
Add(priority, new Queue<TItem>(new[] { item }));
}
}
}

Jeg synes den her skal gå til Allan, selvom der var meget lækkert kode fra jer allesammen, synes jeg alligevel der var noget federe over Allans bud.

Der er et programmeringskit på vej til dig! Tillykke.

I kan finde koden fra lågen her.

Tags:

Comments

1/21/2010 9:35:25 AM #

same day payday loans

Thanks for maintaining your blog!

same day payday loans United States

2/14/2010 1:42:27 PM #

اخبار

I was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post.

اخبار Egypt

2/28/2010 3:18:18 AM #

stock prices

Do you care if I quote you on my website if I link back to your website?

stock prices United States

2/28/2010 11:32:48 AM #

stock charts

Do have some sort of email system where your blog posts emailed to me?

stock charts United States

3/4/2010 6:22:32 AM #

free hd movies

I love watching movies online, it is way cheaper than going to the theaters.

free hd movies United States

3/4/2010 8:13:30 AM #

watch movies online

I enjoy watching movies online, it is way easier than going to the theaters.

watch movies online United States

3/6/2010 2:50:07 AM #

Mothercare

A thoughtful opinion and ideas I will use on my blog. You've obviously spent a lot of time on this. Thank you!

Mothercare United Kingdom

3/17/2010 2:05:44 AM #

ssk sorgulama

This is a really good read for me, Must admit that you are one of the best bloggers I ever saw.Thanks for posting this informative article.

ssk sorgulama United States

3/17/2010 11:47:17 AM #

arac sorgulama

I admire the valuable information you offer in your articles. I will bookmark your blog and have my children check up here often. I am quite sure they will learn lots of new stuff here than anybody else!

arac sorgulama United States

3/20/2010 3:26:53 PM #

ehliyet

Excellent post.I want to thank you for this informative read, I really appreciate sharing this great post. Keep up your work.

ehliyet Denmark

Add comment


(Will show your Gravatar icon)

(De 3 specielle karaktere i det danske alfabet?)
  Country flag

biuquote
  • Comment
  • Preview
Loading



Powered by BlogEngine.NET 1.6.0.0
Theme by Mads Kristensen