• 1
    إدخال وإخراج البيانات
    • المهام
  • 2
    الشروط
    • المهام
  • 3
    حلقة for
    • المهام
  • 4
    السلاسل النصية
    • المهام
  • 5
    حلقة while
    • المهام
  • 6
    القوائم
    • المهام
  • 7
    مصفوفات ثنائية الأبعاد
    • المهام
  • 8
    القواميس
    • المهام
  • 9
    المجموعات
    • المهام
  • 10
    الدوال والتكرار
    • المهام
  • к

درس 4. Lines

الصعوبة:

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

مسألة«ميمات»

💻 Python

أربعة أصدقاء & mdash; روما (متخصص تكنولوجيا المعلومات)، مكسيم (كيميائي)، دانيك (مصمم) وفلاد (شخص متعدد المهارات) & mdash; أنشأوا محادثة مشتركة لتبادل الميمات. حتى لا يشتت كل منهم الآخر عن العمل بنكات غير مناسبة، قرروا كتابة بوت يقوم تلقائيًا بتحديد موضوع الميم وإرساله فقط إلى الشخص المهتم. مهمتك & mdash; كتابة النواة لهذا البوت.

rn

قواعد التصنيف:
تحصل على الإدخال سطرًا & mdash; هذا هو نص الميم. يجب على البوت تحليله وتحديد الفئة بناءً على وجود أحرف معينة:

rn
    rn
  1. ميم تقني: & nbsp; إذا كان السطر يحتوي على جميع الأحرف 'b', 'u', 'g' (بأي ترتيب وكمية). المستلم & mdash; & nbsp; روما .
  2. rn
  3. ميم كيميائي: & nbsp; إذا كان السطر يحتوي على جميع الأحرف 'b', 'o', 'o', 'm' (أي يجب أن يظهر الحرف 'o' مرتين على الأقل). المستلم & mdash; & nbsp; مكسيم .
  4. rn
  5. ميم مصمم: & nbsp; إذا كان السطر يحتوي على جميع الأحرف 'e', 'd', 'i', 't', 's'. المستلم & mdash; & nbsp; دانيك .
  6. rn
  7. أخرى: & nbsp; إذا كان الميم لا ينطبق على أي من الفئات المذكورة أعلاه. المستلم & mdash; & nbsp; فلاد .
  8. rn
rn

القاعدة الأساسية (حل النزاعات):
قد ينطبق الميم على عدة فئات في نفس الوقت. في هذه الحالة، يجب إرساله إلى الشخص الذي "اكتملت" فئته أولاً. تعتبر الفئة "مكتملة" في اللحظة التي يتم فيها العثور على آخر حرف من الأحرف اللازمة لها في السطر. يجب على البوت اختيار الفئة ذات مؤشر الاكتمال الأصغر.

rn

تحتاج إلى كتابة برنامج يستقبل سطرًا واحدًا (ميم) ويعرض اسم المستلم.

تنسيق الإدخال

سطر واحد، وهو "ميم" (النوع: نص).

تنسيق الإخراج

اسم المستلم (النوع: نص).

مثال

إدخال

غمرها

إخراج

روما

تلميح

There will be no clue here, decide for yourself!

main.py
اختبار 1
اختبار 2
اختبار 3
اختبار 4
اختبار 5
اختبار 6
اختبار 7
اختبار 8
اختبار 9
اختبار 10
حل المطور
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)

🎉 تهانينا! 🎉

لقد حللت المهمة ببراعة! كان صعبًا لكنك وجدت الحل الصحيح. أنت خطوة أقرب إلى الاحتراف! استمر، كل مرحلة تجعلك أقوى.

AD

إعلان

red-snake blue-snake green-snake

جارٍ تشغيل الكود...

مساعد الذكاء الاصطناعي

مرحباً! أنا مساعدك في البرمجة. اسألني أي شيء عن Python — يمكنني شرح الدوال والطرق ومساعدتك في المهمة الحالية!