# [C# (.NET Core)], <s>74</s> <s>88</s> <s>82</s> <s>78</s> 77 + 18 bytes <!-- language-all: lang-cs --> s=>s.Select((x,i)=>$"{x}".PadLeft(s.Take(i).Sum(y=>y<92?-1:1)+(x-s[0])/45+1)) Outputs a collection of strings, one for each line. Byte count also includes: using System.Linq; [Try it online!][TIO-j7k5crkw] Explanation: s => // Take input, a string s.Select((x, i) => // Replace every character with: $"{x}" // The character as string .PadLeft( // Pad with this many spaces: s.Take(i) // Take characters, in the input string, preceding current one .Sum(y => // Sum them by: y < 92 ? -1 : 1 // If it's a \ add 1, if / subtract 1 ) + (x - s[0]) / 45 + 1 // If first slash is a / add one more space, if current slash is a \ add one more space (I got this through power of MATHS!) // How I arrived at this function: // + x / 48 If current slash is a \ add one more space // - s[0] / 48 + 1 If the first slash is a / add one more space ) ) [C# (.NET Core)]: https://www.microsoft.com/net/core/platform [TIO-j7k5crkw]: https://tio.run/##ZU9RT8IwEH7vrziJD22ATow@KGzGEDAmmBgh8UF8qOWQxq7DtdMRwm@f3aaQyZdce/m@u/vupO3KJMUis8q8w3RjHcZ8osxnnxAjYrRrIfGPHyZao3QqMZbfocFUSbIl4CG1sBZuq7xmSlgnnJLwlagFPAhlKNtLh6IS48zIgXWp36ED9yOTxZiKN42/XBTBEsLChpHlUyxXoDTvKBZGp61tvmvxR7GY4NJRy2fiA6lifJrFdBNGm8HV@U23d91jbZp37cvZKwsuLts9xop@Y4PaCJRZZ66pfK@URqC0kiCEob8@0cif0Jsqg5QxOAnBZFqzRmPzxBLLegifpSr2bXyWTJR1lPFxko6EXNEcwmhv8Jwqh5VDzlj/aNhx2b@iHWlmO7Ir5gcQH0Hgo36DgARl7vnqJ5U0D34A "C# (.NET Core) – Try It Online"