using System;
using System.Linq.Expressions;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
String[] strings = {"4,78,6", "2,6,24", "31", "30"};
foreach (string s in strings)
{
Console.WriteLine("'{0}': {1}", s, isMatch(s));
}
}
static Boolean isMatch(string s) {
string pattern = @"^(?:[1-9]|[12]\d|30)(?:,(?:[1-9]|[12]\d|30))*$";
List<String> a = s.Split(',').ToList();
return Regex.Match(s, pattern).Success && a.Count == a.Distinct().Count();
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucS5FeHByZXNzaW9uczsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7CnVzaW5nIFN5c3RlbS5MaW5xOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJU3RyaW5nW10gc3RyaW5ncyA9IHsiNCw3OCw2IiwgIjIsNiwyNCIsICIzMSIsICIzMCJ9OwogICAgICAgIGZvcmVhY2ggKHN0cmluZyBzIGluIHN0cmluZ3MpCiAgICAgICAgeyAgIAogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiJ3swfSc6IHsxfSIsIHMsIGlzTWF0Y2gocykpOyAgIAogICAgICAgIH0KCX0KCXN0YXRpYyBCb29sZWFuIGlzTWF0Y2goc3RyaW5nIHMpIHsKICAgICAgICBzdHJpbmcgcGF0dGVybiA9IEAiXig/OlsxLTldfFsxMl1cZHwzMCkoPzosKD86WzEtOV18WzEyXVxkfDMwKSkqJCI7CiAgICAgICAgTGlzdDxTdHJpbmc+IGEgPSBzLlNwbGl0KCcsJykuVG9MaXN0KCk7ICAgICAgICAgICAgCiAgICAgICAgcmV0dXJuIFJlZ2V4Lk1hdGNoKHMsIHBhdHRlcm4pLlN1Y2Nlc3MgJiYgYS5Db3VudCA9PSBhLkRpc3RpbmN0KCkuQ291bnQoKTsKICAgIH0KfQ==