Table des matières ⇒ 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;
/**
Conditions de la liste(Plus que le nombre de fois spécifié)Trouvez une section continue et satisfaisante(Vérifiez le temps libre de la salle de réunion)
・ Les conditions sont spécifiées par ArValidator.
・ Vous pouvez également le trouver derrière la liste..
-Des exemples d'un tel traitement sont les suivants..
・ Demandez l'heure à laquelle la salle de réunion est ouverte pendant deux heures ou plus.
・ Exigez une période pendant laquelle 100 jours ou plus de ventes correspondent à trois jours consécutifs ou plus.
・ Trouvez la période pendant laquelle le résultat du test était de 80 points ou plus et a continué 3 fois ou plus..
・ Trouvez la période pendant laquelle Nampa a réussi trois fois de suite ou plus(Lol).
・ Dans cet exemple, la réservation d'une salle de conférence est prise comme exemple..
・ Une salle de réunion peut être réservée sur une base horaire entre 9h00 et 17h00.Remarque, peut être utilisé jusqu'à 18h00.
*/
public class Q01_14 {
public static void main(String[] args) {
List<MeetingRoom> list = new ArrayList<MeetingRoom>();
//Créer un cadre de 0h00 à 23h00
for (int i=0; i<23; i++) {
list.add(new MeetingRoom(i,((i>=9)&&(i<=17))?ArUseStatus.AVAILABLE:ArUseStatus.ILLEGAL));
}
//C'est un peu rempli de réservations jusqu'à la veille.
list.get(12).setStatus(ArUseStatus.IN_USE);
list.get(13).setStatus(ArUseStatus.IN_USE);
list.get(14).setStatus(ArUseStatus.IN_USE);
//Vérifiez la situation
L.p(list.toString());
//Définissez un ArValidator à vérifier gratuitement
ArValidator<MeetingRoom> validator = new ArValidator<MeetingRoom>() {
@Override
public boolean check(MeetingRoom value) {
return value.getStatus() == ArUseStatus.AVAILABLE;
}
};
List<Integer> availableList;
//Je suis visiteur à 10 heures, je souhaite donc faire une réservation de 2 heures ⇒ Êtes-vous libre?
availableList = ArList.sameValueSequence(list, validator,2,10);
//Vérifiez le résultat ⇒ Il devrait être deux heures libres de 10h00, 15h00 et 16h00..
L.p(availableList.toString());
//Réservez 2 heures à partir de 10 heures
list.get(10).setStatus(ArUseStatus.IN_USE);
list.get(11).setStatus(ArUseStatus.IN_USE);
L.p(list.toString());
//Prévu de partir tôt à 16h00 ⇒ Je veux avoir une réunion pendant 1 heure avant cela ⇒ Réservez pendant 1 heure à la fin de 16h00 ⇒ Êtes-vous libre?
availableList = ArList.sameValueSequenceReverse(list, validator,1,16);
L.p(availableList.toString()); //⇒ 15h00 et 9h00 devraient être gratuits...
//Réservez 1 heure à partir de 15h00
list.get(15).setStatus(ArUseStatus.IN_USE);
//Vérifiez la situation
L.p(list.toString());
}
//
/**salle de conférence(une heure)classe*/
static class MeetingRoom {
/**constructeur*/
public MeetingRoom(int time,ArUseStatus status) {
this.time = time;
this.status = status;
}
/** (début)Heures du jour*/
private int time;
/**statut*/
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();
}
}
}
Le résultat est le suivant.
result.txt
[, , , , , , , , , 09:Peut être utilisé, 10:Peut être utilisé, 11:Peut être utilisé, 12:Utilisé, 13:Utilisé, 14:Utilisé, 15:Peut être utilisé, 16:Peut être utilisé, 17:Peut être utilisé, , , , , ]
[10, 15, 16]
[, , , , , , , , , 09:Peut être utilisé, 10:Utilisé, 11:Utilisé, 12:Utilisé, 13:Utilisé, 14:Utilisé, 15:Peut être utilisé, 16:Peut être utilisé, 17:Peut être utilisé, , , , , ]
[15, 9]
[, , , , , , , , , 09:Peut être utilisé, 10:Utilisé, 11:Utilisé, 12:Utilisé, 13:Utilisé, 14:Utilisé, 15:Utilisé, 16:Peut être utilisé, 17:Peut être utilisé, , , , , ]
Recommended Posts