feat: First version of the script

This commit is contained in:
2025-12-10 01:32:41 +03:00
parent 4375b8e8fe
commit 4f6ee2a4a7
3 changed files with 110 additions and 2 deletions

13
.gitignore vendored Normal file
View File

@ -0,0 +1,13 @@
__pycache__/
*.py[cod]
*$py.class
.vscode/
.idea/
env/
venv/
*.venv
*.env
*.json

View File

@ -1,3 +1,51 @@
# secret-santa
### Secret Santa
Simple `python3` script for the "Secret Santa" game. Creates participants pairs from input json file and prints and saves them to the output json file.
This small script might evolve into a simple website, API or `bash` script in the future!
"Secret Santa" game python script. Might evolve into simple website, API or bash script.
### Run:
- Create `participants.json` file as in the example
- Run the next command in your shell (from the same directory as the `main.py` file):
```sh
python3 main.py
```
- Enjoy script results!
### Examples:
- Input file (`participants.json`):
```json
[
"Jayce",
"Viktor",
"Jinx",
"Vi",
"Ekko",
"Caitlyn"
]
```
- Output file (`pairs.json`):
```json
{
"Jayce": "Vi",
"Vi": "Viktor",
"Viktor": "Caitlyn",
"Caitlyn": "Jinx",
"Jinx": "Ekko",
"Ekko": "Jayce"
}
```
- Console output:
```
Reading from participants.json.
Writing to pairs.json.
Finished!
Results:
Jayce → Vi
Vi → Viktor
Viktor → Caitlyn
Caitlyn → Jinx
Jinx → Ekko
Ekko → Jayce
```

47
main.py Normal file
View File

@ -0,0 +1,47 @@
import copy
import json
import os
import random
def create_pairs_dict(lst: list[str]) -> dict[str, str]:
result = {}
lst_len = len(lst)
if lst_len < 2:
print("\033[1;31mList length should be at least 2!\033[0m")
raise RuntimeError
for i in range(lst_len - 1):
result[lst[i]] = lst[i+1]
result[lst[lst_len-1]] = lst[0]
return result
# Main
input_file = "participants.json"
output_file = "pairs.json"
if os.path.isfile(input_file):
print(f"\033[1;33mReading from {input_file}.\033[0m")
with open(input_file, "r", encoding="utf-8") as f:
participants_list = json.load(f)
else:
print("\033[1;31mNo input file found! Please create participants.json file.\033[0m")
participants_list: list[str] = ["1", "2", "3", "4"]
shuffled_list = copy.copy(participants_list)
random.shuffle(shuffled_list)
pairs = create_pairs_dict(shuffled_list)
print(f"\033[1;33mWriting to {output_file}.\033[0m")
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(pairs, f, ensure_ascii=False, indent=4)
print("\033[1;32mFinished!\033[0m")
print("\nResults:")
for giver, receiver in pairs.items():
print(f"{giver}{receiver}")