TSQL Challenge 20 - Solution By Jason Whitney



--Jason_Whitney_tsqlchallenge_20.sql
with cte (ID, FiboNumber, Fibo2, NumRepeats)
as
(
select	1
	,	cast(1 as bigint)
	,	cast(0 as bigint)
	,	0
union all
select	ID + 1
	,	FiboNumber + Fibo2
	,	FiboNumber
	,	sign(charindex('11', FiboNumber + Fibo2))
	+	sign(charindex('22', FiboNumber + Fibo2))
	+	sign(charindex('33', FiboNumber + Fibo2))
	+	sign(charindex('44', FiboNumber + Fibo2))
	+	sign(charindex('55', FiboNumber + Fibo2))
	+	sign(charindex('66', FiboNumber + Fibo2))
	+	sign(charindex('77', FiboNumber + Fibo2))
	+	sign(charindex('88', FiboNumber + Fibo2))
	+	sign(charindex('99', FiboNumber + Fibo2))
	+	sign(charindex('00', FiboNumber + Fibo2))
from	cte
where	ID < 92
)
select	NumRepeats
	,	FiboNumber
from	(select	NumRepeats
			,	FiboNumber
			,	row_number() over(partition by NumRepeats order by FiboNumber) Rank
		from	cte
		where	NumRepeats > 0) a
where	Rank <= 5

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.