Мне задали такой вопрос:
Предположим, у вас есть список слов, скажем, ['яблоко', 'банан', 'яблоко', 'манго', 'банан']. Каждое слово могло повторяться произвольное количество раз. Думайте об этом списке как о конвейере на фруктовой фабрике космической эры. Теперь ваша задача — определить последний уникальный фрукт на поясе, т. е. тот, который не повторяется. Если все фрукты повторяются, то уникальных фруктов не существует, и ваша функция должна возвращать пустую строку ('').
Ваша функция должна принимать список строк ( конвейерная лента фруктов) в качестве входных данных. Теперь строкой может быть любое слово, а не только название фрукта, а список может содержать любое количество строк. Также может быть крайний случай, когда в списке вообще нет строк (пустая конвейерная лента, да?). Для вывода ваша функция должна возвращать последнюю уникальную строку в списке или пустую строку, если их нет.
Для решения этой задачи предполагается использовать множества. Наборы эффективны для отслеживания просмотренных и повторяющихся элементов благодаря возможности быстрого тестирования членства.
и мое решение:
Код: Выделить всё
def find_unique_string(words):
last_uniq = ''
seen = set()
for w in words:
if last_uniq == w:
last_uniq = ''
if w not in seen:
last_uniq = w
seen.add(w)
return last_uniq
Код: Выделить всё
print(find_unique_string(['apple', 'banana', 'apple', 'mango', 'banana'])) # It should print: 'mango'
print(find_unique_string(['hello', 'world', 'hello'])) # It should print: 'world'
print(find_unique_string(['hello', 'world', 'hello', 'world'])) # It should print: ''
print(find_unique_string([])) # It should print: ''
print(find_unique_string(['apple', 'banana', 'apple', 'kiwi', 'banana', 'kiwi'])) # it should print ''
p>
Теперь мой вопрос:
Кто прав? Я или CodeSignal AI?
Если я прав, как я могу доказать CodeSignal AI, что я прав, чтобы пройти тест и перейти к следующему?Если ИИ прав, можете ли вы предоставить мне пример тестового примера, который нарушает мой код и не генерирует ожидаемый результат?
Примечание:Я не хочу, чтобы вы писали решение, в котором было бы два наборы, один для просмотра и один для дубликата, так как это результат, которого ожидает ИИ (я думаю), но я хочу знать, правильный ли мой код и если да, то как это доказать, или у вас есть тест случай, чтобы доказать, что мой код неверен.
Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-a-list
Мобильная версия