diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2021-06-24 15:09:19 +0200 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2021-06-24 15:09:19 +0200 |
| commit | d8d3fff46bd06d8638abf06e1716fc4a1dc6c2a6 (patch) | |
| tree | 9d3e0148beb8e1f71d99860f2a335ab7421bb9b6 /julia | |
| parent | 8e3786904f6ea6d1f3422a36d9bacdc9f18bed04 (diff) | |
| download | project_euler-d8d3fff46bd06d8638abf06e1716fc4a1dc6c2a6.tar.gz project_euler-d8d3fff46bd06d8638abf06e1716fc4a1dc6c2a6.tar.bz2 project_euler-d8d3fff46bd06d8638abf06e1716fc4a1dc6c2a6.zip | |
problem 112 in julia
Diffstat (limited to 'julia')
| -rw-r--r-- | julia/112-bouncy_numbers.jl | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/julia/112-bouncy_numbers.jl b/julia/112-bouncy_numbers.jl new file mode 100644 index 0000000..4877ed9 --- /dev/null +++ b/julia/112-bouncy_numbers.jl @@ -0,0 +1,39 @@ +### +# Bouncy numbers +# Problem 112 +# +# Working from left-to-right if no digit is exceeded by the digit to its left it is called +# an increasing number; for example, 134468. +# Similarly if no digit is exceeded by the digit to its right it is called a decreasing +# number; for example, 66420. +# We shall call a positive integer that is neither increasing nor decreasing a "bouncy" +# number; for example, 155349. +# Clearly there cannot be any bouncy numbers below one-hundred, but just over half of the +# numbers below one-thousand (525) are bouncy. In fact, the least number for which the +# proportion of bouncy numbers first reaches 50% is 538. +# Surprisingly, bouncy numbers become more and more common and by the time we reach 21780 +# the proportion of bouncy numbers is equal to 90%. +# Find the least number for which the proportion of bouncy numbers is exactly 99%. +### + + +using Base.Iterators + +function is_bouncy(n) + s = collect(string(n)) + !(issorted(s) || issorted(s, rev=true)) +end + +const RATIO = 0.99 + +bouncy_count = 0 +for n in countfrom(0) + global bouncy_count + if is_bouncy(n) + bouncy_count += 1 + end + if bouncy_count / n >= RATIO + println(n) + exit(0) + end +end |
