powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Функция для проверки являются ли строки анаграммами
14 сообщений из 14, страница 1 из 1
Функция для проверки являются ли строки анаграммами
    #39938351
kvadr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Даны две строки. Необходимо реализовать алгоритм, определяющий, являются ли эти строки анаграммами

Не могли бы вы помочь мне написать функцию, которая бы проверяла две строки?
...
Рейтинг: 0 / 0
Функция для проверки являются ли строки анаграммами
    #39938362
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvadr
Даны две строки. Необходимо реализовать алгоритм, определяющий, являются ли эти строки анаграммами

Не могли бы вы помочь мне написать функцию, которая бы проверяла две строки?



Студентам, желающим помощи
HOWTO :: Как правильно задавать вопросы
Как мне оформить свое сообщение?

Если хотите, чтобы Вам помогли, покажите что сделали:

1) Полная постановка задачи (без сокращений)
2) Подготовьте тестовые данные, лучше в виде with
например (не ваш случай):

Код: plsql
1.
2.
3.
4.
5.
6.
with tbl(col1,col2,col3) as (
select 1,'name1',to_date('11.02.1921','DD.MM.YYYY') from dual union all
select 2,'name2',to_date('11.02.1922','DD.MM.YYYY') from dual union all
select 2,'name2',to_date('11.02.1922','DD.MM.YYYY') from dual
)
select col2 from tbl...



2) Покажите что сделали, и что получили (не в пересказе)


3) Старайтесь не использовать screenshot, научитесь копировать и оформлять текст
...
Рейтинг: 0 / 0
Функция для проверки являются ли строки анаграммами
    #39938408
kvadr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim Lejnin,

Задача была без сокращений "Сделать алгоритм, проверяющий две строки - являются ли они анаграммами на pl/sql

Думаю обе строки раскладывать на символы и сортировать по коду символов и алфавиту, но с созданием функции испытываю трудности.. конкретно как это сделать функцией

А протестировать можно будет таким образом

Код: plsql
1.
Select name_function("lang3201syn","nlgau2310sn") from dual



Код: plsql
1.
2.
3.
4.
5.
6.
7.
select listagg(letter) 
    within group (order by nlssort(letter, 'nls_sort=german') 
from
(
select regexp_substr('gfedcbaGFEDCBA', '.', level) as letter from dual
connect by regexp_substr('gfedcbaGFEDCBA', '.', level) is not null
);
...
Рейтинг: 0 / 0
Функция для проверки являются ли строки анаграммами
    #39938410
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvadr,

Зачем тут PL/SQL?

SY.
...
Рейтинг: 0 / 0
Функция для проверки являются ли строки анаграммами
    #39938416
kvadr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Необходимо реализовать с помощь него
...
Рейтинг: 0 / 0
Функция для проверки являются ли строки анаграммами
    #39938418
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvadr

Необходимо реализовать с помощь него


Тогда зачем:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
select listagg(letter) 
    within group (order by nlssort(letter, 'nls_sort=german') 
from
(
select regexp_substr('gfedcbaGFEDCBA', '.', level) as letter from dual
connect by regexp_substr('gfedcbaGFEDCBA', '.', level) is not null
);



Если PL/SQL то банальная рекурсивная функция.

SY.
...
Рейтинг: 0 / 0
Функция для проверки являются ли строки анаграммами
    #39938420
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY

Если PL/SQL то банальная рекурсивная функция.


Да и рекурсия не нужна - обыкновенный WHILE цикл.

SY.
...
Рейтинг: 0 / 0
Функция для проверки являются ли строки анаграммами
    #39938421
kvadr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Попросили скинуть что было сделано, но если есть предложения как это можно сделать.. я бы с удовольствием выслушал, а если ещё и с примером было бы просто шикарно
...
Рейтинг: 0 / 0
Функция для проверки являются ли строки анаграммами
    #39938427
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvadr

Попросили скинуть что было сделано, но если есть предложения как это можно сделать.. я бы с удовольствием выслушал, а если ещё и с примером было бы просто шикарно


Цикл пока строка1 не NULL. В цикле проверяем длины строка1 и строка2. Не совпадают - не анаграмма и посему выход из функции. Совпадают - удаляем (replace) первого символа строка1 из строка1 и строка2.

SY.
...
Рейтинг: 0 / 0
Функция для проверки являются ли строки анаграммами
    #39938432
kvadr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Анограмма подразумевает совпадение символов, а не точное совпадение строк или я не так понял последнюю часть?
...
Рейтинг: 0 / 0
Функция для проверки являются ли строки анаграммами
    #39938433
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и изначальная проверка строка1 = строка2. Если равны то не анаграмма. И прoверка строка1 и строка2 на NULL.

SY.
...
Рейтинг: 0 / 0
Функция для проверки являются ли строки анаграммами
    #39938438
kvadr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Для проверки как раз я и использовал код выше, но проблема не столько проверить на сходство, сколько написать именно функцию
...
Рейтинг: 0 / 0
Функция для проверки являются ли строки анаграммами
    #39938447
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvadr
с примером было бы просто шикарно
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> with
  2  t(a, b) as
  3  (select 'hello', 'alloha' from dual
  4  union all select 'hello', 'elloh' from dual
  5  union all select 'hello', 'hell' from dual
  6  union all select 'hello', 'helo' from dual
  7  union all select 'hello', 'elloha' from dual)
  8  select * from t where
  9  xmlquery('for $i in tokenize(.,"#") order by $i return $i' passing regexp_replace(a,'(.)','\1#') returning content).getstringval() =
 10  xmlquery('for $i in tokenize(.,"#") order by $i return $i' passing regexp_replace(b,'(.)','\1#') returning content).getstringval();

A     B
----- ------
hello elloh

В PL/SQL можешь сам обернуть.
...
Рейтинг: 0 / 0
Функция для проверки являются ли строки анаграммами
    #39938458
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кобанчег,

Проще:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with
t(a, b) as
(select 'hello', 'alloha' from dual
union all select 'hello', 'elloh' from dual
union all select 'hello', 'hell' from dual
union all select 'hello', 'helo' from dual
union all select 'hello', 'elloha' from dual)
select * from t where
xmlquery('for $i in string-to-codepoints(.) order by $i return $i' passing lower(a) returning content).getstringval() =
xmlquery('for $i in string-to-codepoints(.) order by $i return $i' passing lower(b) returning content).getstringval()
/



SY.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Функция для проверки являются ли строки анаграммами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]