Задача 1
Даны две строки, состоящие из строчных латинских букв. Требуется определить, являются ли эти строки анаграммами, т. е. отличаются ли они только порядком следования символов.
Формат ввода
Входной файл содержит две строки строчных латинских символов, каждая не длиннее 100 000 символов. Строки разделяются символом перевода строки.
Формат вывода
Выходной файл должен содержать единицу, если строки являются анаграммами, и ноль в противном случае.
Пример 1
Ввод:
- qiu
- iuq
Вывод: 1
Пример 2
Ввод:
- zprl
- zprc
Вывод: 0
import sys word = sys.stdin.readline() words = sys.stdin.readline() def anagrams(word, words): return 1 if sorted(word)==sorted(words) else 0 print(anagrams(word, words))
Задача 2
Что такое анаграмма? Ну, два слова являются анаграммами друг друга, если они оба содержат одинаковые буквы. Например:
- ‘abba’ & ‘baab’ == True
- ‘abba’ & ‘bbaa’ == True
- ‘abba’ & ‘abbba’ == False
- ‘abba’ & ‘abca’ == False
Напишите функцию, которая найдет все анаграммы слова из списка. Вам будет дано два ввода слово и массив со словами. Вы должны вернуть массив всех анаграмм или пустой массив, если таковых нет. Например:
- anagrams(‘abba’, [‘aabb’, ‘abcd’, ‘bbaa’, ‘dada’]) => [‘aabb’, ‘bbaa’]
- anagrams(‘racer’, [‘crazer’, ‘carer’, ‘racar’, ‘caers’, ‘racer’]) => [‘carer’, ‘racer’]
- anagrams(‘laser’, [‘lazing’, ‘lazy’, ‘lacer’]) => []
def anagrams(word, words): anogram_list = [] for arr_word in words: if sorted(word) == sorted(arr_word): anogram_list.append(arr_word) return anogram_list
более короткое решение:
def anagrams(word, words): return [item for item in words if sorted(item)==sorted(word)]