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

Грязные слова

28.08.2022, 19:09. Показов 2536. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У Егора есть хобби – он любит делать слова в произвольных текстах грязными. Чтобы сделать из некоторого слова грязное, надо оставить на своих местах первую и последнюю буквы, а затем перемешать все остальные буквы, слово при этом должно измениться. Если же сделать слово грязным не получается (как ни перемешивай – слово не меняется), то его оставляют нетронутым.

Ваша задача – помочь Егору сделать как можно больше слов текста грязными. Помогите ему и преобразуйте строку нужным образом!

Формат входных данных
На вход подается текст, состоящий из маленьких и больших латинских букв, знаков «!?:;-.,» и пробелов. Словом называется последовательность подряд идущих маленьких и больших латинских букв, которую нельзя расширить влево или вправо.

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

Вывод должен кончаться переносом строки.

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

Примеры
Входные данные
I want--to!!!!break??Free
Выходные данные
I wnat--to!!!!berak??Fere
Входные данные
Cat is not bread
Выходные данные
Cat is not berad


Вот мой код:
Python
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
alph = ['A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z']
a = input()
words = []
unwords = []
n = 0
d = 0
count = 0
for i in range(len(a)):
    if a[n] in alph:
        count = count + 1
        if n + 1 == len(a):
            words.append(a[d:len(a)])
        else:
            if (a[n + 1] not in alph and a[n - 1] in alph and n + 1 != len(a)):
                words.append(a[d:d + count])
                d = d + count
                count = 0
            if (a[n + 1] not in alph and a[n - 1] not in alph):
                words.append(a[d:d + 1])
                d = d + 1
                count = 0
    elif a[n] not in alph:     
        count = count + 1
        if n + 1 == len(a):
            a = a + ' '
            unwords.append(a[d:len(a)])
        else:
            if (a[n + 1] in alph and a[n - 1] not in alph and n + 1 != len(a)):
                unwords.append(a[d:d + count])
                d = d + count
                count = 0
            if (a[n + 1] in alph and a[n - 1] in alph) or (n == len(a) and a[n - 1] in alph):
                unwords.append(a[d:d + 1])
                d = d + 1
                count = 0
    n += 1
 
 
for i in range(len(words)):
    if len(words[i]) > 3:
        text = str(words[i])
        ww = list(text)
        B1 = list(ww[0])
        B2 = list(ww[-1])
        kk = list(text[1:-1])
        kkk = kk
        temp = [] 
        for x in kk: 
            if x not in temp: 
                temp.append(x) 
        kk = temp
        
        if len(kk) >= 2:
            index1 = kkk.index(kk[0])
            index2 = kkk.index(kk[1])
            kkk[index1], kkk[index2] = kkk[index2], kkk[index1]
            ww = B1 + kkk + B2
            words[i] = ''.join(ww)
 
answer = ''
if a[0] in alph:
    i = 0
    if unwords == []:
        answer += words[i]
    else:
        if a[-1] in alph:
            for i in range(len(words) - 1):
                answer += words[i] + unwords[i]
            if a[-1] in alph:
                answer += words[i + 1]
        else:
            for i in range(len(words)):
                answer += words[i] + unwords[i]
            if a[-1] in alph:
                answer += words[i + 1]      
else:
    i = 0
    if words == []:
        answer += unwords[i]
    else:
        if a[-1] not in alph:
            for i in range(len(unwords) - 1):
                answer += unwords[i] + words[i]
            if a[-1] not in alph:
                answer += unwords[i + 1]
        else:
            for i in range(len(unwords)):
                answer += unwords[i] + words[i]
            if a[-1] not in alph:
                answer += unwords[i + 1]            
print(answer)
Добавлено через 14 минут
Мой код не проходит 3 -й тест.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.08.2022, 19:09
Ответы с готовыми решениями:

грязные методы сео
Читая форум, последнее время все чаще стал задумываться... О том что на форуме о продвижении в интернет (есть клиент сайт и запрос, надо...

C++ libpq select грязные транзакции
добрый вечер делаю приложение в асинхронном режиме и после insert выполняется select, но новой строки не видит (хотя пару раз...

Монады, чистые/грязные функции
я только начал разбираться в этих вещах и не совсем понимаю как мне реализовать те функции которые так легко реализуются в императивных...

1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,699
Записей в блоге: 14
28.08.2022, 20:10
Лучший ответ Сообщение было отмечено shiningvombat как решение

Решение

Какой огромный код... Алгоритм из постановки реализуется достаточно просто:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from random import shuffle
from copy   import copy
 
def check_word(middle):
    for a in middle[1:]:
        if a != middle[0]:
            return True
    return False        
 
def make_dirty(word):
    l=len(word)
    middle=list(word[1:l-1])
    if check_word(middle):
        sv=copy(middle)
        while True:
            shuffle(middle)
            if sv != middle:
                break
        return word[0]+"".join(middle)+word[l-1]
    else:
        return word
    
    
print(make_dirty("Bottom"))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.08.2022, 20:10
Помогаю со студенческими работами здесь

как заставить мужчину убирать грязные носки?
Встречный вопрос: как заставить мужчину убирать грязные носки? :D

В исходной строке а$ определить все слова, отличные от последнего слова. Вывести эти слова в столбик
Помогите решить: В исходной строке а$ определить все слова, отличные от последнего слова. Вывести эти слова в столбик. Отблагодарю.

Напечатать слова, которые отличны от последнего слова текста, предварительно удалив из слова последнюю букву
Дана последовательность содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами не менее...

Напечатать все слова, отличные от последнего слова, предварительно перенеся первую букву в конец слова
Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между соседними словами - не менее...

Напечатать все слова отличные от последнего слова, предварительно перенести последнюю букву в начало слова
Дано текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв, между соседними словами - не менее одного пробела....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru