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..453365c --- /dev/null +++ b/solutions/go/annalyns-infiltration/1/annalyns_infiltration.go @@ -0,0 +1,24 @@ +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 !archerIsAwake && prisonerIsAwake && !knightIsAwake || petDogIsPresent && !archerIsAwake +}