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