-
-
Notifications
You must be signed in to change notification settings - Fork 25
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8262ac2
commit 1ef5844
Showing
4 changed files
with
148 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
# A. Кондиционер | ||
|
||
В офисе, где работает программист Петр, установили кондиционер нового типа. Этот кондиционер отличается особой простотой в управлении. У кондиционера есть всего лишь два управляемых параметра: желаемая температура и режим работы. | ||
|
||
Кондиционер может работать в следующих четырех режимах: | ||
|
||
«freeze» — охлаждение. В этом режиме кондиционер может только уменьшать температуру. Если температура в комнате и так не больше желаемой, то он выключается. | ||
|
||
«heat» — нагрев. В этом режиме кондиционер может только увеличивать температуру. Если температура в комнате и так не меньше желаемой, то он выключается. | ||
|
||
«auto» — автоматический режим. В этом режиме кондиционер может как увеличивать, так и уменьшать температуру в комнате до желаемой. | ||
|
||
«fan» — вентиляция. В этом режиме кондиционер осуществляет только вентиляцию воздуха и не изменяет температуру в комнате. | ||
|
||
Кондиционер достаточно мощный, поэтому при настройке на правильный режим работы он за час доводит температуру в комнате до желаемой. | ||
Требуется написать программу, которая по заданной температуре в комнате ***t<sub>room</sub>***, установленным на кондиционере желаемой температуре ***t<sub>cond</sub>*** и режиму работы определяет температуру, которая установится в комнате через час. | ||
|
||
|
||
## Формат ввода | ||
|
||
Первая строка входного файла содержит два целых числа troom, и tcond, разделенных ровно одним пробелом (–50 ≤ t<sub>room</sub> ≤ 50, –50 ≤ t<sub>cond</sub> ≤ 50). | ||
|
||
Вторая строка содержит одно слово, записанное строчными буквами латинского алфавита — режим работы кондиционера. | ||
|
||
## Формат вывода | ||
|
||
Выходной файл должен содержать одно целое число — температуру, которая установится в комнате через час. | ||
|
||
### Пример 1 | ||
|
||
<table><tr> | ||
<td> | ||
10 20<br> | ||
heat | ||
</td> | ||
<td> | ||
20<br> | ||
<br> | ||
</td> | ||
</tr></table> | ||
|
||
### Пример 2 | ||
|
||
<table><tr> | ||
<td> | ||
10 20<br> | ||
freeze | ||
</td> | ||
<td> | ||
10<br> | ||
<br> | ||
</td> | ||
</tr></table> | ||
|
||
<br> | ||
|
||
### Примечания | ||
|
||
В первом примере кондиционер находится в режиме нагрева. Через час он нагреет комнату до желаемой температуры в 20 градусов. | ||
Во втором примере кондиционер находится в режиме охлаждения. Поскольку температура в комнате ниже, чем желаемая, кондиционер самостоятельно выключается и температура в комнате не поменяется. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package main | ||
|
||
import ( | ||
"bufio" | ||
"fmt" | ||
"os" | ||
"strconv" | ||
"strings" | ||
) | ||
|
||
const ( | ||
isAuto = "auto" | ||
isFreeze = "freeze" | ||
isHeat = "heat" | ||
) | ||
|
||
func main() { | ||
scanner := bufio.NewScanner(os.Stdin) | ||
scanner.Scan() | ||
|
||
temperatures := strings.Fields(scanner.Text()) | ||
t1, _ := strconv.Atoi(temperatures[0]) | ||
t2, _ := strconv.Atoi(temperatures[1]) | ||
|
||
scanner.Scan() | ||
action := scanner.Text() | ||
|
||
fmt.Println(solution(t1, t2, action)) | ||
} | ||
|
||
func solution(t1, t2 int, action string) int { | ||
switch { | ||
case action == isAuto, | ||
action == isFreeze && t1 > t2, | ||
action == isHeat && t1 < t2: | ||
return t2 | ||
} | ||
|
||
return t1 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package main | ||
|
||
import ( | ||
"fmt" | ||
"testing" | ||
) | ||
|
||
type TestItemInput struct { | ||
t1, | ||
t2 int | ||
action string | ||
} | ||
|
||
type TestItemOutput int | ||
|
||
type TestItem struct { | ||
input TestItemInput | ||
output TestItemOutput | ||
} | ||
|
||
func TestTask(t *testing.T) { | ||
for i, v := range generateTasks() { | ||
t.Run(fmt.Sprintf("Test %d", i+1), func(t *testing.T) { | ||
val := solution(v.input.t1, v.input.t2, v.input.action) | ||
if val != int(v.output) { | ||
t.Errorf("Неверный ответ решения!\nОтвет: \n%d \nВерно: \n%d", val, v.output) | ||
} | ||
}) | ||
} | ||
} | ||
|
||
func generateTasks() []TestItem { | ||
return []TestItem{ | ||
{TestItemInput{10, 20, "heat"}, 20}, | ||
{TestItemInput{10, 20, "freeze"}, 10}, | ||
{TestItemInput{10, 20, "auto"}, 20}, | ||
{TestItemInput{-3, -11, "freeze"}, -11}, | ||
{TestItemInput{1, 2, "fan"}, 1}, | ||
{TestItemInput{0, 10, "heat"}, 10}, | ||
{TestItemInput{20, 15, "heat"}, 20}, | ||
} | ||
} |