Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 19.09.2023
Сообщений: 33

Переключение между окнами. Нужна консультация насчет работоспособности программы

08.03.2024, 21:02. Показов 3294. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Условие задачи:
Когда пользователь работает в операционной системе Windows, у него часто запущено несколько приложений. Каждое из приложений работает в отдельном окне. Для переключения между окнами используется комбинация клавиш «Alt+Tab». Эта комбинация делает активным окно, в котором пользователь работал перед тем, как перейти в текущее активное окно.

Чтобы переключиться в другое окно, можно нажать клавишу «Alt» и затем, не отпуская ее, несколько раз нажать клавишу «Tab». Чтобы понять, какое окно станет активным после этого, воспользуемся следующей моделью. Пусть запущено n приложений. Приложения в операционной системе организованы в виде списка и упорядочены по убыванию времени последней активности. То есть приложение, окно которого является активным в настоящий момент – первое в списке, приложение, окно которого было активно перед этим – второе, и т. д.

Если нажать клавишу «Alt» и затем, не отпуская ее, нажать клавишу «Tab» k раз, то активным станет окно приложения, которое находится на (k mod n) + 1-м месте в списке. Здесь a mod b означает остаток от деления a на b. Иными словами, операционная система рассматривает список как циклический, переходя после последнего элемента списка к первому.

При запуске нового приложения оно добавляется в начало списка.

Задана последовательность действий пользователя, где каждое действие – либо запуск приложения, либо переключение между окнами. Выведите список имен приложений в том порядке, в котором с ними работал пользователь.

Входные данные
В первой строке вводится целое число n – количество действий пользователя ( 1 ≤ n ≤ 1000). Следующие n строк содержат описание действий пользователя.

Запуск приложения описывается строкой «Run <имя приложения»>. Здесь «<имя приложения»> – строка из не более чем 100 латинских букв, цифр и пробелов. Она отделена от слова «Run» ровно одним пробелом. Все имена приложений различны. Большие и маленькие буквы считаются различными.

Переключение между приложениями описывается строкой «Alt+Tab+...+Tab», здесь подстрока «+Tab» повторена в точности столько раз, сколько раз пользователь нажал клавишу «Tab», не отпуская клавишу «Alt». Это количество не превышает 100.

Первая команда во входных данных – всегда команда «Run».

Выходные данные
Выведите n строк – последовательность имен приложений, с которыми работал пользователь в порядке, в котором их окна становились активными.

Тесты
Вход:
6
Run Mozilla Firefox
Run Free Pascal
Alt+Tab
Run Miranda IM
Alt+Tab+Tab
Alt+Tab+Tab+Tab
Выход:
Mozilla Firefox
Free Pascal
Mozilla Firefox
Miranda IM
Free Pascal
Free Pascal
Написал следующий код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
from collections import deque
 
n = int(input())
programms = deque([])
for i in range(n):
    comma = input()
    if 'Run' in comma:
        programms.appendleft(comma[4:])
        print(comma[4:])
    elif 'Alt' in comma:
        programms[0], programms[comma.count('+Tab') % len(programms)] = programms[comma.count('+Tab') % len(programms)], programms[0]
        print(programms[0])
Проходит на 28% (тестов).
Есть ещё одно решение, "извращенное":
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from collections import deque
 
n = int(input())
programms = deque([])
for i in range(n):
    comma = input()
    if 'Run' in comma:
        programms.appendleft(comma[4:])
        print(comma[4:])
    elif 'Alt' in comma:
        openProgramm = list(programms).pop(comma.count('+Tab') % len(programms))
        print(openProgramm)
        programms.appendleft(openProgramm)
Проходит на 12% (тестов).
Спасите-помогите, я уже без понятия, в чем накосячить мог тут...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.03.2024, 21:02
Ответы с готовыми решениями:

Сделать так чтобы при выполнении программы происходило переключение между двумя окнами
Необходимо сделать так чтобы при выполнении программы происходило переключение между двумя окнами и обязательно чтобы эти окна находясь в...

нужна консультация насчет ошибок в программе

