diff --git a/solutions/go/annalyns-infiltration/1/annalyns_infiltration.go b/solutions/go/annalyns-infiltration/1/annalyns_infiltration.go new file mode 100644 index 0000000..71a7dc2 --- /dev/null +++ b/solutions/go/annalyns-infiltration/1/annalyns_infiltration.go @@ -0,0 +1,22 @@ +package annalyn + +// CanFastAttack can be executed only when the knight is sleeping. +func CanFastAttack(knightIsAwake bool) bool { + return !knightIsAwake +} + +// CanSpy can be executed if at least one of the characters is awake. +func CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake bool) bool { + return knightIsAwake || archerIsAwake || prisonerIsAwake +} + +// CanSignalPrisoner can be executed if the prisoner is awake and the archer is sleeping. +func CanSignalPrisoner(archerIsAwake, prisonerIsAwake bool) bool { + return !archerIsAwake && prisonerIsAwake +} + +// CanFreePrisoner can be executed if the prisoner is awake and the other 2 characters are asleep +// or if Annalyn's pet dog is with her and the archer is sleeping. +func CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent bool) bool { + return !knightIsAwake && !archerIsAwake && prisonerIsAwake || petDogIsPresent && !archerIsAwake +}