Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hiimsergey/hundred-doors

A tool for calculating and visualizing the '100 Doors' problem
https://github.com/hiimsergey/hundred-doors

cli cli-app math mathematics ncurses ncurses-tui rust rust-lang rust-practice rust-programming rust-programming-language rustlang

Last synced: about 11 hours ago
JSON representation

A tool for calculating and visualizing the '100 Doors' problem

Awesome Lists containing this project

README

        

# 100 Doors
> Imagine a hundred closed doors in a corridor.
> You go and open every one of them.
> Then, you open every second one. (If the door was open, then just close it.)
> Then, every third. Then, every fourth and every fifth and so on until you only touch the 100th door.
> How many doors are open now?

This is a mathematical problem known as "100 Doors". I have written a smol
program in Rust that calculates and visualizes the solution using
[ncurses-rs](https://crates.io/crates/ncurses).

```
A simple program that calculates and visualizes the "100 Doors" problem

Usage: hundred-doors [OPTIONS] [NUMBER]

Arguments:
[NUMBER] How many doors there are [default: 100]

Options:
-d, --draw Whether there should be a graphical representation of these doors
-e, --explain Whether to explain the problem
--twave How many milliseconds to wait before the next wave [default: 0]
--tdoor How many milliseconds to wait between new doors [default: 0]
-h, --help Print help
-V, --version Print version
```

## Examples
```
$ hundred-doors 100
> 10
```

```
$ hundred-doors 100 --draw --tdoor 10 --twave 50
```

You'll see an "animation" of the respective doors. Here's a screenshot:

![hundred-doors-screenshot](https://github.com/hiimsergey/hundred_doors/assets/91432388/4e5e72bb-333c-4c28-b46f-e6f5f1055ee8)