https://github.com/esimonov/paradromic-rings
Computing basic structural properties of the shapes obtained from cutting a Möbius strip and its generalisations with arbitrary number of half-twists.
https://github.com/esimonov/paradromic-rings
mobius r5rs recreational-mathematics topology
Last synced: 3 months ago
JSON representation
Computing basic structural properties of the shapes obtained from cutting a Möbius strip and its generalisations with arbitrary number of half-twists.
- Host: GitHub
- URL: https://github.com/esimonov/paradromic-rings
- Owner: esimonov
- License: mit
- Created: 2025-05-22T16:45:30.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-30T11:17:51.000Z (about 1 year ago)
- Last Synced: 2025-05-30T14:05:29.099Z (about 1 year ago)
- Topics: mobius, r5rs, recreational-mathematics, topology
- Language: Scheme
- Homepage:
- Size: 33.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Möbius strip dissections CLI
Paradromic rings are shapes created by cutting a Möbius strip across its width. This CLI can be used for computing their basic structural properties.
The main goal of the project was to explore Scheme's capabilities as a general purpose programming language. It's implemented in R5RS Scheme and uses SRFI-28 for string formatting.
The idea for a subject was inspired by Dr Tadashi Tokieda's course [Topology & Geometry](https://youtu.be/SXHHvoaSctc?si=9bXOmKjzHKfTlmgv).
## Why?
Some surprising properties show up when dissecting Möbius strips and similar structures.
```text
A mathematician confided
That a Mobius band is one-sided,
And you'll get quite a laugh,
If you cut one in half,
For it stays in one piece when divided.
```

When the strip is dissected off-center instead, the result may seem even stranger:

Let's use the CLI to verify what we've just seen!
```text
Let L and W denote the initial length and width of the strip, respecitively.
Enter the number of initial half-twists (or 'q' to quit) : 1
Enter D>=2 to mark the line 1/D along which the strip will be dissected (or 'q' to quit) : 2
---------
When dissecting a strip with 1 half-twist 1/2 way across its width, you get a single connected strip which is 2 times longer than the original one:
Length: 2L
Width: W/2
Number of half-twists: 4
---------
Let L and W denote the initial length and width of the strip, respecitively.
Enter the number of initial half-twists (or 'q' to quit) : 1
Enter D>=2 to mark the line 1/D along which the strip will be dissected (or 'q' to quit) : 3
---------
When dissecting a strip with 1 half-twist 1/3 way across its width, you get two linked strips, one of which is 2 times longer than the other:
Strip #1
Length: 2L
Width: W/3
Number of half-twists: 4
Strip #2
Length: L
Width: W/3
Number of half-twists: 1
---------
Let L and W denote the initial length and width of the strip, respecitively.
Enter the number of initial half-twists (or 'q' to quit) : q
Goodbye!
```
Basic santity check:
```text
Enter the number of initial half-twists (or 'q' to quit) : 0
Enter D>=2 to mark the line 1/D along which the strip will be dissected (or 'q' to quit) : 2
---------
When dissecting an untwisted strip 1/2 way across its width, you get two disconnected strips of the same length:
Strip #1
Length: L
Width: W/2
Number of half-twists: 0
Strip #2
Length: L
Width: W/2
Number of half-twists: 0
```
Basic insanity check:
```text
Enter the number of initial half-twists (or 'q' to quit) : 101
Enter D>=2 to mark the line 1/D along which the strip will be dissected (or 'q' to quit) : 7
---------
When dissecting a strip with 101 half-twists 1/7 way across its width, you get two linked strips, one of which is 2 times longer than the other:
Strip #1
Length: 2L
Width: W/7
Number of half-twists: 204
Strip #2
Length: L
Width: 5W/7
Number of half-twists: 101
```
Original image sources:
* [Cut along the centerline](https://commons.wikimedia.org/wiki/File:Moebiusband-1s.svg)
* [Off-center cut](https://commons.wikimedia.org/wiki/File:Moebiusband-2s.svg)
## How to run
Compile and run with [CHICKEN Scheme](https://call-cc.org/):
```sh
csc main.scm
./main
```
Or interpret without compilation:
```sh
csi main.scm
```