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

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

08.03.2024, 21:02. Показов 3204. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru