poniedziałek, 21 września 2009

Kolejka priorytetowa w C#

Ostatnio implementując A* w C# potrzebowałem kolejki priorytetowej.
W odmętach internetu odnalazłem następującą implementację:
http://blogs.msdn.com/ericlippert/archive/2007/10/08/path-finding-using-a-in-c-3-0-part-three.aspx
Wykorzystuje ona uporządkowany słownik (czyli drzewo BST) "zwykłych" kolejek. Oczywiście nie byłbym sobą, gdybym nie poprawił tego trochę ;)

Moja słitaśna wersja - dodana właściwość podejrzenia szczytu stosu bez zdejmowania ;)

http://csharp.pastebin.com/f4df1e50d

Niestety, jak widać dla tej kolejki potrzebny jest LINQ i C# 3.0. Bez rozszerzenia First() ciężko by było to nawet zapisać ;)

I przy okazji - serwis pastebin.com, kiedy już nie mamy rafb.net/paste ;) No i pastebin potrafi kod trzymać "forever" podobno :)

Brak komentarzy:

Prześlij komentarz