Size: a a a

2020 December 06

к

кана in Haskell Start
абсолютно не понимаю про что вы говорите, что за адвент

ага, понял
источник

A

Aragaer in Haskell Start
да, адвент. Ну там есть строка из из слов маленьких английских букв, разделенных переносами строки. Надо посчитать
- сколько различных букв есть в этой строке
- сколько различных букв присутствуют в каждом из слов
источник

A

Aragaer in Haskell Start
в си совершенно естественно завести массив размера 256 и символ использовать в качестве индекса этого массива и так вот посчитать. После чего для первой части - количество ненулевых элементов массива, а для второй количество элементов, равных "число переносов"+1. А переносы при этом тоже посчитаны уже.
источник

к

кана in Haskell Start
Aragaer
в си совершенно естественно завести массив размера 256 и символ использовать в качестве индекса этого массива и так вот посчитать. После чего для первой части - количество ненулевых элементов массива, а для второй количество элементов, равных "число переносов"+1. А переносы при этом тоже посчитаны уже.
ну тут нормальным будет сделать точно так же

но еще проще класть все в сет, и потом отнять размер сета из какого-то числа
источник

A

Aragaer in Haskell Start
я сделал тупо length $ filter (elem group) ['a'..'z']
источник

A

Aragaer in Haskell Start
ну или точнее unwords group, потому что group у меня список "слов". Для второй части (\c -> all (c elem) group)
источник

к

кана in Haskell Start
Aragaer
в си совершенно естественно завести массив размера 256 и символ использовать в качестве индекса этого массива и так вот посчитать. После чего для первой части - количество ненулевых элементов массива, а для второй количество элементов, равных "число переносов"+1. А переносы при этом тоже посчитаны уже.
так ну смотри, тут тоже не один проход, один по n, другой по 256

если 256 игнорить, то и в хаскельном твоем решении тоже один проход
источник

A

Aragaer in Haskell Start
там два последовательных прохода - один по n, затем один по 256
источник

A

Aragaer in Haskell Start
а в моем хаскельном произведение n * 26
источник

к

кана in Haskell Start
n * 26 это все еще n)

было бы там не 26, а m
источник

A

Aragaer in Haskell Start
ну да. Если бы размер алфавита был m, то сишный вариант это n+m времени и m памяти (ну и плюс n памяти исходных данных)
источник

СА

Станислав Алексеев... in Haskell Start
Aragaer
ну да. Если бы размер алфавита был m, то сишный вариант это n+m времени и m памяти (ну и плюс n памяти исходных данных)
Мб O(m*n)?
источник

к

кана in Haskell Start
нет, сишный был бы n+m, а хаскельный n*m
источник

к

кана in Haskell Start
с сетами был бы n*log m
источник

A

Aragaer in Haskell Start
для второй части с сетами недостаточно, надо счетчики
источник

к

кана in Haskell Start
ага, ок, ну был бы n*log m + m с мапами
источник

A

Aragaer in Haskell Start
ага, а именно магия "символ это просто индекс" позволяет от этого log m избавиться
источник

A

Aragaer in Haskell Start
тоже можно через массивы и fromEnum
источник

к

кана in Haskell Start
в иммутабельных случаях почти всегда просто добавляется *log n где-нибудь
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Битовые сеты можно и в хаскеле
источник