trying out V
parent
727c36e795
commit
920853c7bd
|
@ -0,0 +1,64 @@
|
|||
module euler
|
||||
import math
|
||||
|
||||
pub fn range(start int, end int) []int {
|
||||
mut result := []int
|
||||
for i := start; i <= end; i++ {
|
||||
result << i
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
pub fn even(n int) bool {
|
||||
return n % 2 == 0
|
||||
}
|
||||
|
||||
pub fn prime(n u64) bool {
|
||||
for i := u64(2); i <= u64(math.sqrt(f64(n))); i++ {
|
||||
if n % i == 0 {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
pub fn factors(n u64) []u64 {
|
||||
mut factors := []u64
|
||||
for i := u64(2); i <= u64(math.sqrt(f64(n))); i++ {
|
||||
if n % i == 0 && prime(i) {
|
||||
factors << i
|
||||
}
|
||||
}
|
||||
return factors
|
||||
}
|
||||
|
||||
pub fn max(ints []u64) u64 {
|
||||
mut max := u64(0)
|
||||
for n in ints {
|
||||
if n > max {
|
||||
max = n
|
||||
}
|
||||
}
|
||||
return max
|
||||
}
|
||||
|
||||
pub fn two_combinations(ints []int) [][]int {
|
||||
mut result := [[]int]
|
||||
result = []
|
||||
for i := 0; i < ints.len; i++ {
|
||||
for j := i + 1; j < ints.len; j++ {
|
||||
result << [[ints[i], ints[j]]]
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
pub fn palindrome(n int) bool {
|
||||
str := n.str()
|
||||
for i := 0; i < str.len; i++ {
|
||||
if str[i] != str[str.len-1-i] {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
fn multiples_of_three_and_five_below(n int) []int {
|
||||
mut nums := []int
|
||||
for i := 3; i < n; i++ {
|
||||
if i % 3 == 0 || i % 5 == 0 {
|
||||
nums << i
|
||||
}
|
||||
}
|
||||
return nums
|
||||
}
|
||||
|
||||
fn main() {
|
||||
mut result := 0
|
||||
for n in multiples_of_three_and_five_below(1000) {
|
||||
result += n
|
||||
}
|
||||
println(result)
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
import euler
|
||||
|
||||
fn even_fibonacci_up_to(n int) []int {
|
||||
mut result := []int
|
||||
mut a := 0
|
||||
mut b := 1
|
||||
for a + b < n {
|
||||
if euler.even(a + b) { result << a + b }
|
||||
temp := b
|
||||
b = a + b
|
||||
a = temp
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
fn main() {
|
||||
mut result := 0
|
||||
for n in even_fibonacci_up_to(4000000) {
|
||||
result += n
|
||||
}
|
||||
println(result)
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
import euler
|
||||
|
||||
fn main() {
|
||||
println(euler.max(euler.factors(600851475143)))
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
import euler
|
||||
|
||||
fn main()
|
||||
{
|
||||
mut max := 0
|
||||
for combo in euler.two_combinations(euler.range(100, 999)) {
|
||||
product := combo[0] * combo[1]
|
||||
if product > max && euler.palindrome(product) {
|
||||
max = product
|
||||
}
|
||||
}
|
||||
println(max)
|
||||
}
|
Loading…
Reference in New Issue