# Rebol - 195 # for n 0 do input 1[b: copy a: form n d: c: 0 parse reverse a[any[m:"6"(change m"9"++ c)|"9"(change m"6"++ c)|"0"|"8"| skip(++ d)]]print rejoin [b either all[d = 0 c > 0 a != b a/1 != #"0"]"."{}]] Ungolfed + some annotations: for n 0 do input 1 [ b: copy a: form n d: c: 0 ; reverse number and rotate "6" & "9" ; and do some counts (c when "6" or "9" and d when != "0689") parse reverse a [ any [ m: "6" (change m "9" ++ c) | "9" (change m "6" ++ c) | "0" | "8" | skip (++ d) ] ] print rejoin [ b either all [ d = 0 ; only has 0689 digits c > 0 ; must have at least one "6" or "9" a != b ; not same when reversed a/1 != #"0" ; does not "end" with zero ] "." {} ; if ALL then print "." else blank {} ] ]