An OSHA Approved Ladder?

Published by Mubashir Hassan in

Due to a huge scandal about the Laddersons Ladder Factory creating faulty ladders, the Occupational Safety and Health Administration require your help in determining whether a ladder is safe enough for use in the work place! It is vital that a ladder passes all criterea:

  • The ladder must be at least 5 characters wide.
  • The ladder mustn't have more than a 2 character gap between rungs.
  • Rungs must be evenly spaced apart.
  • Rungs should not be broken (i.e. no gaps).

Given a ladder (drawn as an array of strings) return true if it passes all of OSHA's criterea.

Examples

is_ladder_safe([
  "#   #",
  "#####",
  "#   #",
  "#   #",
  "#####",
  "#   #",
  "#   #",
  "#####",
  "#   #"
]) ➞ true
is_ladder_safe([
  "#   #",
  "#####",
  "#   #",
  "#####",
  "#   #",
  "#   #",
  "#####",
  "#   #"
]) ➞ false

# Uneven spaces between rungs.
is_ladder_safe([
  "#  #",
  "####",
  "#  #",
  "#  #",
  "####",
  "#  #",
  "#  #",
  "####",
  "#  #"
]) ➞ false

# Ladder is too narrow, should be at least 5 characters wide.
is_ladder_safe([
  "#   #",
  "#####",
  "#   #",
  "#   #",
  "#   #",
  "#   #",
  "#####",
  "#   #",
  "#   #",
  "#   #",
  "#   #",
  "#####",
  "#   #"
]), ➞ false

# Gap between rungs is too wide, should be less than 3.
is_ladder_safe([
  "#   #",
  "#  ##",
  "#   #",
  "#   #",
  "#####",
  "#   #",
  "#   #",
  "#####",
  "#   #"
]) ➞ false

# The top rung is broken.

Notes

  • There will be a one character space with no rung at the top and bottom of every ladder.
  • The height of the ladder is not needed for solving this problem.
Watch a quick demo on how Edabit works.