Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / donald + gerald = robert / 12 сообщений из 12, страница 1 из 1
02.08.2019, 09:57
    #39844450
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
donald + gerald = robert
Может есть у кого решение по этой задачке на sql?
...
Рейтинг: 0 / 0
02.08.2019, 10:21
    #39844466
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
donald + gerald = robert
petrovichvanya,
есть. перебор.
но задача предназначена для тренировки мозгов и желательно уложиться в 15 мин.
вот и тренеруйте их.
...
Рейтинг: 0 / 0
02.08.2019, 10:53
    #39844485
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
donald + gerald = robert
petrovichvanyaМожет есть у кого решение по этой задачке на sql?
не ленитесь изложить таки что вам надо
если словами не получается, то хотя бы ссылку на сабж. явили
...
Рейтинг: 0 / 0
02.08.2019, 11:01
    #39844494
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
donald + gerald = robert
orawish,

один из примеров
...
Рейтинг: 0 / 0
02.08.2019, 11:12
    #39844503
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
donald + gerald = robert
123йй, да, эта
...
Рейтинг: 0 / 0
02.08.2019, 11:17
    #39844507
Да ну
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
donald + gerald = robert
petrovichvanya,

Тупо в лоб:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
with q(n) as (
  select 0 from dual union select 1 from dual union select 2 from dual union 
  select 3 from dual union select 4 from dual union select 6 from dual union 
  select 7 from dual union select 8 from dual union select 9 from dual
),
q2 as (
  select 
    d0.n||d1.n||d2.n||d3.n||d4.n||d5.n||d6.n||d7.n||d8.n permutation
  from q d0
  join q d1 on d1.n not in (d0.n)
  join q d2 on d2.n not in (d0.n,d1.n)
  join q d3 on d3.n not in (d0.n,d1.n,d2.n)
  join q d4 on d4.n not in (d0.n,d1.n,d2.n,d3.n)
  join q d5 on d5.n not in (d0.n,d1.n,d2.n,d3.n,d4.n)
  join q d6 on d6.n not in (d0.n,d1.n,d2.n,d3.n,d4.n,d5.n)
  join q d7 on d7.n not in (d0.n,d1.n,d2.n,d3.n,d4.n,d5.n,d6.n)
  join q d8 on d8.n not in (d0.n,d1.n,d2.n,d3.n,d4.n,d5.n,d6.n,d7.n)
),
q3 as (
  select 
    translate('DONALD','DONALGERBT','5'||permutation) donald,
    translate('GERALD','DONALGERBT','5'||permutation) gerald,
    translate('ROBERT','DONALGERBT','5'||permutation) robert
  from q2
)
select * 
from q3 
where donald+gerald=robert
...
Рейтинг: 0 / 0
02.08.2019, 11:50
    #39844533
Да ну
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
donald + gerald = robert
Интересно другое - даже без подсказки D=5 задача имеет единственное решение.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
with q(n) as (
  select 0 from dual union select 1 from dual union select 2 from dual union 
  select 3 from dual union select 4 from dual union select 5 from dual union 
  select 6 from dual union select 7 from dual union select 8 from dual union select 9 from dual
),
q2 as (
  select 
    d0.n||d1.n||d2.n||d3.n||d4.n||d5.n||d6.n||d7.n||d8.n||d9.n permutation
  from q d0
  join q d1 on d1.n not in (d0.n)
  join q d2 on d2.n not in (d0.n,d1.n)
  join q d3 on d3.n not in (d0.n,d1.n,d2.n)
  join q d4 on d4.n not in (d0.n,d1.n,d2.n,d3.n)
  join q d5 on d5.n not in (d0.n,d1.n,d2.n,d3.n,d4.n)
  join q d6 on d6.n not in (d0.n,d1.n,d2.n,d3.n,d4.n,d5.n)
  join q d7 on d7.n not in (d0.n,d1.n,d2.n,d3.n,d4.n,d5.n,d6.n)
  join q d8 on d8.n not in (d0.n,d1.n,d2.n,d3.n,d4.n,d5.n,d6.n,d7.n)
  join q d9 on d9.n not in (d0.n,d1.n,d2.n,d3.n,d4.n,d5.n,d6.n,d7.n,d8.n)
),
q3 as (
  select 
    translate('DONALD','DONALGERBT',permutation) donald,
    translate('GERALD','DONALGERBT',permutation) gerald,
    translate('ROBERT','DONALGERBT',permutation) robert
  from q2
)
select * 
from q3 
where donald+gerald=robert

...
Рейтинг: 0 / 0
02.08.2019, 12:02
    #39844543
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
donald + gerald = robert
Да ну, как работает q(n) ?
...
Рейтинг: 0 / 0
02.08.2019, 12:08
    #39844550
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
donald + gerald = robert
Да ну, почему вы translate используете DONALGERBT?
...
Рейтинг: 0 / 0
02.08.2019, 12:22
    #39844558
Да ну
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
donald + gerald = robert
petrovichvanyaДа ну, как работает q(n) ?
subquery factoring clause

И запрос этот для Oracle, а не для MySQL.
...
Рейтинг: 0 / 0
02.08.2019, 12:30
    #39844566
Да ну
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
donald + gerald = robert
petrovichvanyaДа ну, почему вы translate используете DONALGERBT?
Уникальный набор букв
...
Рейтинг: 0 / 0
02.08.2019, 17:35
    #39844762
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
donald + gerald = robert
Да ну, в permutation какое значение будет?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / donald + gerald = robert / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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