Skip to content

Commit 3f1a5c0

Browse files
committed
first project/eighth step/ added Progression Game, added bin file
1 parent 0e13c39 commit 3f1a5c0

File tree

6 files changed

+178
-2
lines changed

6 files changed

+178
-2
lines changed

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ brain-calc:
1313
brain-gcd:
1414
bin/brain-gcd
1515

16+
brain-progression:
17+
bin/brain-progression
18+
1619
validate:
1720
composer validate
1821

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@
1212
[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=Eksi-tech_php-project-45&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=Eksi-tech_php-project-45)
1313
Even - https://asciinema.org/a/PZIB0AMPHDWAigwTO2UAGq9PI
1414
Calc - https://asciinema.org/a/5gDhJ6Taqf9GAgZvAtUY4W16l
15-
Gcd - https://asciinema.org/a/bBiNGAePf6ZXq4p0odlB5zFD6
15+
Gcd - https://asciinema.org/a/bBiNGAePf6ZXq4p0odlB5zFD6
16+
Progression - https://asciinema.org/a/HawCHRR9MDuvTWbaOEE4d76Zh

bin-progression.cast

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
{"version": 2, "width": 120, "height": 30, "timestamp": 1762710219, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}}
2+
[0.018165, "o", "\u001b[?2004h\u001b]0;wasex@DESKTOP-G9HIGVK: ~/php-project-45\u0007\u001b[01;32mwasex@DESKTOP-G9HIGVK\u001b[00m:\u001b[01;34m~/php-project-45\u001b[00m$ "]
3+
[3.107066, "o", "m"]
4+
[3.213024, "o", "a"]
5+
[3.335169, "o", "k"]
6+
[3.473736, "o", "e"]
7+
[4.076611, "o", " "]
8+
[4.450214, "o", "b"]
9+
[4.580126, "o", "r"]
10+
[4.693668, "o", "a"]
11+
[4.856081, "o", "i"]
12+
[5.075287, "o", "n"]
13+
[5.658099, "o", "-"]
14+
[6.329368, "o", "p"]
15+
[6.458456, "o", "r"]
16+
[6.587621, "o", "o"]
17+
[6.950861, "o", "g"]
18+
[7.023527, "o", "r"]
19+
[7.10422, "o", "e"]
20+
[7.329768, "o", "s"]
21+
[7.498748, "o", "s"]
22+
[7.60345, "o", "i"]
23+
[7.756579, "o", "o"]
24+
[7.973903, "o", "n"]
25+
[8.327801, "o", "\r\n\u001b[?2004l\r"]
26+
[8.329719, "o", "bin/brain-progression\r\n"]
27+
[8.352806, "o", "\r\n"]
28+
[8.354832, "o", "Welcome to the Brain Games!\r\n"]
29+
[8.355008, "o", "May I have your name?: "]
30+
[9.003107, "o", "V"]
31+
[9.620574, "o", "i"]
32+
[9.796902, "o", "k"]
33+
[9.893348, "o", "t"]
34+
[10.037494, "o", "o"]
35+
[10.14187, "o", "r"]
36+
[10.35804, "o", "\r\n"]
37+
[10.358405, "o", "Hello, Viktor!\r\n"]
38+
[10.35855, "o", "What number is missing in the progression?\r\n"]
39+
[10.358667, "o", "Question: 20 24 28 .. 36 40\r\n"]
40+
[10.358904, "o", "Your answer: "]
41+
[20.947088, "o", "3"]
42+
[21.00278, "o", "2"]
43+
[21.534544, "o", "\r\n"]
44+
[21.534822, "o", "Correct!\r\n"]
45+
[21.535009, "o", "Question: .. 15 20 25 30 35 40 45 50 55\r\nYour answer: "]
46+
[28.750083, "o", "1"]
47+
[28.955991, "o", "0"]
48+
[29.280911, "o", "\r\n"]
49+
[29.281185, "o", "Correct!\r\nQuestion: 17 19 21 23 25 .. 29 31 33\r\nYour answer: "]
50+
[34.773009, "o", "2"]
51+
[34.903775, "o", "7"]
52+
[35.238921, "o", "\r\n"]
53+
[35.239196, "o", "Correct!\r\nCongratulations, Viktor!\r\n"]
54+
[35.244058, "o", "\u001b[?2004h\u001b]0;wasex@DESKTOP-G9HIGVK: ~/php-project-45\u0007\u001b[01;32mwasex@DESKTOP-G9HIGVK\u001b[00m:\u001b[01;34m~/php-project-45\u001b[00m$ "]
55+
[36.719806, "o", "make brain-progression"]
56+
[37.117653, "o", "\r\n\u001b[?2004l\r"]
57+
[37.119532, "o", "bin/brain-progression\r\n"]
58+
[37.142071, "o", "\r\n"]
59+
[37.143816, "o", "Welcome to the Brain Games!\r\n"]
60+
[37.14402, "o", "May I have your name?: "]
61+
[38.613601, "o", "V"]
62+
[38.896114, "o", "i"]
63+
[39.057621, "o", "k"]
64+
[39.146209, "o", "t"]
65+
[39.299228, "o", "o"]
66+
[39.436098, "o", "r"]
67+
[39.685705, "o", "\r\n"]
68+
[39.686088, "o", "Hello, Viktor!\r\n"]
69+
[39.686327, "o", "What number is missing in the progression?\r\n"]
70+
[39.686419, "o", "Question: 2 3 .. 5 6 7\r\n"]
71+
[39.686659, "o", "Your answer: "]
72+
[44.368185, "o", "4"]
73+
[44.695533, "o", "\r\n"]
74+
[44.695916, "o", "Correct!\r\n"]
75+
[44.696164, "o", "Question: .. 3 5 7 9 11 13 15\r\nYour answer: "]
76+
[48.967448, "o", "4"]
77+
[49.333479, "o", "\r\n"]
78+
[49.333725, "o", "'4' is wrong answer ;(. Correct answer was '1'\r\n"]
79+
[49.333879, "o", "Let's try again, Viktor!\r\n"]
80+
[49.339032, "o", "\u001b[?2004h\u001b]0;wasex@DESKTOP-G9HIGVK: ~/php-project-45\u0007\u001b[01;32mwasex@DESKTOP-G9HIGVK\u001b[00m:\u001b[01;34m~/php-project-45\u001b[00m$ "]
81+
[54.917608, "o", "make brain-progression"]
82+
[55.131611, "o", "\r\n\u001b[?2004l\r"]
83+
[55.133598, "o", "bin/brain-progression\r\n"]
84+
[55.15519, "o", "\r\n"]
85+
[55.157086, "o", "Welcome to the Brain Games!\r\n"]
86+
[55.157181, "o", "May I have your name?: "]
87+
[56.496198, "o", "V"]
88+
[56.789499, "o", "i"]
89+
[56.979893, "o", "k"]
90+
[57.075143, "o", "t"]
91+
[57.249625, "o", "o"]
92+
[57.439836, "o", "r"]
93+
[57.669851, "o", "\r\n"]
94+
[57.670195, "o", "Hello, Viktor!\r\n"]
95+
[57.670428, "o", "What number is missing in the progression?\r\n"]
96+
[57.670545, "o", "Question: 17 20 23 26 29 32 35 .. 41 44\r\n"]
97+
[57.670698, "o", "Your answer: "]
98+
[66.472675, "o", "3"]
99+
[66.628611, "o", "8"]
100+
[66.850782, "o", "\r\n"]
101+
[66.851068, "o", "Correct!\r\n"]
102+
[66.851244, "o", "Question: 10 13 16 .. 22 25\r\nYour answer: "]
103+
[72.132916, "o", "1"]
104+
[72.382514, "o", "9"]
105+
[72.62399, "o", "\r\n"]
106+
[72.624188, "o", "Correct!\r\n"]
107+
[72.624359, "o", "Question: 5 6 7 8 9 .. 11\r\nYour answer: "]
108+
[77.634316, "o", "1"]
109+
[77.754097, "o", "0"]
110+
[77.929846, "o", "\r\n"]
111+
[77.930128, "o", "Correct!\r\n"]
112+
[77.930324, "o", "Congratulations, Viktor!\r\n"]
113+
[77.935459, "o", "\u001b[?2004h\u001b]0;wasex@DESKTOP-G9HIGVK: ~/php-project-45\u0007\u001b[01;32mwasex@DESKTOP-G9HIGVK\u001b[00m:\u001b[01;34m~/php-project-45\u001b[00m$ "]
114+
[80.505591, "o", "\u001b[?2004l\r\r\nexit\r\n"]

