|
|
@@ -0,0 +1,75 @@
|
|
|
+
|
|
|
+const fs = require('fs');
|
|
|
+const readline = require('readline');
|
|
|
+
|
|
|
+function isMarker(str) {
|
|
|
+ let tmp = [];
|
|
|
+ return !str.split("").some(i => {
|
|
|
+ if (tmp.includes(i))
|
|
|
+ return true;
|
|
|
+ tmp.push(i);
|
|
|
+ return false;
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+function findMarker(input, len) {
|
|
|
+ for (let i =0; i < input.length -len; ++i) {
|
|
|
+ if (isMarker(input.substring(i, i+len))) {
|
|
|
+ return i;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function strLine(line) {
|
|
|
+ let output = "";
|
|
|
+ let pos14 = -1;
|
|
|
+ let pos4 = -1;
|
|
|
+ while (line.length) {
|
|
|
+ if (pos14 < 0)
|
|
|
+ pos14 = findMarker(line, 14);
|
|
|
+ if (pos4 < 0)
|
|
|
+ pos4 = findMarker(line, 4);
|
|
|
+
|
|
|
+ if (pos14 < 4) {
|
|
|
+ output += line.substring(0, pos14) + '\033[34;1m' + line.substring(pos4, pos4 +14) +'\033[39;00m';
|
|
|
+ line = line.substring(14);
|
|
|
+ pos14 = pos4 = -1;
|
|
|
+ } else if (pos4 === 0) {
|
|
|
+ output += '\033[95;1m' + line.substring(0, 4) +'\033[39;00m';
|
|
|
+ line = line.substring(4);
|
|
|
+ pos4 = -1;
|
|
|
+ pos14 -= 4;
|
|
|
+ if (pos14 === 0) pos14 = -1;
|
|
|
+ } else {
|
|
|
+ if (pos14 <= pos4) {
|
|
|
+ output += line.substring(0, pos14);
|
|
|
+ line = line.substring(pos14);
|
|
|
+ pos4 -= pos14;
|
|
|
+ if (pos4 === 0) pos4 = -1;
|
|
|
+ pos14 = 0;
|
|
|
+ } else if (pos4) {
|
|
|
+ output += line.substring(0, pos4);
|
|
|
+ line = line.substring(pos4);
|
|
|
+ pos14 -= pos4;
|
|
|
+ if (pos14 === 0) pos14 = -1;
|
|
|
+ pos4 = 0;
|
|
|
+ } else {
|
|
|
+ output += line;
|
|
|
+ line = "";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return output;
|
|
|
+}
|
|
|
+
|
|
|
+async function main() {
|
|
|
+ for await (let line of readline.createInterface({ input: process.stdin })) {
|
|
|
+ console.log(strLine(line));
|
|
|
+ console.log("Position of distinct 4 chars: " + (findMarker(line, 4)+4));
|
|
|
+ console.log("Position of distinct 14 chars: " + (findMarker(line, 14)+14));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+(main());
|
|
|
+
|