|
анаграммы | ☑ | ||
---|---|---|---|---|
0
Пес1с
09.02.14
✎
18:34
|
Скорее всего уже было подобное, но если не сложно подскажите.Не могу добить задачку с анаграммами. Сделал только сравнение 2 элементов массива, а вот как сравнить каждый элемент с каждым другим не выходит. Особо не глумите, спасибо)
Есть произвольная строка, например (1234 4321 1342 456 654 83), результат должен выйти 1234 4321 1342 456 654 83 Строка="1234 4321 1342 456 654 83"; Позиция=Найти(Строка," "); ЧислоЧисел = Позиция + 1; Массив = Новый Массив; Для Сч = 1 По ЧислоЧисел Цикл Массив.Добавить(Сред(Строка,1,Позиция-1)); Строка = Прав(Строка,СтрДлина(Строка)-Позиция); КонецЦикла; Для Счетчик = 0 по СтрДлина(Массив[Массив.Количество() - 1]) Цикл СтрСимвол = Сред(Массив[Счетчик],Счетчик+1,1); Если СтрЧислоВхождений(Массив[Счетчик], СтрСимвол) = СтрЧислоВхождений(Массив[Счетчик+1], СтрСимвол) Тогда Сообщить(Массив[Счетчик] + " " + Массив[Счетчик+1]); КонецЕсли; КонецЦикла; |
|||
1
GROOVY
09.02.14
✎
18:50
|
Это все о чем?
|
|||
2
Пес1с
09.02.14
✎
18:55
|
Задача: Дана произвольная строка, в которой через пробел следуют слова. Найти все группы анаграмм (слов составленных из одних и тех же букв), и вывести каждую группу с новой строки)
|
|||
3
Wobland
09.02.14
✎
19:21
|
нарисуй функцию, проверяющую анаграммность двух строк. будет проще
|
|||
4
Пес1с
09.02.14
✎
20:38
|
т.е. вывести каждую строку в массив и сравнить 2 одинаковых массива?
|
|||
5
temmy70
09.02.14
✎
20:51
|
(4) я так понял в (3) предлагают сравнивать попарно элементы массива. Элементы массива - это слова из строки.
|
|||
6
Funeral_Worm
09.02.14
✎
20:54
|
(0) Я бы решал так:
1. Отсортировал бы массив 2. Затем отсортировал бы каждый элемент Все что получилось одинаковым - анаграммы |
|||
7
Funeral_Worm
09.02.14
✎
20:55
|
+(6) Где-то слышал, что такую задачку в Рарусе дают на собеседовании
|
|||
8
Torquader
09.02.14
✎
21:27
|
Во-первых, если мы хотим получать анаграммы, то нужно уметь разбить строку на слова.
Потом, в каждом слове провести сортировку по порядку букв - получится производящая анаграмма. Потом, сравнить производящие анаграммы для слов. Если решать через таблицу значений, то в первой колонке слово, а во второй - производящая анаграмма. Далее - сортируем по второй колонке и при переборе выводим в строку те, у которых совпадает вторая колонка. |
|||
9
Пес1с
09.02.14
✎
21:31
|
(8)Строку разбил и добавил слова в массив
Позиция=Найти(Строка," "); ЧислоЧисел = Позиция + 1; Массив = Новый Массив; Для Сч = 1 По ЧислоЧисел Цикл Массив.Добавить(Сред(Строка,1,Позиция-1)); Строка = Прав(Строка,СтрДлина(Строка)-Позиция); КонецЦикла; |
|||
10
Torquader
09.02.14
✎
21:44
|
Я бы ещё проверил, а нет ли двух пробелов подряд.
|
|||
11
Пес1с
09.02.14
✎
23:25
|
Спасибо, если не сложно показать как сделать сортировку по порядку букв?
|
|||
12
sda553
10.02.14
✎
00:39
|
отсортировать все слова в порядке алфавита и смотреть вхождения каждого
|
|||
13
Torquader
10.02.14
✎
00:41
|
(11) Если "А"<"Б" тогда
не забываем, что в 1С прекрасно можно сравнивать символы. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |