2 added 137 characters in body
source | link

Ruby, 183 characters

[(f=FailSafe
[f<1)<1?"No technical alarms":f&15<1?:Unknown:["Detection zones staying in a given state"*f[0],"Bad visibility"*f[1],"Initialization"*f[2],"Bad configuration"*f[3]]-[""]]*"; "

Yet another Ruby solution, but a bit shorter than the others. This is a single expression that uses the constant FailSafe (in Ruby, all uppercase identifiers are constants) to create the output string.

Ruby, 183 characters

f=FailSafe
[f<1?"No technical alarms":f&15<1?:Unknown:["Detection zones staying in a given state"*f[0],"Bad visibility"*f[1],"Initialization"*f[2],"Bad configuration"*f[3]]-[""]]*"; "

Yet another Ruby solution, but a bit shorter than the others.

Ruby, 183 characters

[(f=FailSafe)<1?"No technical alarms":f&15<1?:Unknown:["Detection zones staying in a given state"*f[0],"Bad visibility"*f[1],"Initialization"*f[2],"Bad configuration"*f[3]]-[""]]*"; "

Yet another Ruby solution, but a bit shorter than the others. This is a single expression that uses the constant FailSafe (in Ruby, all uppercase identifiers are constants) to create the output string.

1
source | link

Ruby, 183 characters

f=FailSafe
[f<1?"No technical alarms":f&15<1?:Unknown:["Detection zones staying in a given state"*f[0],"Bad visibility"*f[1],"Initialization"*f[2],"Bad configuration"*f[3]]-[""]]*"; "

Yet another Ruby solution, but a bit shorter than the others.