https://github.com/acontenti/portanuova
Esoteric programming laguage set in Turin Metro
https://github.com/acontenti/portanuova
esoteric-language esoteric-programming-language mornington-crescent porta-nuova ruby
Last synced: over 1 year ago
JSON representation
Esoteric programming laguage set in Turin Metro
- Host: GitHub
- URL: https://github.com/acontenti/portanuova
- Owner: acontenti
- Created: 2016-11-26T10:46:47.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-08-18T23:14:46.000Z (almost 9 years ago)
- Last Synced: 2025-01-20T22:09:31.811Z (over 1 year ago)
- Topics: esoteric-language, esoteric-programming-language, mornington-crescent, porta-nuova, ruby
- Language: Ruby
- Homepage:
- Size: 14.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Porta Nuova
Esoteric programming laguage inspired by "Mornington Crescent" language, but set in Turin Metro.
It is named after "Porta Nuova" metro station, which is the fulcrum of Turin Metro.
## Rules
In **Porta Nuova** you travel around **stations** in Turin Metro.
You travel with a **backpack** that can hold **values**.
Each **station** has a **value** and performs some action on **backpack** **values** and/or **station** **value**.
**Stations** are on different **lines** and you can only change in **interchange stations**.
### Backpack
Initially the **backpack** holds two **values** `0` and `''` (empty string).
The number of **values** can change in some **stations** like `Porta Susa` and `Rebaudengo`.
### Lines
There are two **lines**: `1` and `2`.
You can change between them in `Porta Nuova` **station**, which is the only interchange **station** in the system.
#### Line 1
- `Cascine Vica`
- `Leumann`
- `Collegno Centro`
- `Certosa`
- `Fermi`
- `Paradiso`
- `Marche`
- `Massaua`
- `Pozzo Strada`
- `Monte Grappa`
- `Rivoli`
- `Racconigi`
- `Bernini`
- `Principi d'Acaja`
- `XVIII Dicembre`
- `Porta Susa`
- `Vinzaglio`
- `Re Umberto`
- `Porta Nuova`
- Interchange **station** for **lines** `1` and `2`
- Holds a **reference** to last visited **station**, used not to loose last **station** **reference** when you need to change **line**
- `Marconi`
- `Nizza`
- `Dante`
- `Carducci-Molinette`
- `Spezia`
- `Lingotto`
- `Italia '61`
- `Bengasi`
#### Line 2
- `Pasta di Rivalta`
- `Orbassano Centro`
- `Beinasco Centro`
- `Fornaci`
- `Cimitero Parco`
- `Mirafiori`
- `Cattaneo`
- `Omero`
- `Pitagora`
- `Parco Rignon`
- `Santa Rita`
- `Gessi`
- `Largo Orbassano`
- `Caboto`
- `Politecnico`
- `Stati Uniti`
- `Porta Nuova`
- Interchange **station** for **lines** `1` and `2`
- Holds a **reference** to last visited **station**, used not to loose last **station** **reference** when you need to change **line**
- `Solferino`
- `Castello`
- `Regina Margherita`
- `Verona`
- `Novara`
- `Regio Parco`
- `Zanella`
- `Tabacchi`
- `Cherubini`
- `Paisiello`
- `Giulio Cesare`
- `Vercelli`
- `Rebaudengo`
### Directions
**Directions** indicate where to go.
You have to specify a **line** and a **station**.
You can give **directions** this way:
```
prendi la linea fino a
```
### Shortcuts
You can imagine **shortcuts** as functions in other programming languages.
You can define a **shortcut** this way:
```
per prendere la scorciatoia
...
...
sei arrivato
```
**Shortcuts** can have a **parameter**, but it is optional. Like this:
```
per prendere la scorciatoia con un
...
...
sei arrivato
```
You can take a **shortcut** this way:
```
prendi la scorciatoia
```
Of course if the **shortcut** has a **parameter**, you have to pass a **value**. This way:
```
prendi la scorciatoia con
```
## Copyright
Copyright © 2016 Alessandro Contenti. All rights reserved.