bin/brain-progression

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env php
2+
3+
<?php
4+
5+
require_once __DIR__ . '/../vendor/autoload.php';
6+
require_once __DIR__ . '/../src/Engine.php';
7+
require_once __DIR__ . '/../src/Games/Progression.php';
8+
9+
runGame('Progression');

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
"bin/brain-games",
1717
"bin/brain-even",
1818
"bin/brain-calc",
19-
"bin/brain-gcd"
19+
"bin/brain-gcd",
20+
"bin/brain-progression"
2021
],
2122

2223
"require-dev": {

src/Games/Progression.php

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
function getRules(): string
4+
{
5+
return 'What number is missing in the progression?';
6+
}
7+
8+
function generateProgression(): string
9+
{
10+
$firstRandInt = random_int(1, 20);
11+
$numberOfSteps = random_int(1, 5);
12+
$progressionLen = random_int(5, 10);
13+
$randomMissNum = random_int(0, $progressionLen - 1);
14+
15+
$progression = [];
16+
17+
for ($i = 0; $i < $progressionLen; $i++) {
18+
$progression[] = $firstRandInt + $i * $numberOfSteps;
19+
}
20+
21+
$progression[$randomMissNum] = "..";
22+
return implode(' ', $progression);
23+
}
24+
25+
function generateQuestion(): string
26+
{
27+
return generateProgression();
28+
}
29+
30+
function getCorrectAnswer($question): string
31+
{
32+
$elements = explode(" ", $question);
33+
$hiddenIndex = array_search("..", $elements);
34+
$intArray = array_map('intval', $elements);
35+
$len = count($elements);
36+
37+
if ($hiddenIndex != 0 && $hiddenIndex != $len - 1) {
38+
$step = ($intArray[$hiddenIndex + 1] - $intArray[$hiddenIndex - 1]) / 2;
39+
$missedValue = $intArray[$hiddenIndex - 1] + $step;
40+
} elseif ($hiddenIndex == 0) {
41+
$step = $elements[2] - $intArray[1];
42+
$missedValue = $intArray[1] - $step;
43+
} else {
44+
$step = $intArray[2] - $intArray[1];
45+
$missedValue = $intArray[$len - 2] + $step;
46+
}
47+
return (string) $missedValue;
48+
}

0 commit comments

Comments
 (0)