File tree 1 file changed +41
-0
lines changed
src/test/scala/org/bescala/projecteuler/problems
1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change @@ -106,4 +106,45 @@ class Problem004 extends EulerSuite {
106
106
}
107
107
find(start)
108
108
}
109
+
110
+ /*
111
+ euler(problem(4), "PalinSamdrome") {
112
+ object PalinSamdrome {
113
+ val N = 99999999
114
+ val N2 = (N * N).toString
115
+ val palindrome: (Long, Long, Long) =
116
+ if (N2 == N2.reverse) (N * N, N, N)
117
+ else {
118
+ (Iterator.from(N, -1)
119
+ .map { n => (n - 1, n)}
120
+ .flatMap { case (n1, n2) =>
121
+ (0L to 1) flatMap { deltaOne =>
122
+ (0L to N - n2 + deltaOne) map { d2 => (n1 - d2, n2 - deltaOne + d2)}
123
+ }
124
+ })
125
+ .map { case (n1, n2) => (n1 * n2, n1, n2)}
126
+ .find { case (palindromeCandidate, _, _) => palindromeCandidate.toString == palindromeCandidate.toString.reverse}
127
+ .get
128
+ }
129
+ }
130
+ //println(PalinSamdrome.palindrome.toString)
131
+ PalinSamdrome.palindrome._1
132
+ }
133
+ */
134
+
135
+ euler(problem(4 ), " Sam's PalinSamdrome" ) {
136
+ def find (start : Long ) = {
137
+ (for {
138
+ n2 <- Iterator .from(start.toInt, - 1 )
139
+ n1 = n2 - 1
140
+ deltaOne <- 0L to 1
141
+ d2 <- 0L to (start - n2 + deltaOne)
142
+ i = n1 - d2
143
+ j = n2 - deltaOne + d2
144
+ } yield i * j)
145
+ .find(p => p.toString == p.toString.reverse)
146
+ .get
147
+ }
148
+ find(start)
149
+ }
109
150
}
You can’t perform that action at this time.
0 commit comments