Last active
June 27, 2016 18:54
-
-
Save jonatasemidio/c9aa1b89dbd8e32c379ed82a2408bf6e to your computer and use it in GitHub Desktop.
Palindrome Algorithms Ideas
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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