#include <stdio.h>
int main(void);
int button_clicked(int position);
int cycle_completed(int position);
int main(void)
{
int position = 0;
/*
positions:
0 = closed
1 = opening
2 = stopped_while_opening
3 = open
4 = closing
5 = stopped_while_closing
*/
position = button_clicked(position);
position = cycle_completed(position);
position = button_clicked(position);
position = button_clicked(position);
position = button_clicked(position);
position = button_clicked(position);
position = button_clicked(position);
position = cycle_completed(position);
return 0;
}
int button_clicked(int position)
{
if (!position)
{
printf(">Button clicked.\nDOOR: OPENING\n"); return 1;
}
if (position == 1)
{
printf(">Button clicked.\nDOOR: STOPPED_WHILE_OPENING\n"); return 2;
}
if (position == 2)
{
printf(">Button clicked.\nDOOR: CLOSING\n"); return 4;
}
if (position == 3)
{
printf(">Button clicked.\nDOOR: CLOSING\n"); return 4;
}
if (position == 4)
{
printf(">Button clicked.\nDOOR: STOPPED_WHILE_CLOSING\n"); return 5;
}
if (position == 5)
{
printf(">Button clicked.\nDOOR: OPENING\n"); return 1;
}
}
int cycle_completed(int position)
{
if (position == 1)
{
printf(">Cycle complete. DOOR: OPEN\n"); return 3;
}
if (position == 4)
{
printf(">Cycle complete. DOOR: CLOSED\n"); return 0;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbih2b2lkKTsKaW50IGJ1dHRvbl9jbGlja2VkKGludCBwb3NpdGlvbik7CmludCBjeWNsZV9jb21wbGV0ZWQoaW50IHBvc2l0aW9uKTsKCgppbnQgbWFpbih2b2lkKSAKewoJaW50IHBvc2l0aW9uID0gMDsKCQoJLyoKCXBvc2l0aW9uczogCgkwID0gY2xvc2VkCgkxID0gb3BlbmluZwoJMiA9IHN0b3BwZWRfd2hpbGVfb3BlbmluZwoJMyA9IG9wZW4KCTQgPSBjbG9zaW5nCgk1ID0gc3RvcHBlZF93aGlsZV9jbG9zaW5nCgkqLwoJCglwb3NpdGlvbiA9IGJ1dHRvbl9jbGlja2VkKHBvc2l0aW9uKTsKCXBvc2l0aW9uID0gY3ljbGVfY29tcGxldGVkKHBvc2l0aW9uKTsKCXBvc2l0aW9uID0gYnV0dG9uX2NsaWNrZWQocG9zaXRpb24pOwoJcG9zaXRpb24gPSBidXR0b25fY2xpY2tlZChwb3NpdGlvbik7Cglwb3NpdGlvbiA9IGJ1dHRvbl9jbGlja2VkKHBvc2l0aW9uKTsKCXBvc2l0aW9uID0gYnV0dG9uX2NsaWNrZWQocG9zaXRpb24pOwoJcG9zaXRpb24gPSBidXR0b25fY2xpY2tlZChwb3NpdGlvbik7Cglwb3NpdGlvbiA9IGN5Y2xlX2NvbXBsZXRlZChwb3NpdGlvbik7CgkKCXJldHVybiAwOwp9CgppbnQgYnV0dG9uX2NsaWNrZWQoaW50IHBvc2l0aW9uKQp7CglpZiAoIXBvc2l0aW9uKQoJewoJCXByaW50ZigiPkJ1dHRvbiBjbGlja2VkLlxuRE9PUjogT1BFTklOR1xuIik7CgkJcmV0dXJuIDE7Cgl9CglpZiAocG9zaXRpb24gPT0gMSkKCXsKCQlwcmludGYoIj5CdXR0b24gY2xpY2tlZC5cbkRPT1I6IFNUT1BQRURfV0hJTEVfT1BFTklOR1xuIik7CgkJcmV0dXJuIDI7Cgl9CglpZiAocG9zaXRpb24gPT0gMikKCXsKCQlwcmludGYoIj5CdXR0b24gY2xpY2tlZC5cbkRPT1I6IENMT1NJTkdcbiIpOwoJCXJldHVybiA0OwoJfQoJaWYgKHBvc2l0aW9uID09IDMpCgl7CgkJcHJpbnRmKCI+QnV0dG9uIGNsaWNrZWQuXG5ET09SOiBDTE9TSU5HXG4iKTsKCQlyZXR1cm4gNDsKCX0KCWlmIChwb3NpdGlvbiA9PSA0KQoJewoJCXByaW50ZigiPkJ1dHRvbiBjbGlja2VkLlxuRE9PUjogU1RPUFBFRF9XSElMRV9DTE9TSU5HXG4iKTsKCQlyZXR1cm4gNTsKCX0KCWlmIChwb3NpdGlvbiA9PSA1KQoJewoJCXByaW50ZigiPkJ1dHRvbiBjbGlja2VkLlxuRE9PUjogT1BFTklOR1xuIik7CgkJcmV0dXJuIDE7Cgl9Cn0KCmludCBjeWNsZV9jb21wbGV0ZWQoaW50IHBvc2l0aW9uKQp7CglpZiAocG9zaXRpb24gPT0gMSkKCXsKCQlwcmludGYoIj5DeWNsZSBjb21wbGV0ZS4gRE9PUjogT1BFTlxuIik7CgkJcmV0dXJuIDM7Cgl9CglpZiAocG9zaXRpb24gPT0gNCkKCXsKCQlwcmludGYoIj5DeWNsZSBjb21wbGV0ZS4gRE9PUjogQ0xPU0VEXG4iKTsKCQlyZXR1cm4gMDsKCX0KfQ==