TSQL Challenge 20 - Solution By andrey myasnikov



--andrey_myasnikov_tsqlchallenge_20_v1.sql
WITH TBL (ID, F0, FiboNumber) 
AS
(
	SELECT 1, CAST (0 AS BIGINT), CAST (1 AS BIGINT)
	UNION ALL
	SELECT ID + 1, FiboNumber, F0+FiboNumber
	FROM TBL
	WHERE ID < 92
)

SELECT NumRepeats, FiboNumber
FROM	(
		SELECT *, ROW_NUMBER() OVER(PARTITION BY NumRepeats ORDER BY NumRepeats, FiboNumber) AS ID
		FROM (
				SELECT	NumRepeats =
							CASE WHEN CHARINDEX('00', CAST(FiboNumber AS CHAR(19))) > 0 THEN 1 ELSE 0 END +
							CASE WHEN CHARINDEX('11', CAST(FiboNumber AS CHAR(19))) > 0 THEN 1 ELSE 0 END +
							CASE WHEN CHARINDEX('22', CAST(FiboNumber AS CHAR(19))) > 0 THEN 1 ELSE 0 END +
							CASE WHEN CHARINDEX('33', CAST(FiboNumber AS CHAR(19))) > 0 THEN 1 ELSE 0 END +
							CASE WHEN CHARINDEX('44', CAST(FiboNumber AS CHAR(19))) > 0 THEN 1 ELSE 0 END +
							CASE WHEN CHARINDEX('55', CAST(FiboNumber AS CHAR(19))) > 0 THEN 1 ELSE 0 END +
							CASE WHEN CHARINDEX('66', CAST(FiboNumber AS CHAR(19))) > 0 THEN 1 ELSE 0 END +
							CASE WHEN CHARINDEX('77', CAST(FiboNumber AS CHAR(19))) > 0 THEN 1 ELSE 0 END +
							CASE WHEN CHARINDEX('88', CAST(FiboNumber AS CHAR(19))) > 0 THEN 1 ELSE 0 END +
							CASE WHEN CHARINDEX('99', CAST(FiboNumber AS CHAR(19))) > 0 THEN 1 ELSE 0 END , 
						FiboNumber 
				FROM TBL
			) TBL1
		) TBL2
WHERE ID < 6 AND NumRepeats > 0

Did you find something incorrect/wrong with this solution? Take a few seconds to Report It.

Did you understand how this solution work? If you find it difficult to understand, you can Request an Explanation or you can Write an explanation to help others better understand this solution.