Загрузка...

I will pay 50r for optimizing my code

Thread in Python created by WORDIS Apr 16, 2020. 521 view

  1. WORDIS
    WORDIS Topic starter Apr 16, 2020 Я не верю в бога - я пытаюсь им стать 73 Apr 7, 2020
    При вводе 100000 строк код работает чуть больше 4 секунд, а максимум 4 сек. Если решили писать в ТГ.
    Анагра́мма (от греч. ανα- — «пере» и γράμμα — «буква») — литературный приём, состоящий в перестановке букв или звуков определённого слова (или словосочетания), что в результате даёт другое слово или словосочетание (Википедия).

    Мы будем работать с набором слов. Ваша задача — выписать все слова, которые являются анаграммами друг для друга, например «замок» и «мазок». Проверка слов должна быть регистронезависимой. Слова, для которых анаграммой является только оно само, выписывать не нужно, даже если это слово встречается в тексте в разном регистре.

    Формат ввода
    В первой строке идёт целое число n (1 ≤ n ≤ 100 000), количество исходных слов.

    Далее следует n слов, по одному слову в строке, слова могут идти в разном регистре!

    Формат вывода
    В одной строке должны идти слова, которые являются анаграммами друг для друга, в нижнем регистре, через пробел. Порядок слов — лексикографический (как в словаре). Порядок строк так же лексикографический.

    Пример

    Ввод

    11
    окорок
    петлей
    Плетей
    рококо
    теплей
    Тишь
    ТОМНО
    тонко
    тонок
    тоном
    шить

    Вывод

    окорок рококо
    петлей плетей теплей
    тишь шить
    томно тоном
    тонко тонок



    Code
    a, c = [input().lower() for _ in range(int(input()))], []
    for i in a:
    b = [j for j in a if sorted(i) == sorted(j)]
    if len(b) > 1:
    c.append(b)
    for p in range(len([j for j in a if sorted(i) == sorted(j) and i != j])):
    del a[p]
    print(*sorted([' '.join(sorted(i)) for i in c]), sep='\n')
    [IMG]
    Thread restrictions:
    The topic author allowed to post messages in the topic only to the following groups (and higher ranked): Staff Members and Curators
     
  2. sesu
    sesu Apr 17, 2020 Ты не умеешь писать код 114 Nov 17, 2019
    У тебя сложность O(n^2) , тебе не нужно проходится по каждому элементу
    The post was merged to previous Apr 17, 2020
    Можно выполнять за линейное время
     
    1. View previous comments (3)
    2. sesu
      WORDIS, Ну поэтому он не эффективный по памяти, цикл в цикле уже сложность n^2
    3. WORDIS Topic starter
      sesu, я разве что-то писал про память? я написал, что он немного не эффективный по времени
    4. sesu
      WORDIS, по памяти , по времени
    5. View the next comments (1)
Top
Loading...