-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchallenge-02.js
More file actions
69 lines (64 loc) · 2.2 KB
/
challenge-02.js
File metadata and controls
69 lines (64 loc) · 2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// ?· Sólo usa letras minúsculas y dígitos.
// ?· Nunca usa dígitos después de una letra (Una vez aparecen letras, la contraseña debe continuar solo con letras)
// ?· Si usa dígitos, siempre los usa de forma igual o creciente (si sale un 3, ya no usará después un número menor)
// ?· Si usa letras, siempre las usa en orden alfabético igual o creciente (si sale una "b" ya no podrá usar una "a", por ejemplo)
// Algunos ejemplos para que lo entiendas perfectamente:
// 1234 -> true
// abc -> true
// aabbcc -> true (repite pero siempre ascendente)
// 112233 -> true (repite pero siempre ascendente)
// a123 -> false (un número después de una letra)
// 123abc -> true
// dbce -> false (una "d" y después una "b")
const fs = require('fs');
const data = fs.readFileSync('log.txt', 'utf8');
const cleanedData = data.replace(/\\n/g, '');
const cleanedDataWithoutNewlines = cleanedData.replace(/\r?\n|\r/g, '');
const linesArray = cleanedData.split('\n');
console.log(cleanedDataWithoutNewlines);
console.log(linesArray);
function truePassword(linesArray) {
let validPasswords = 0;
let invalidPasswords = 0;
for (let i = 0; i < linesArray.length; i++) {
const password = linesArray[i];
if (!/^[a-z0-9]+$/.test(password)) {
invalidPasswords++;
continue;
}
let hasLetter = false;
let lastLetter = '';
let lastDigit = -1;
let isValid = true;
for (let j = 0; j < password.length; j++) {
const char = password[j];
if (char >= 'a' && char <= 'z') {
if (hasLetter && char < lastLetter) {
isValid = false;
break;
}
lastLetter = char;
hasLetter = true;
}
else if (char >= '0' && char <= '9') {
if (hasLetter) {
isValid = false;
break;
}
if (char < lastDigit) {
isValid = false;
break;
}
lastDigit = char;
}
}
if (isValid) {
validPasswords++;
} else {
invalidPasswords++;
}
}
return `submit ${validPasswords}true${invalidPasswords}false`;
}
const result = truePassword(linesArray);
console.log(result);