Ma porte de garage électrique fonctionne comme ceci:
- Il n'y a qu'un seul bouton poussoir pour contrôler la porte
- Si la porte est complètement fermée et que j'appuie sur le bouton, la porte commence à s'ouvrir. L'ouverture complète prend 10 secondes
- Si la porte est complètement ouverte et que j'appuie sur le bouton, la porte commence à se fermer. La fermeture complète prend 10 secondes
- Si la porte est en cours d'ouverture ou de fermeture et que j'appuie sur le bouton, la porte s'arrête et reste partiellement ouverte.
- Chaque fois que la porte s'arrête de bouger, soit à la fin automatique d'une action d'ouverture ou de fermeture, soit à partir d'une interruption manuelle en poussant le bouton à mi-chemin d'une action, le mécanisme s'inversera et se souviendra de sa direction pour l'action suivante.
- Si le bouton est enfoncé lorsque la porte est arrêtée mais partiellement ouverte, le temps nécessaire pour terminer son action sera d'une fraction de 10 secondes proportionnellement à la quantité de mouvement nécessaire pour terminer l'action.
Supposons que la porte est complètement fermée au début.
Une liste d'entrée d'entiers sera donnée. Ces nombres entiers sont le nombre de secondes que j'attends entre les pressions successives du bouton de commande.
Sortie deux choses:
- un pourcentage indiquant l'état de la porte une fois que toutes les pressions sur les boutons sont terminées et que la porte a atteint un état stable. La sortie du
%symbole est facultative. - une indication non ambiguë de la direction dans laquelle la porte se déplacera lors de la prochaine pression sur le bouton. Cela peut être
up/down,U/D,+/-,1/0ou ce que vous choisissez.
Vous pouvez supposer que la porte prend infiniment moins de 10 secondes pour terminer une action d'ouverture ou de fermeture.
Exemples d'entrées:
<empty list> # button was pushed just once
20 # button was pushed twice with 20 seconds between
10
5
20 20
10 10
5 5
1 2 3
8 9 10 11
11 10 9 8 7
Sorties attendues correspondant aux entrées ci-dessus
100% D
0% U
0% U
50% D
100% D
100% D
0% U
100% D
0% U
20% U
Exemple travaillé du dernier test
- La porte démarre fermée. Le bouton est enfoncé
- Attendez 11 secondes. La porte finit par s'ouvrir complètement. Le bouton est enfoncé.
- Attendez 10 secondes. La porte se ferme complètement. Le bouton est enfoncé.
- Attendez 9 secondes. Le bouton est enfoncé. La porte s'arrête à 90% ouverte.
- Attendez 8 secondes. Le bouton est enfoncé. La porte se ferme.
- Attendez 7 secondes. Le bouton est enfoncé. La porte s'arrête à 20% d'ouverture. La prochaine direction sera vers le haut.