fn isHappyNumber n = ( local pastNumbers = #() while n != 1 do ( n = n as string local newNumber = 0 for i = 1 to n.count do ( local digit = n[i] as integer newNumber += pow digit 2 ) n = newNumber if (finditem pastNumbers n) != 0 do return false append pastNumbers newNumber ) n == 1 ) printed = 0 for i in (for h in 1 to 500 where isHappyNumber h collect h) do ( if printed == 8 do exit print i as string printed += 1 )