public static void Main()
Console.WriteLine("Es ist schön");
internal class ClipPlaneValidator
public static bool ClipPlanesAreValid(IEnumerable<ClipPlaneSceneData> data, bool isClosedLoop)
return !ClipPlanesAreInvalid(data, isClosedLoop);
private static bool ClipPlanesAreInvalid(IEnumerable<ClipPlaneSceneData> data, bool isClosedLoop)
var clipPlaneSceneData = data.ToList();
clipPlaneSceneData.Add( clipPlaneSceneData.First() );
var dataAsCharSequence = ConvertToCharSequence(clipPlaneSceneData);
var forbiddenPattern = "tft";
return ContainsPattern( dataAsCharSequence , forbiddenPattern );
static IEnumerable<char> ConvertToCharSequence(IEnumerable<ClipPlaneSceneData> clipPlaneSceneData )
return clipPlaneSceneData.Select( item => item.IsSet ? 't' : 'f' );
static bool ContainsPattern(IEnumerable<char> sequence, string pattern)
return string.Join( "", sequence ).Contains( pattern );