Distinct palindromes within decimal numbers: Difference between revisions

Added Wren
(Added Wren)
Line 243:
83071934127905179083 true
1320267947849490361205695 false
</pre>
 
=={{header|Wren}}==
{{libheader|Wren-seq}}
{{libheader|Wren-fmt}}
{{libheader|Wren-sort}}
<lang ecmascript>import "/seq" for Lst
import "/fmt" for Fmt
import "/sort" for Sort
 
var substrings = Fn.new { |s|
var ss = []
var n = s.count
for (i in 0...n) {
for (j in 1..n-i) ss.add(s[i...i + j])
}
return ss
}
 
System.print("Number Palindromes")
for (i in 100..125) {
var pals = []
var ss = substrings.call(i.toString)
for (s in ss) {
if (s == s[-1..0]) pals.add(s)
}
pals = Lst.distinct(pals)
var cmp = Fn.new { |i, j| (i.count - j.count).sign }
Sort.insertion(pals, cmp) // sort by length
Fmt.print("$d $3s", i, pals)
}
 
var nums = [
"9", "169", "12769", "1238769", "123498769", "12346098769", "1234572098769",
"123456832098769", "12345679432098769", "1234567905432098769", "123456790165432098769",
"83071934127905179083", "1320267947849490361205695"
]
System.print("\nNumber Has no >= 2 digit palindromes")
for (num in nums) {
var ss = substrings.call(num).where { |s| s.count > 1 }
var none = !ss.any { |s| s == s[-1..0] }
Fmt.print("$-25s $s", num, none)
}</lang>
 
{{out}}
<pre>
Number Palindromes
100 1 0 00
101 1 0 101
102 1 0 2
103 1 0 3
104 1 0 4
105 1 0 5
106 1 0 6
107 1 0 7
108 1 0 8
109 1 0 9
110 1 0 11
111 1 11 111
112 1 2 11
113 1 3 11
114 1 4 11
115 1 5 11
116 1 6 11
117 1 7 11
118 1 8 11
119 1 9 11
120 1 2 0
121 1 2 121
122 1 2 22
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
</pre>
9,482

edits