Переключение между окнами
Добрый вечер. Из основного окна открываю второстепенное и скрываю основное: private class PicActionListener implements MouseListener {...

28
1 / 1 / 0
Регистрация: 19.09.2023
Сообщений: 33
15.03.2024, 11:53  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от YuS_2 Посмотреть сообщение
то можно уточнить код:
аналогично, 32%
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
15.03.2024, 11:59
Цитата Сообщение от aKrass Посмотреть сообщение
32%
ну тогда только авторам тестов провести опрос с пристрастием, что за тесты они там наваяли...
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.03.2024, 13:22
Кстати, не столь давно, то ли со степика, то ли с какого-то другого популярного ресурса задачу решали. Мудохались всем честнЫм народом, ну вот НИКАК. В итоге допекли поддержку и они признали свой косяк.
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
15.03.2024, 13:41
Цитата Сообщение от iSmokeJC Посмотреть сообщение
В итоге допекли поддержку и они признали свой косяк.
Да, было дело... так что, вполне возможно, что и здесь какая-то засада в тестах... надо трясти разработчиков, на предмет проверки своих тестов...

Добавлено через 4 минуты
aKrass, ссылку на задачу покажите, что за ресурс? У кого-то может там есть регистрация...
0
1 / 1 / 0
Регистрация: 19.09.2023
Сообщений: 33
15.03.2024, 22:13  [ТС]
Цитата Сообщение от YuS_2 Посмотреть сообщение
ссылку на задачу покажите
https://silvertests.ru/OlympTask.aspx?Id=38849
Цитата Сообщение от YuS_2 Посмотреть сообщение
У кого-то может там есть регистрация...
Думаю, там регистрация нового аккаунта проблем не составит
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
16.03.2024, 00:38
Цитата Сообщение от aKrass Посмотреть сообщение
там регистрация нового аккаунта проблем не составит
Ну, что сказать... подробностей особых там нет. По результату выдаваемому системой, можно определить причину: "Неверный формат вывода или алгоритмическая ошибка в программе"
не проходят тесты 3,7,8,10-20,22,23,25 но что в них тестируется, ничего не сказано. Авторам через форму, вопрос по предмету содержания тестов, отправил... ответят или нет, посмотрим.
0
0 / 0 / 0
Регистрация: 25.04.2021
Сообщений: 11
18.03.2024, 20:52
Да, совсем не понятно, чего хотят авторы этого теста.
Жаль, что у меня нет возможности самому проверить то, что я сотворил.
Я не уверен, что что-нибудь получится, но, попробуйте вот этот вариант,
посмотрим, каким будет результат.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
def sito(new_win):
        for i in new_win:
                if i >= "a" and i <= "z":
                        continue
                if i >= "A" and i <= "Z":
                        continue
                if i >= "0" and i <= "9":
                        continue
                if i == " ":
                        continue
                return False
        if new_win[0] == " ":
                return False
        for i in arr:
                if i == new_win:
                        return False
        return True
 
arr = [] #список запущенных приложений
otvet = [] #список активных окон
 
n = int(input('n = '))
if n > 1000:
    n = 1000
for num in range(n):
    s = input('->')
    if s.startswith("Run "):
        if len(s[4:]) > 100:
                continue
        new_win = ' '.join(s[4:].split())
        if sito(new_win) == False:
            continue
        arr.insert(0, new_win)
        otvet.append(new_win)
    elif s.startswith("Alt+"):
        if n == 0:
            continue
        k = s.split('+')
        n_Tab = len(k)-1
        sdvig = n_Tab % len(arr)
        active_win = arr[sdvig]
        # перемещаю active_win в начало списка arr[]
        arr.pop(sdvig)
        arr.insert(0, active_win)
        # помещаю active_win в ответ
        otvet.append(active_win)
        
for i in otvet:
    print(i)
0
1 / 1 / 0
Регистрация: 19.09.2023
Сообщений: 33
18.03.2024, 20:59  [ТС]
Цитата Сообщение от sidomarev Посмотреть сообщение
sdvig = n_Tab % len(arr)
12% + ошибка выполнения.
Как я понимаю, возможно из-за этой строчки ошибка возникает (деление на 0, т.е. пустой массив)
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
12.05.2024, 20:25
Цитата Сообщение от YuS_2 Посмотреть сообщение
Авторам через форму, вопрос по предмету содержания тестов, отправил... ответят или нет, посмотрим.
Получен ответ 8 мая...
Извините за долгий ответ.
К сожалению в задаче [тут была ссылка на сабжевую задачу] была проблема, сейчас я ее исправил и запустил перепроверку.
Если будут еще проблемы, напишите, я постараюсь помочь.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.05.2024, 20:25

Переключение между окнами
Как программе узнать что происходит переключение между окнами в windows? Нужно считать в каждом окне проведенное время.

Переключение между окнами
Привет всем! У меня возникла небольшая проблемка с окнами. Заранее извиняюсь, не знаю, как правильно сформулировать вопрос. Как запретить...

Переключение между окнами
Привожу пример: Есть 3 открытых вещи - гугл хром и 2 документа в либр офисе. По альт таб переключается только между хромом и одним из...

Переключение между окнами
Как в дизайнере сделать через tab переключение между окнами?

Переключение между окнами
Всем привет! Вопрос такой. Вот, например взять Tab Widget, в нем заранее можно в каждом табе разместить свои Layout, в которые уже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru