Yandex
February 5, 2023

Яндекс. Тренировки по алгоритмам и ChatGPT

На фоне новостей о том, что люди с помощью ChatGPT решают всевозможные тесты, решил проверить Яндекс. Тренировки по алгоритмам июнь 2021, занятие 1. Задача про адские кондиционеры.

Изображение сгенерированно Midjourney Bot
В офисе, где работает программист Петр, установили кондиционер нового типа. Этот кондиционер отличается особой простотой в управлении. У кондиционера есть всего лишь два управляемых параметра: желаемая температура и режим работы.
Кондиционер может работать в следующих четырех режимах:
«freeze» — охлаждение. В этом режиме кондиционер может только уменьшать температуру. Если температура в комнате и так не больше желаемой, то он выключается.
«heat» — нагрев. В этом режиме кондиционер может только увеличивать температуру. Если температура в комнате и так не меньше желаемой, то он выключается.
«auto» — автоматический режим. В этом режиме кондиционер может как увеличивать, так и уменьшать температуру в комнате до желаемой.
«fan» — вентиляция. В этом режиме кондиционер осуществляет только вентиляцию воздуха и не изменяет температуру в комнате.
Кондиционер достаточно мощный, поэтому при настройке на правильный режим работы он за час доводит температуру в комнате до желаемой.
Требуется написать программу, которая по заданной температуре в комнате troom, установленным на кондиционере желаемой температуре tcond и режиму работы определяет температуру, которая установится в комнате через час.
Формат ввода
Первая строка входного файла содержит два целых числа troom, и tcond, разделенных ровно одним пробелом (–50 ≤ troom ≤ 50, –50 ≤ tcond ≤ 50).
Вторая строка содержит одно слово, записанное строчными буквами латинского алфавита — режим работы кондиционера.
Формат вывода
Выходной файл должен содержать одно целое число — температуру, которая установится в комнате через час.

Тупо скопировал тест задания в DeepL и закинул в ChatGPT, попросив написать на Питоне. Решение ChatGPT:

def main():
    troom, tcond = map(int, input().split())
    mode = input().strip()

    if mode == "freeze":
        if troom > tcond:
            troom -= 1
    elif mode == "heat":
        if troom < tcond:
            troom += 1
    elif mode == "auto":
        if troom < tcond:
            troom += 1
        elif troom > tcond:
            troom -= 1
    print(troom)

if __name__ == '__main__':
    main()

В сущности, ChatGPT все сделал правильно, единственное, что он не понял про мощность кондиционера, поэтому у него температура увеличивается/уменьшается на градус. Поправим немного код:

def main():    
   troom, tcond = map(int, input().split())    
   mode = input().strip()    
   if mode == "freeze":        
      if troom > tcond:            
         troom = tcond    
   elif mode == "heat":        
      if troom < tcond:            
         troom = tcond    
   elif mode == "auto":        
      troom = tcond    
   print(troom)

if __name__ == '__main__':    
   main()

Результат:

Будет время, попробую остальные задания, но уже по первому очень неплохо. По крайней мере структуру и обвязку можно за минуты написать.

Если очень хочется попробовать или уже серьезно работать с ChatGPT и DALL-E, но не получается прорвать через заградительные меры (напомню, что OpenAI не дает доступа россиянам), обращайтесь, помогу.