Skip to content

Commit b987d75

Browse files
committed
Add games/prime.py, scripts/brain_prime.py, update pyproject.toml
1 parent fca5798 commit b987d75

File tree

5 files changed

+93
-0
lines changed

5 files changed

+93
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,5 @@ brain-gcd asciinema.org
2020
https://asciinema.org/a/NK5xTfNSEInZOxxvc2jcr7XbN
2121
brain-progression asciinema.org
2222
https://asciinema.org/a/n70jSFepIQlKTPKmGhWH7QCed
23+
brain-prime asciinema.org
24+
https://asciinema.org/a/dbBAKinjGY6PLpkdJDcHoDVnS

brain_games/games/prime.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import math
2+
import secrets
3+
4+
5+
def is_prime(number: int) -> bool:
6+
# Check if a number is prime
7+
if number < 2:
8+
return False
9+
if number == 2:
10+
return True
11+
if number % 2 == 0:
12+
return False
13+
14+
# Check only odd divisors up to sqrt(number)
15+
limit = math.isqrt(number)
16+
for divisor in range(3, limit + 1, 2):
17+
if number % divisor == 0:
18+
return False
19+
20+
return True
21+
22+
23+
def generate_round() -> tuple[str, str]:
24+
number = secrets.randbelow(100) + 1 # 1-100
25+
26+
question = str(number)
27+
correct_answer = 'yes' if is_prime(number) else 'no'
28+
29+
return question, correct_answer

brain_games/scripts/brain_prime.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env python3
2+
from brain_games.engine import run_game
3+
from brain_games.games.prime import generate_round
4+
5+
DESCRIPTION = 'Answer "yes" if given number is prime. Otherwise answer "no".'
6+
7+
8+
def main():
9+
run_game(DESCRIPTION, generate_round)
10+
11+
12+
if __name__ == '__main__':
13+
main()

demo3.cast

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
{"version": 2, "width": 87, "height": 50, "timestamp": 1763831823, "env": {"SHELL": "/bin/bash", "TERM": "xterm"}}
2+
[0.045507, "o", "\u001b[?2004h💻 \u001b[1;34mpython-project-49\u001b[m\u001b[32m (main)\u001b[00m $ "]
3+
[2.46062, "o", "b"]
4+
[2.911732, "o", "r"]
5+
[3.677667, "o", "a"]
6+
[4.233532, "o", "i"]
7+
[4.766761, "o", "n"]
8+
[5.479175, "o", "-"]
9+
[6.303013, "o", "p"]
10+
[6.864354, "o", "r"]
11+
[7.208514, "o", "i"]
12+
[7.822706, "o", "m"]
13+
[8.652373, "o", "e"]
14+
[9.544576, "o", "\r\n\u001b[?2004l\r"]
15+
[9.572449, "o", "Welcome to the Brain Games!\r\nMay I have your name? "]
16+
[11.276378, "o", "A"]
17+
[11.973246, "o", "l"]
18+
[12.871905, "o", "\r\n"]
19+
[12.872063, "o", "Hello, Al!\r\nAnswer \"yes\" if given number is prime. Otherwise answer \"no\".\r\nQuestion: 37\r\nYour answer: "]
20+
[17.725272, "o", "y"]
21+
[18.300709, "o", "e"]
22+
[19.099098, "o", "s"]
23+
[20.176085, "o", "\r\nCorrect!"]
24+
[20.176223, "o", "\r\nQuestion: 68\r\nYour answer: "]
25+
[23.268733, "o", "n"]
26+
[26.676923, "o", "0"]
27+
[27.492637, "o", "\b \b"]
28+
[27.906526, "o", "o"]
29+
[28.472067, "o", "\r\n"]
30+
[28.4722, "o", "Correct!\r\nQuestion: 18\r\nYour answer: "]
31+
[32.213589, "o", "n"]
32+
[32.89991, "o", "o"]
33+
[33.847452, "o", "\r\n"]
34+
[33.848374, "o", "Correct!\r\nCongratulations, Al!\r\n"]
35+
[33.867731, "o", "\u001b[?2004h💻 \u001b[1;34mpython-project-49\u001b[m\u001b[32m (main)\u001b[00m $ "]
36+
[36.62758, "o", "brain-prime"]
37+
[37.544427, "o", "\r\n\u001b[?2004l\r"]
38+
[37.573946, "o", "Welcome to the Brain Games!\r\nMay I have your name? "]
39+
[39.459377, "o", "A"]
40+
[40.084212, "o", "l"]
41+
[40.75952, "o", "\r\nHello, Al!"]
42+
[40.759671, "o", "\r\nAnswer \"yes\" if given number is prime. Otherwise answer \"no\".\r\nQuestion: 75\r\nYour answer: "]
43+
[42.971334, "o", "n"]
44+
[43.911273, "o", "\r\n"]
45+
[43.911969, "o", "'n' is wrong answer ;(. Correct answer was 'no'.\r\nLet's try again, Al!\r\n"]
46+
[43.932388, "o", "\u001b[?2004h💻 \u001b[1;34mpython-project-49\u001b[m\u001b[32m (main)\u001b[00m $ "]
47+
[47.149248, "o", "\u001b[?2004l\r\r\n"]
48+
[47.149494, "o", "exit\r\n"]

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,4 @@ brain-even = "brain_games.scripts.brain_even:main"
2626
brain-calc = "brain_games.scripts.brain_calc:main"
2727
brain-gcd = "brain_games.scripts.brain_gcd:main"
2828
brain-progression = "brain_games.scripts.brain_progression:main"
29+
brain-prime = "brain_games.scripts.brain_prime:main"

0 commit comments

Comments
 (0)