Distinct palindromes within decimal numbers

From Rosetta Code
Revision as of 09:17, 6 April 2021 by Wherrera (talk | contribs)
Distinct palindromes within decimal numbers is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.

Find all distinct palindromes contained as substrings in decimal representation of n. Note that for the purpose of the initial function, a single digit will be considered a palindrome.

Task
  1. Find all the palindromes including single digits in the integers from 100 to 125, inclusive.
  2. Determine which if any of the following decimal integers contain palindromes of 2 digits or more:
 9, 169, 12769, 1238769, 123498769, 12346098769, 1234572098769,
 123456832098769, 12345679432098769, 1234567905432098769, 123456790165432098769,
 83071934127905179083, 1320267947849490361205695
Also see
Related tasks

Palindrome_detection
Longest_palindromic_substrings
N_1's_followed_by_a_3


Julia

<lang julia>function allpalindromes(a::Vector{T}) where T

   pals = Vector{Vector{T}}([[x] for x in a])
   len = length(a)
   len < 2 && return pals
   a == reverse(a) && push!(pals, a)
   len == 2 && return pals
   for i in 2:len
       left = a[1:i]
       left == reverse(left) && push!(pals, left)
   end
   return unique(vcat(pals, allpalindromes(a[2:end])))

end

println("Number Palindromes") for n in 100:125

   println(" ", rpad(n, 7), sort(allpalindromes(digits(n))))

end

palindrome2plusfree(n) = (a = allpalindromes(digits(n)); all(x -> length(x) == 1, a))

println("\nNumber Has no > 2 digit palindromes") for n in [9, 169, 12769, 1238769, 123498769, 12346098769, 1234572098769, 123456832098769,

   12345679432098769, 1234567905432098769, 123456790165432098769, 83071934127905179083, 1320267947849490361205695]
   println(rpad(n, 26), palindrome2plusfree(n))

end

</lang>

Output:
Number  Palindromes
 100    [[0], [0, 0], [1]]
 101    [[0], [1], [1, 0, 1]]
 102    [[0], [1], [2]]
 103    [[0], [1], [3]]
 104    [[0], [1], [4]]
 105    [[0], [1], [5]]
 106    [[0], [1], [6]]
 107    [[0], [1], [7]]
 108    [[0], [1], [8]]
 109    [[0], [1], [9]]
 110    [[0], [1], [1, 1]]
 111    [[1], [1, 1], [1, 1, 1]]
 112    [[1], [1, 1], [2]]
 113    [[1], [1, 1], [3]]
 114    [[1], [1, 1], [4]]
 115    [[1], [1, 1], [5]]
 116    [[1], [1, 1], [6]]
 117    [[1], [1, 1], [7]]
 118    [[1], [1, 1], [8]]
 119    [[1], [1, 1], [9]]
 120    [[0], [1], [2]]
 121    [[1], [1, 2, 1], [2]]
 122    [[1], [2], [2, 2]]
 123    [[1], [2], [3]]
 124    [[1], [2], [4]]
 125    [[1], [2], [5]]

Number                    Has no > 2 digit palindromes
9                         true
169                       true
12769                     true
1238769                   true
123498769                 true
12346098769               true
1234572098769             true
123456832098769           true
12345679432098769         true
1234567905432098769       true
123456790165432098769     true
83071934127905179083      true
1320267947849490361205695 false