To be able to edit code and run cells, you need to run the notebook yourself. Where would you like to run the notebook?

This notebook takes about 30 seconds to run.

In the cloud (experimental)

Binder is a free, open source service that runs scientific notebooks in the cloud! It will take a while, usually 2-7 minutes to get a session.

On your computer

(Recommended if you want to store your changes.)

  1. Copy the notebook URL:
  2. Run Pluto

    (Also see: How to install Julia and Pluto)

  3. Paste URL in the Open box

Frontmatter

If you are publishing this notebook on the web, you can set the parameters below to provide HTML metadata. This is useful for search engines and social media.

Author 1
👀 Reading hidden code
import Pluto
3.9 s
"https://featured.plutojl.org/basic/Tower%20of%20Hanoi.jl"
👀 Reading hidden code
url = "https://featured.plutojl.org/basic/Tower%20of%20Hanoi.jl"
11.2 μs
Error message

Another cell defining filename contains errors.

Computers are hard!
👀 Reading hidden code
Text(read(filename, String))
---
Error message

HTTP/2 404 while requesting https://featured.plutojl.org/basic/Tower%20of%20Hanoi.jl

Stack trace

Here is what happened, the most recent locations are first:

  1. anonymous function
  2. arg_write(f::Downloads.var"#3#4"{Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Nothing, Nothing, String}, arg::Nothing)
  3. #download#2
  4. download(url::String, output::Nothing)
  5. #invokelatest#2
  6. invokelatest
  7. do_download
  8. download
  9. filename = download(url)
Silly computer!
filename = download(url)
👀 Reading hidden code
---
s = Pluto.ServerSession()
👀 Reading hidden code
163 ms
Error message

Another cell defining filename contains errors.

Maybe time for a break? ☕️
nb = Pluto.SessionActions.open(s, filename; run_async=false)
👀 Reading hidden code
---
using PlutoUI
👀 Reading hidden code
180 ms
Error message

Another cell defining filename contains errors.

Pluto.where_referenced(nb.topology, Set([:move]))
👀 Reading hidden code
---
Error message

Another cell defining filename contains errors.

@bind whichcell_id Slider(nb.cell_order)
👀 Reading hidden code
---
Error message

Another cell defining filename contains errors.

nb.topology.nodes[fav_cell]
👀 Reading hidden code
---
Error message

Another cell defining filename contains errors.

nb.cells_dict[whichcell_id].code |> Text
👀 Reading hidden code
---
Error message

Another cell defining filename contains errors.

fav_cell = nb.cells_dict[whichcell_id]
👀 Reading hidden code
---
# nb.cells_dict[whichcell].metadata["luca"] = "ferranti"
👀 Reading hidden code
11.0 μs
Error message

Another cell defining filename contains errors.

Pluto.save_notebook(nb)
👀 Reading hidden code
---
Error message

Another cell defining filename contains errors.

filter(nb.cells) do c
occursin("recipe", c.code)
end
👀 Reading hidden code
---
Error message

Another cell defining filename contains errors.

Pluto.SessionActions.shutdown(s, nb)
👀 Reading hidden code
---