g = ConstantArray["", {8, 8}]; While[Norm@First@Differences[r = RandomChoice[Tuples[Range[8], 2], 2]] <= Sqrt[2], Null]; g = ReplacePart[g, {r[[1]] -> "K", r[[2]] -> "k"}]; avail = Position[g, "", {2}]; n = RandomInteger[{2, 14}]; rls = Thread[RandomSample[avail, n] -> RandomChoice[Characters@"NBRQnbrq", n]]; g = ReplacePart[g, rls]; avail = RandomSample[DeleteCases[Position[g, "", {2}], {8, _}], RandomInteger[{2, 8}]]; g = ReplacePart[g, Thread[avail -> "P"]]; avail = RandomSample[DeleteCases[Position[g, "", {2}], {1, _}], RandomInteger[{2, 8}]]; g = ReplacePart[g, Thread[avail -> "p"]]; g //= Map[Split]; g = g /. (x : {"" ..}) :> ToString[Length[x]]; g //= Map[StringJoin@*Flatten]; g = StringRiffle[Reverse[g], "/"]; g = g <> " w - - 0 1"; g