view trunk/aid/astar.d @ 0:4b2e8e8a633e

Repository setup.
author revcompgeek
date Mon, 03 Mar 2008 19:28:10 -0700
parents
children 5dd9f598bcd8
line wrap: on
line source

/*+++++++++++++++++++++++++++++++++++++++++++
 +               A* algorithm               +
 +             By Matt Peterson             +
 +++++++++++++++++++++++++++++++++++++++++++*/

module aid.astar;

import mintl.arrayheap;

class Node(DATA) {
    int xloc;
    int yloc;
    int fitness;
    private int fitg;
    Node* parent = null;
    DATA data;
    
    this(DATA d, int g){
        data = d;
        fitness = g;
        fitg = g;
    }
    this(DATA d, int g, Node* p){
        data = d;
        parent = p;
        if(parent) fitness = parent.fitness + g;
        fitg = g;
    }
    int opCmp(Node other){
        return this.fitness - other.fitness;
    }
}

class AStar(DATA) {
    alias Node!(DATA) Node;
    alias DATA[] delegate(DATA) getChildren;
    ArrayHeap!(Node) openList;
    ArrayHeap!(Node) closedList;
    DATA[] run(DATA start){
        
    }
}