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