Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Palindrome Algorithms Ideas
n = "99"
s = n.length()
println s%2==0 ? "${n[0..(s/2-1)]} ${n[s/2..-1]}" : "${n[0..(s/2-1)]} ${n[s.intdiv(2)]} ${n[s/2+1..-1]}"
println s%2==0 ? "${n[0..(s/2-1)] == n[s/2..-1]}" : "${n[0..(s/2-1)] == n[s/2+1..-1]}"
println s%2==0 ? n[0..(s/2-1)] == n[s/2..-1] : n[0..(s/2-1)] == n[s/2+1..-1]
def isPl(n){s=n.length(); return s%2==0 ? n[0..(s/2-1)] == n[-1..s/2] : n[0..(s/2-1)] == n[-1..s/2+1] }
a=99
pl = [:]
acc = []
while(a>=10){
for(b=99 ; b>=10; b--){
acc << [a, b, a*b, isPl( (a*b).toString() )]
if(isPl( (a*b).toString() )) pl << [(a*b):[a,b]]
}
a--
}
println pl.sort{ it.key }
def isPl(n){s=n.length(); return s%2==0 ? n[0..(s/2-1)] == n[-1..s/2] : n[0..(s/2-1)] == n[-1..s/2+1] }
a = b = 999
def calc(a,b){
if(a<=9 || b<=9 || isPl((a*b).toString())){
return [a, b, a*b]
}
println "a: $a and b: $b | a*b = ${a*b} isPl(${ (a*b).toString() } == ${isPl((a*b).toString())})"
if(a%10!=0){
calc(--a, b)
}else if(b%10!=0){
calc(a, --b)
}else{
a>=b ? calc(--a, b) : calc(a, --b)
}
}
calc(a,b)
a = b = 100
def isPl(n){s=n.length(); return s%2==0 ? n[0..(s/2-1)] == n[s/2..-1] : n[0..(s/2-1)] == n[s/2+1..-1] }
def calc(a,b){
if(a<=9 || b<=9){
return false
}
println "a: $a and b: $b = ${ a*b } is palindrome (${ isPl((a*b).toString()) } )"
b>=a ? calc(a, --b) : calc(--a, b)
}
calc(a,b)
//----
def isPl(n){s=n.length(); return s%2==0 ? n[0..(s/2-1)] == n[-1..s/2] : n[0..(s/2-1)] == n[-1..s/2+1] }
a=999
pl = [:]
acc = []
notFound = true
while(a>=100 && notFound){
for(b=999 ; b>=100; b--){
acc << [a, b, a*b, isPl( (a*b).toString() )]
if(isPl( (a*b).toString() )) {pl << [(a*b):[a,b]]}
}
a--
}
println pl.sort{ it.key }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment