All pastes #458364 Raw Edit

Someone

public text v1 · immutable
#458364 ·published 2007-04-25 20:59 UTC
rendered paste body
package skyline;

import java.util.TreeSet;

/**
 * Klasse die het algoritme implementeert om een optimale stad te bouwen.
 * Het is NIET toegelaten bestaande methodes en/of signaturen te wijzigen, maar
 * het staat je vrij naar behoefte methodes en velden toe te voegen.
 * @author Timbermont Bouke
 **/
public class SkylineSolver{
    
    private BuildingList list;
    private double o,l;
    private TreeSet<Skyline> set;
    /**
     * Creeert een nieuwe instantie van SkylineSolver met gegeven
     * lijst van Buildings.
     * @param list de Buildings die gebruikt moeten worden.
     **/
    public SkylineSolver(BuildingList list) {
        this.list=list;
        set=new TreeSet<Skyline>();
        set.add(listToSkyline(list));
    }
    /**
     * Geeft een lijst van optimale Skylines terug.
     * @param o Vrij in te stellen parameter O uit de opgave
     * @param l Vrij in te stellen parameter L uit de opgave
     * @param x Maximaal aantal verschuivingen
     **/
    TreeSet<Skyline> getOptimalSkylines(double o, double l, int x) {
        this.o=o;
        this.l=l;
        
        return set;
    }
    /*De volgende methode neemt een skyline en berekend ervan de verhouding
     *die aangeeft in hoeverre die skyline ideaal is.
     */
    private double verhouding(Skyline s){
        double teller=s.getSurface()-Math.min((double)s.getSurface(),o);
        double len=s.coords[s.coords.length-2]-s.coords[0];
        double noemer=1+len-Math.min(len,l);
        return teller/noemer;
    }
    public static Skyline listToSkyline(BuildingList list){
        if(list.size()>1){
            BuildingList[] halflist=new BuildingList[2];
            halflist[0]=new BuildingList();
            halflist[1]=new BuildingList();
            int i=0;
            for(Building building:list){
                halflist[i%2].addBuilding(building);
                i++;
            }
            return Skyline.merge(listToSkyline(halflist[0]),listToSkyline(halflist[1]));
        }else{
            return new Skyline(list.getBuilding(0));
        }
    }
}