1
const strongPasswordChecker = (passwd) => {5
if (!passwd.match(/[A-Z]/)) {8
if (!passwd.match(/[a-z]/)) {11
if (!passwd.match(/\d/)) {15
let groups = passwd.match(/(.)\1*/g).filter((x) => x.length > 2);17
if (passwd.length <= 20) {18
groups.forEach((group) => {19
steps += Math.trunc(group.length / 3);20
mustAdd -= Math.trunc(group.length / 3);24
if (passwd.length <= 20) {25
mustAdd = mustAdd > 0 ? mustAdd : 0;26
if (passwd.length + steps >= 6) {29
if (mustAdd > 6 - (passwd.length + steps)) {32
steps += 6 - (passwd.length + steps);37
if (passwd.length > 20) {38
let mustRemove = passwd.length - 20;42
for (let i = 1; i <= 3; i++) {43
for (let k = 0; k < groups.length; k++) {44
if (plus[k] === undefined) {47
chL = groups[k].length - plus[k];48
if (lengths[k] === undefined) {53
Math.trunc((chL - i) / 3) < Math.trunc(chL / 3) &&54
passwd.length - steps - i >= 6 &&70
lengths.forEach((length) => {72
steps += Math.trunc(length / 3);73
mustAdd -= Math.trunc(length / 3);77
mustRemove = mustRemove > 0 ? mustRemove : 0;78
mustAdd = mustAdd > 0 ? mustAdd : 0;79
steps += mustAdd + mustRemove;