Inhaltsverzeichnis ⇒ Java Algorithm Library-Artery-Sample
Q01_14.java
package jp.avaj.lib.algo;
import java.util.ArrayList;
import java.util.List;
import jp.avaj.lib.def.ArUseStatus;
import jp.avaj.lib.test.L;
/**
Bedingungen aus der Liste(Mehr als angegeben)Finden Sie einen durchgehenden und zufriedenstellenden Abschnitt(Überprüfen Sie die Freizeit des Besprechungsraums)
・ Die Bedingungen werden von ArValidator festgelegt.
・ Sie finden es auch hinter der Liste..
Beispiele für eine solche Verarbeitung sind die folgenden..
・ Fragen Sie nach einer Zeit, in der der Besprechungsraum zwei Stunden oder länger geöffnet ist.
・ Fordern Sie einen Zeitraum an, in dem 100 oder mehr Verkaufstage drei oder mehr aufeinanderfolgende Tage sind.
・ Finden Sie den Zeitraum, in dem das Testergebnis 80 Punkte oder mehr betrug und dreimal oder öfter fortgesetzt wurde..
・ Finden Sie den Zeitraum, in dem Nampa drei oder mehr Mal hintereinander erfolgreich war(Lol).
・ In diesem Beispiel wird die Reservierung eines Konferenzraums als Beispiel genommen..
・ Ein Tagungsraum kann stündlich zwischen 9:00 und 17:00 Uhr reserviert werden.Hinweis, kann bis 18:00 Uhr verwendet werden.
 */
public class Q01_14 {
  public static void main(String[] args) {
    List<MeetingRoom> list = new ArrayList<MeetingRoom>();
    //Erstellen Sie einen Rahmen von 0:00 bis 23:00 Uhr
    for (int i=0; i<23; i++) {
      list.add(new MeetingRoom(i,((i>=9)&&(i<=17))?ArUseStatus.AVAILABLE:ArUseStatus.ILLEGAL));
    }
    //Es ist ein wenig mit Reservierungen bis zum Tag zuvor gefüllt.
    list.get(12).setStatus(ArUseStatus.IN_USE);
    list.get(13).setStatus(ArUseStatus.IN_USE);
    list.get(14).setStatus(ArUseStatus.IN_USE);
    //Überprüfen Sie die Situation
    L.p(list.toString());
    //Definieren Sie einen ArValidator, der kostenlos überprüft werden soll
    ArValidator<MeetingRoom> validator = new ArValidator<MeetingRoom>() {
      @Override
      public boolean check(MeetingRoom value) {
        return value.getStatus() == ArUseStatus.AVAILABLE;
      }
    };
    List<Integer> availableList;
    //Ich bin um 10 Uhr ein Besucher und möchte daher eine Reservierung für 2 Stunden vornehmen. ⇒ Ist es kostenlos?
    availableList = ArList.sameValueSequence(list, validator,2,10);
    //Überprüfen Sie das Ergebnis ⇒ Von 10:00, 15:00 und 16:00 Uhr sollten zwei Stunden frei sein..
    L.p(availableList.toString());
    //Buchen Sie für 2 Stunden ab 10 Uhr
    list.get(10).setStatus(ArUseStatus.IN_USE);
    list.get(11).setStatus(ArUseStatus.IN_USE);
    L.p(list.toString());
    //Geplant für eine frühzeitige Abreise um 16:00 Uhr. ⇒ Ich möchte 1 Stunde vorher ein Meeting haben. ⇒ 1 Stunde am Ende von 16:00 Uhr buchen. ⇒ Sind Sie frei?
    availableList = ArList.sameValueSequenceReverse(list, validator,1,16);
    L.p(availableList.toString()); //⇒ 15:00 und 9:00 sollten frei sein...
    //Buchen Sie für 1 Stunde ab 15:00 Uhr
    list.get(15).setStatus(ArUseStatus.IN_USE);
    //Überprüfen Sie die Situation
    L.p(list.toString());
  }
  //
  /**Konferenzraum(eine Stunde)Klasse*/
  static class MeetingRoom {
    /**Konstrukteur*/
    public MeetingRoom(int time,ArUseStatus status) {
      this.time = time;
      this.status = status;
    }
    /** (Start)Tageszeiten*/
    private int time;
    /**Status*/
    private ArUseStatus status;
    public int getTime() {
      return time;
    }
    public void setTime(int time) {
      this.time = time;
    }
    public ArUseStatus getStatus() {
      return status;
    }
    public void setStatus(ArUseStatus status) {
      this.status = status;
    }
    @Override
    public String toString() {
      String str = String.format("%02d:",time);
      return (status == ArUseStatus.ILLEGAL) ? "" : str+status.toString();
    }
  }
}
Das Ergebnis ist wie folgt.
result.txt
[, , , , , , , , , 09:Kann verwendet werden, 10:Kann verwendet werden, 11:Kann verwendet werden, 12:In Benutzung, 13:In Benutzung, 14:In Benutzung, 15:Kann verwendet werden, 16:Kann verwendet werden, 17:Kann verwendet werden, , , , , ]
[10, 15, 16]
[, , , , , , , , , 09:Kann verwendet werden, 10:In Benutzung, 11:In Benutzung, 12:In Benutzung, 13:In Benutzung, 14:In Benutzung, 15:Kann verwendet werden, 16:Kann verwendet werden, 17:Kann verwendet werden, , , , , ]
[15, 9]
[, , , , , , , , , 09:Kann verwendet werden, 10:In Benutzung, 11:In Benutzung, 12:In Benutzung, 13:In Benutzung, 14:In Benutzung, 15:In Benutzung, 16:Kann verwendet werden, 17:Kann verwendet werden, , , , , ]
        Recommended Posts