All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.chocosolver.util.objects.tree.Interval Maven / Gradle / Ivy

There is a newer version: 4.10.17
Show newest version
/*
 * This file is part of choco-solver, http://choco-solver.org/
 *
 * Copyright (c) 2022, IMT Atlantique. All rights reserved.
 *
 * Licensed under the BSD 4-clause license.
 *
 * See LICENSE file in the project root for full license information.
 */
package org.chocosolver.util.objects.tree;

/**
 *  This class is adapted from : a
 *  balanced binary-search tree keyed by
 * Interval objects.
 * @author Mason M Lai
 * @author Charles Prud'homme
 */
public interface Interval extends Comparable {

    /**
     * Returns the starting point of this.
     */
    int start();

    /**
     * Returns the ending point of this. 

The interval does not include this point. */ int end(); /** * Returns the length of this. */ default int length() { return end() - start(); } /** * Returns if this interval is adjacent to the specified interval.

Two intervals are * adjacent if either one ends where the other starts. * * @param other - the interval to compare this one to * @return if this interval is adjacent to the specified interval. */ default boolean isAdjacent(Interval other) { return start() == other.end() || end() == other.start(); } default boolean overlaps(Interval o) { return end() > o.start() && o.end() > start(); } default boolean overlaps(int start, int end) { return end() > start && end > start(); } default int compareTo(Interval o) { return compareTo(o.start(), o.end()); } default int compareTo(int s, int e) { int d = start() -s; assert (start() > s && d > 0) || (start() < s && d < 0) || (start() == s && d == 0); if(d == 0){ d = end() - e; assert (end() > e && d > 0) || (end() < e && d < 0) || (end() == e && d == 0); } return Integer.signum(d); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy