function formatLines(words: string[], maxWidth: number): string[] {
const result: string[] = [];
let currentLine: string = "";
let currentLength: number = 0;
for (const word of words) {
const wordLen = word.length;
// If adding this word exceeds maxWidth, push current line
if (currentLength + (currentLine === "" ? 0 : 1) + wordLen > maxWidth) {
if (currentLine !== "") {
result.push(currentLine);
}
currentLine = word;
currentLength = wordLen;
} else {
if (currentLine !== "") {
currentLine += " ";
currentLength++;
}
currentLine += word;
currentLength += wordLen;
}
}
// Push the last line if not empty
if (currentLine !== "") {
result.push(currentLine);
}
return result;
}
// Main
function main(): void {
const words: string[] = ["This", "is", "a", "programming", "example", "of", "text", "wrapping"];
const maxWidth = 12;
const lines: string[] = formatLines(words, maxWidth);
for (const line of lines) {
console.log(`"${line}"`);
}
}
main();
/*
run:
"This is a"
"programming"
"example of"
"text"
"wrapping"
*/