Камiнь-Ножицi-Папiр (C++, Java, C#, Pascal, Python) Зеник i Марiчка вирiшили зiграти n разiв у вiдому гру Камiнь-Ножицi-Папiр. Гра вiдбуваєтьсяв декiлька раундiв. У кожному раундi кожен iз учасникiв одночасно обирає один iз трьохпредметiв: камiнь, ножицi або папiр. Результат раунду ґрунтується на предметах, обранихсуперниками: камiнь перемагає ножицi, ножицi перемагають папiр, а папiр перемагає камiнь. Звернуть увагу, що в деякому раундi гравцi можуть обрати один i той же предмет. В такому випадку результатом раунду є нiчия. Марiчка знає, в скiлькох раундах вона обере камiнь, ножицi i папiр, таку ж iнформацiю вона має про Зеника. Марiчка хоче дiзнатися скiльки максимально раундiв вона може виграти.До ть їй дiзнатися це. Вхiднi данi RM, SM, PM кiлькiсть раундiв, у яких Марiчка поставить камiнь, ножицi i папiр, вiдповiдно.RZ, SZ, PZ кiлькiсть раундiв, у яких Зеник поставить камiнь, ножицi i папiр, вiдповiдно. Вихiднi данi Виведiть єдине число максимальна кiлькiсть раундiв, у яких може перемогти Марiчка. Обмеження 0≤RM, SM, PM≤103.0≤RZ, SZ, PZ≤103.RM+SM+PM=RZ+SZ+PZ=n1≤n≤103
Приклади
Вхiднi данi (stdin) 1 1 11 1 1
Вихiднi данi (stdout) 3
Примiтки
У прикладi кожен iз гравцiв обере кожен iз предметiв по одному разу. Марiчка може вигратиусi три раунди у випадку, якщо на Зениковi ножицi вона обере камiнь, на камiнь обере папiр, ана папiр обере ножицi.
Ответы на вопрос:
Объяснение:
Создадим тестовый скрипт:
1
#!/usr/bin/env python
2
3
4
def duplicate_encode(word):
5
6
iter = str(word)
7
print(iter)
8
9
duplicate_encode('test')
Запускаем, проверяем:
./duplicate_encode.py
test
Re-playCopy to ClipboardPauseFull View
ОК, теперь можно придумывать решение.
Решение не претендует на оригинальность и уж тем более на идеальность или красоту подхода, но раз кодить на Python приходиться редко — то хотя бы такая разминка для мозгов.
На каком-то собеседовании я встречал похожую задачу, идея решения достаточно простая:
создаём пустой список
запускаем цикл, в котором проверяем каждый элемент переданного в аргументе функции слова
каждый элемент проверяем с циклом: если элемента в списке нет — ставим «(«, если есть — ставим «)»
ОК, пробуем:
01
#!/usr/bin/env python
02
03
def duplicate_encode(word):
04
05
# will conatin word from function's argument
06
iter_word = str(word)
07
# will container already checked items to compare with
08
check_list = []
09
# will contain brackets
10
formatted_list = []
11
12
print('Checking word: {}'.format(iter_word))
13
14
for i in iter_word:
15
print('Checking item: {}'.format(i))
16
if i not in check_list:
17
print('{} not found in the list[], so using ")" symbol'.format(i))
18
check_list.append(i)
19
i = '('
20
formatted_list.append(i)
21
else:
22
print('{} found in the list[], so using "(" symbol'.format(i))
23
check_list.append(i)
24
i = ')'
25
formatted_list.append(i)
26
27
print('Result: {}'.format(''.join(map(str, formatted_list
28
29
duplicate_encode('test')
Рассмотрим код построчно:
iter_word = str(word) — приводим input к типу str, сохраняем в переменную iter_word
check_list = [] — создаём пустой список, в который будем сохранять элементы, которые уже проверены и которым будем сверяться дальше в цикле
formatted_list = [] — пустой сисок, который будет содержать символы «(» и «)»
for i in iter_word: — запускаем цикл и проверяем каждый элемент из переменной iter_word
if i not in check_list — в самом начале список check_list у нас пустой, дальше на каждой итерации ищем в нём очередной элемент i
check_list.append(i) — независимо от результата — добавляем уже проверенный элемент в список check_list
i = '(' — раз i не найден в списке check_list — то сохраняем его в formatted_list как «(«
else: i = ')' — если i найден в списке, то сохраняем его в formatted_list как «)»
print('Result: {}'.format(''.join(map(str, formatted_list — и в конце выводим получившийся список formatted_list в виде обычного слова
Проверяем:
./duplicate_encode.py
Checking word: test
Checking item: t
t not found in the list[], so using ")" symbol
Checking item: e
e not found in the list[], so using ")" symbol
Checking item: s
s not found in the list[], so using ")" symbol
Checking item: t
t found in the list[], so using "(" symbol
Result: )))(
Re-playCopy to ClipboardPauseFull View
ОК — работает.
Но вернёмся к задаче.
Во-первых: «Ignore capitalization when determining if a character is a duplicate» — ОК, добавим строковый метод lower():
1
...
2
for i in iter_word.lower():
3
...
4
duplicate_encode('Test')
Проверяем:
./duplicate_encode.py
Checking word: Test
Checking item: t
t not found in the list[], so using ")" symbol
Checking item: e
e not found in the list[], so using ")" symbol
Checking item: s
s not found in the list[], so using ")" symbol
Checking item: t
t found in the list[], so using "(" symbol
Result: )))(
Re-playCopy to ClipboardPauseFull View
Но тесты в Codewars снова вернут ошибку:
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
Amanda17326.02.2021 16:11
-
Alсу115.10.2020 21:55
-
BlackGolsi14.01.2020 06:10
-
cthutq159753927.08.2022 20:49
-
Fgbjhjghhy123456789023.01.2022 05:01
-
juliina90205.06.2023 16:35
-
Dovakin27006.11.2022 12:00
-
dilasagadatova22.07.2022 08:18
-
utochkins0407.02.2020 13:24
-
kuryachelenaozmgnz28.05.2020 18:14
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.