|   |   | 
| 
 | анаграммы | ☑ | ||
|---|---|---|---|---|
| 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С прекрасно можно сравнивать символы. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |