Имя: Пароль:
1C
1С v8
анаграммы
, ,
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С прекрасно можно сравнивать символы.