using System; using System.Collections.Generic; using System.Linq; class Program { static IEnumerable<string> Parts(string input, out int i) { var list = new List<string>(); int level = 1, start = 1; i = 1; for (; i < input.Length && level > 0; i++) { if (input[i] == '[') level++; else if (input[i] == ']') level--; if (input[i] == '/' && level == 1 || input[i] == ']' && level == 0) { if (start == i) list.Add(string.Empty); else list.Add(input.Substring(start, i - start)); start = i + 1; } } return list; } static IEnumerable<string> Combinations(string input, string current = "") { if (input == string.Empty) { if (current.Contains("[")) return Combinations(current, string.Empty); return new List<string> { current }; } else if (input[0] == '[') { int end; var parts = Parts(input, out end); return parts.SelectMany(x => Combinations(input.Substring(end, input.Length - end), current + x)).ToList(); } else return Combinations(input.Substring(1, input.Length - 1), current + input[0]); } static void Main(string[] args) { //string s = "[CST/] [bombay/mumbai/] [Airport/] [overseas[flight/]/International[ flight/]] Terminal[1/ 1]"; //string s = "[where is/address of/] [Airport_Name_IATA_Code/] [City_Name/] [Airport/] [overseas/International/domestic] [terminal/terminals/terminals t/terminal t/t] [integer/space_integer/word/space_word/] [in/at]"; //string s = "[where is/address of/] [MAA/] [chennai/] [Airport/] [overseas/International/] [terminal/terminals/terminals t/terminal t/t][1/ 1/one/ one/] [in/at]"; //string s = "[MAA/] [chennai/] [Airport/] [overseas/International/] [terminal/terminals/terminals t/terminal t/t][1/ 1/one/ one/] [in/at]"; string s = "[MAA/] [chennai [in/at/]/] [Airport/] [terminal t/t][1/ 1/ one/]"; //string s = "[where is/address of/] [Airport_Name_IATA_Code/] [City_Name/] [Airport/] [overseas [flight/]/International [flight/]] Terminal[integer/space_integer/space_word]"; var list = Combinations(s); foreach(string ss in list) Console.WriteLine(ss); } }
Standard input is empty
MAA chennai in Airport terminal t1 MAA chennai at Airport terminal t1 MAA chennai Airport terminal t1 MAA chennai in Airport terminal t 1 MAA chennai at Airport terminal t 1 MAA chennai Airport terminal t 1 MAA chennai in Airport terminal t one MAA chennai at Airport terminal t one MAA chennai Airport terminal t one MAA chennai in Airport terminal t MAA chennai at Airport terminal t MAA chennai Airport terminal t MAA chennai in Airport t1 MAA chennai at Airport t1 MAA chennai Airport t1 MAA chennai in Airport t 1 MAA chennai at Airport t 1 MAA chennai Airport t 1 MAA chennai in Airport t one MAA chennai at Airport t one MAA chennai Airport t one MAA chennai in Airport t MAA chennai at Airport t MAA chennai Airport t MAA chennai in terminal t1 MAA chennai at terminal t1 MAA chennai terminal t1 MAA chennai in terminal t 1 MAA chennai at terminal t 1 MAA chennai terminal t 1 MAA chennai in terminal t one MAA chennai at terminal t one MAA chennai terminal t one MAA chennai in terminal t MAA chennai at terminal t MAA chennai terminal t MAA chennai in t1 MAA chennai at t1 MAA chennai t1 MAA chennai in t 1 MAA chennai at t 1 MAA chennai t 1 MAA chennai in t one MAA chennai at t one MAA chennai t one MAA chennai in t MAA chennai at t MAA chennai t MAA Airport terminal t1 MAA Airport terminal t 1 MAA Airport terminal t one MAA Airport terminal t MAA Airport t1 MAA Airport t 1 MAA Airport t one MAA Airport t MAA terminal t1 MAA terminal t 1 MAA terminal t one MAA terminal t MAA t1 MAA t 1 MAA t one MAA t chennai in Airport terminal t1 chennai at Airport terminal t1 chennai Airport terminal t1 chennai in Airport terminal t 1 chennai at Airport terminal t 1 chennai Airport terminal t 1 chennai in Airport terminal t one chennai at Airport terminal t one chennai Airport terminal t one chennai in Airport terminal t chennai at Airport terminal t chennai Airport terminal t chennai in Airport t1 chennai at Airport t1 chennai Airport t1 chennai in Airport t 1 chennai at Airport t 1 chennai Airport t 1 chennai in Airport t one chennai at Airport t one chennai Airport t one chennai in Airport t chennai at Airport t chennai Airport t chennai in terminal t1 chennai at terminal t1 chennai terminal t1 chennai in terminal t 1 chennai at terminal t 1 chennai terminal t 1 chennai in terminal t one chennai at terminal t one chennai terminal t one chennai in terminal t chennai at terminal t chennai terminal t chennai in t1 chennai at t1 chennai t1 chennai in t 1 chennai at t 1 chennai t 1 chennai in t one chennai at t one chennai t one chennai in t chennai at t chennai t Airport terminal t1 Airport terminal t 1 Airport terminal t one Airport terminal t Airport t1 Airport t 1 Airport t one Airport t terminal t1 terminal t 1 terminal t one terminal t t1 t 1 t one t