Solution to Project Euler problem 30
parent
3355b075bb
commit
6812eac271
|
@ -0,0 +1,46 @@
|
||||||
|
! Copyright (c) 2007 Aaron Schaefer.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: combinators.lib kernel math math.functions project-euler.common sequences ;
|
||||||
|
IN: project-euler.030
|
||||||
|
|
||||||
|
! http://projecteuler.net/index.php?section=problems&id=30
|
||||||
|
|
||||||
|
! DESCRIPTION
|
||||||
|
! -----------
|
||||||
|
|
||||||
|
! Surprisingly there are only three numbers that can be written as the sum of
|
||||||
|
! fourth powers of their digits:
|
||||||
|
|
||||||
|
! 1634 = 1^4 + 6^4 + 3^4 + 4^4
|
||||||
|
! 8208 = 8^4 + 2^4 + 0^4 + 8^4
|
||||||
|
! 9474 = 9^4 + 4^4 + 7^4 + 4^4
|
||||||
|
|
||||||
|
! As 1 = 1^4 is not a sum it is not included.
|
||||||
|
|
||||||
|
! The sum of these numbers is 1634 + 8208 + 9474 = 19316.
|
||||||
|
|
||||||
|
! Find the sum of all the numbers that can be written as the sum of fifth
|
||||||
|
! powers of their digits.
|
||||||
|
|
||||||
|
|
||||||
|
! SOLUTION
|
||||||
|
! --------
|
||||||
|
|
||||||
|
! if n is the number of digits
|
||||||
|
! n * 9^5 = 10^n when n ≈ 5.513
|
||||||
|
! 10^5.513 ≈ 325537
|
||||||
|
|
||||||
|
<PRIVATE
|
||||||
|
|
||||||
|
: sum-fifth-powers ( n -- sum )
|
||||||
|
number>digits [ 5 ^ ] sigma ;
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
|
: euler030 ( -- answer )
|
||||||
|
325537 [ dup sum-fifth-powers = ] subset sum 1- ;
|
||||||
|
|
||||||
|
! [ euler030 ] 100 ave-time
|
||||||
|
! 2537 ms run / 125 ms GC ave time - 100 trials
|
||||||
|
|
||||||
|
MAIN: euler030
|
|
@ -11,7 +11,7 @@ IN: project-euler.common
|
||||||
! collect-consecutive - #8, #11
|
! collect-consecutive - #8, #11
|
||||||
! log10 - #25, #134
|
! log10 - #25, #134
|
||||||
! max-path - #18, #67
|
! max-path - #18, #67
|
||||||
! number>digits - #16, #20
|
! number>digits - #16, #20, #30
|
||||||
! propagate-all - #18, #67
|
! propagate-all - #18, #67
|
||||||
! sum-proper-divisors - #21
|
! sum-proper-divisors - #21
|
||||||
! tau* - #12
|
! tau* - #12
|
||||||
|
|
|
@ -9,8 +9,8 @@ USING: definitions io io.files kernel math.parser sequences vocabs
|
||||||
project-euler.017 project-euler.018 project-euler.019 project-euler.020
|
project-euler.017 project-euler.018 project-euler.019 project-euler.020
|
||||||
project-euler.021 project-euler.022 project-euler.023 project-euler.024
|
project-euler.021 project-euler.022 project-euler.023 project-euler.024
|
||||||
project-euler.025 project-euler.026 project-euler.027 project-euler.028
|
project-euler.025 project-euler.026 project-euler.027 project-euler.028
|
||||||
project-euler.029 project-euler.067 project-euler.134 project-euler.169
|
project-euler.029 project-euler.030 project-euler.067 project-euler.134
|
||||||
project-euler.173 project-euler.175 ;
|
project-euler.169 project-euler.173 project-euler.175 ;
|
||||||
IN: project-euler
|
IN: project-euler
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
Loading…
Reference in New Issue