Eban numbers: Difference between revisions
Content added Content deleted
m (→{{header|Haskell}}: simplify) |
|||
Line 1,804: | Line 1,804: | ||
═════════════════════════════════════════════════════════════════════════════════════════════════════════ |
═════════════════════════════════════════════════════════════════════════════════════════════════════════ |
||
</pre> |
</pre> |
||
=={{header|Scala}}== |
|||
{{trans|Java}} |
|||
<lang scala>object EbanNumbers { |
|||
class ERange(s: Int, e: Int, p: Boolean) { |
|||
val start: Int = s |
|||
val end: Int = e |
|||
val print: Boolean = p |
|||
} |
|||
def main(args: Array[String]): Unit = { |
|||
val rgs = List( |
|||
new ERange(2, 1000, true), |
|||
new ERange(1000, 4000, true), |
|||
new ERange(2, 10000, false), |
|||
new ERange(2, 100000, false), |
|||
new ERange(2, 1000000, false), |
|||
new ERange(2, 10000000, false), |
|||
new ERange(2, 100000000, false), |
|||
new ERange(2, 1000000000, false) |
|||
) |
|||
for (rg <- rgs) { |
|||
if (rg.start == 2) { |
|||
println(s"eban numbers up to an including ${rg.end}") |
|||
} else { |
|||
println(s"eban numbers between ${rg.start} and ${rg.end}") |
|||
} |
|||
var count = 0 |
|||
for (i <- rg.start to rg.end) { |
|||
val b = i / 1000000000 |
|||
var r = i % 1000000000 |
|||
var m = r / 1000000 |
|||
r = i % 1000000 |
|||
var t = r / 1000 |
|||
r %= 1000 |
|||
if (m >= 30 && m <= 66) { |
|||
m %= 10 |
|||
} |
|||
if (t >= 30 && t <= 66) { |
|||
t %= 10 |
|||
} |
|||
if (r >= 30 && r <= 66) { |
|||
r %= 10 |
|||
} |
|||
if (b == 0 || b == 2 || b == 4 || b == 6) { |
|||
if (m == 0 || m == 2 || m == 4 || m == 6) { |
|||
if (t == 0 || t == 2 || t == 4 || t == 6) { |
|||
if (r == 0 || r == 2 || r == 4 || r == 6) { |
|||
if (rg.print) { |
|||
print(s"$i ") |
|||
} |
|||
count += 1 |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
if (rg.print) { |
|||
println() |
|||
} |
|||
println(s"count = $count") |
|||
println() |
|||
} |
|||
} |
|||
}</lang> |
|||
{{out}} |
|||
<pre>eban numbers up to an including 1000 |
|||
2 4 6 30 32 34 36 40 42 44 46 50 52 54 56 60 62 64 66 |
|||
count = 19 |
|||
eban numbers between 1000 and 4000 |
|||
2000 2002 2004 2006 2030 2032 2034 2036 2040 2042 2044 2046 2050 2052 2054 2056 2060 2062 2064 2066 4000 |
|||
count = 21 |
|||
eban numbers up to an including 10000 |
|||
count = 79 |
|||
eban numbers up to an including 100000 |
|||
count = 399 |
|||
eban numbers up to an including 1000000 |
|||
count = 399 |
|||
eban numbers up to an including 10000000 |
|||
count = 1599 |
|||
eban numbers up to an including 100000000 |
|||
count = 7999 |
|||
eban numbers up to an including 1000000000 |
|||
count = 7999</pre> |
|||
=={{header|Tailspin}}== |
=={{header|Tailspin}}== |