• 1
    Entrada y salida de datos
    • Tareas
  • 2
    Condiciones
    • Tareas
  • 3
    Bucle for
    • Tareas
  • 4
    Cadenas de texto
    • Tareas
  • 5
    Bucle while
    • Tareas
  • 6
    Listas
    • Tareas
  • 7
    Matrices 2D
    • Tareas
  • 8
    Diccionarios
    • Tareas
  • 9
    Conjuntos
    • Tareas
  • 10
    Funciones y recursión
    • Tareas
  • к

Lección 4. Lines

Dificultad:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Tarea«Memes»

💻 Python

Cuatro amigos & mdash; Roma (ITSHNIK), Maxim (químico), Danik (diseñador) y Vlad (persona versátil) & mdash; crearon un chat común para intercambiar memes. Para no distraerse mutuamente del trabajo con bromas inapropiadas, decidieron escribir un bot que determine automáticamente el tema del meme y lo envíe solo a la persona interesada. Tu tarea & mdash; escribir un núcleo para este bot.

rn

Reglas de clasificación:
Recibes como entrada una línea & mdash; Este es el texto del meme. El bot debe analizarlo y determinar la categoría según la presencia de ciertas letras:

rn
    rn
  1. meme de TI: & nbsp; si la línea tiene todas las letras 'b', 'u', 'g' (en cualquier orden y cantidad). Destinatario & mdash; & nbsp; Roma .
  2. rn
  3. meme químico: & nbsp; si la línea tiene todas las letras 'b', 'o', 'o', 'm' (es decir, la letra 'o' debe aparecer al menos dos veces). Destinatario & mdash; & nbsp; Maxim .
  4. rn
  5. meme de diseñador: & nbsp; si la línea tiene todas las letras 'e', 'd', 'i', 't', 's'. Destinatario & mdash; & nbsp; Danik .
  6. rn
  7. otro: & nbsp; si el meme no encaja en ninguna de las categorías anteriores. Destinatario & mdash; & nbsp; Vlad .
  8. rn
rn

Regla clave (resolución de conflictos):
El meme puede encajar en varias categorías al mismo tiempo. En este caso, debe enviarse a aquellos cuya categoría "terminó" antes. La categoría se considera "completada" en el momento en que se encuentra la última de las letras necesarias para ella en la línea & nbsp; . El bot debe elegir la categoría con el índice de finalización más pequeño.

rn

Debes escribir un programa que acepte una línea (meme) y muestre el nombre del destinatario.

Formato de entrada

Una línea, que es un 'meme' (tipo: string).

Formato de salida

Nombre del destinatario (tipo: cadena).

Ejemplo

Entrada

submergedits

Salida

Roma

Pista

There will be no clue here, decide for yourself!

main.py
Prueba 1
Prueba 2
Prueba 3
Prueba 4
Prueba 5
Prueba 6
Prueba 7
Prueba 8
Prueba 9
Prueba 10
Solución del desarrollador
from collections import Counter

def find_completion_index(meme, required_letters):
    """
    Находит индекс, на котором категория считается "завершенной".
    Возвращает индекс или очень большое число, если категория не подходит.
    """
    # Создаем счетчик необходимых букв (например, для 'boom' -> {'b': 1, 'o': 2, 'm': 1})
    required_counts = Counter(required_letters)
    current_counts = Counter()
    
    # Проверяем, выполнены ли все условия
    def are_requirements_met():
        for char, count in required_counts.items():
            if current_counts[char] < count:
                return False
        return True

    # Идем по строке и считаем буквы
    for i, char in enumerate(meme):
        if char in required_counts:
            current_counts[char] += 1
            # Как только все буквы найдены, возвращаем текущий индекс
            if are_requirements_met():
                return i
    
    # Если цикл закончился, а буквы не найдены, возвращаем "бесконечность"
    return float('inf')

# Получаем текст мема
meme_text = input()

# Создаем список кандидатов с их условиями
candidates = [
    ('Roma', 'bug'),
    ('Maxim', 'boom'),
    ('Danik', 'edits')
]

# Находим "индекс завершения" для каждого кандидата
results = []
for name, letters in candidates:
    index = find_completion_index(meme_text, letters)
    results.append((index, name))

# Находим победителя. Функция min() для кортежей (индекс, имя)
# автоматически выберет тот, у которого первый элемент (индекс) наименьший.
winner_index, winner_name = min(results)

# Если минимальный индекс остался "бесконечным", значит, никто не подошел
if winner_index == float('inf'):
    print("Vlad")
else:
    print(winner_name)

🎉 ¡Felicidades! 🎉

¡Has resuelto la tarea brillantemente! Era un reto difícil, pero encontraste la solución correcta. ¡Estás un paso más cerca de dominar la programación! Sigue así, cada etapa superada te hace más fuerte.

AD

Publicidad

red-snake blue-snake green-snake

Ejecutando tu código...

Asistente de IA

¡Hola! Soy tu asistente de programación. Hazme cualquier pregunta sobre Python — puedo explicarte funciones, métodos y ayudarte con la tarea actual.