[Oracle] Вчера подкинули интересную задачку, вот

fester

Вот числовая пирамида
1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
1. Надо найти закономерность и написать еще пару рядов.
2. Потом построить числовую пирамиду с помощью Оракл.

nik93

на олимпиаду собрался? :)

fester

неа, уже прошли те времена. ща просто мозг мучаю :)
зы: задача решена, но хочется увидеть наикрасивейшее решение :)

0000

А ну работай, гаденыш, а не фигней страдай! :mad:
:lol:

kataich

13211311123113112211
Правильно?

fester

ага, правильно!
осталось решить часть с Ораклом :)
to :
Я вижу ты тоже зря время не теряешь :)

pitrik2

1. Надо найти закономерность и написать еще пару рядов.
это ж вроде стандартная пирамида
ну в том смысле что она в класических учебниках описана

pitrik2

2. Потом построить числовую пирамиду с помощью Оракл.
на pl/sql это делается также как на обычном языке программирования, т.е. элементарно
хочется это получить чиста на селектах?

sinet

Сомнительно, что такое можно наваять на селектах...
По предыдущему ряду построить следующий на селектах можно.

0000

На селектах еще и не такое пишут - вон разложение на множители видел на SQL.ru (используя штучки Oracle) :shocked:
P.S. Структуру не раскурил еще :(

pitrik2

Сомнительно, что такое можно наваять на селектах...
или ты пошутил или не знаком с оракл

apl13

В википедии статья про эти числа есть, только я не помню, кто исследовал. :crazy:
Вобще, структура простая, как три рубля.

sinet

Ну приведи тогда примерный ход решения. :)
Чтоб select выдавал N первых рядов, где N - параметр select`а.

pitrik2

Ну приведи тогда примерный ход решения. :)
гугла нет?
вбивая в гугл 31131211131221 получаем описание алгоритма
вбивая в гугле 31131211131221 oracle получаем несколько решений этой задачки

apl13

Вот, кстати, и статья. :crazy:
И как я забыл, что это Конвей? :crazy:

fester

окацца, на sql.ru задачку разложили по полочкам :)
вот вам и селект, который мне показался наикрасивейшим:

with t as (
select level n from dual connect by level <= 11
)
select n,q
from t
model
dimension by (n)
measures (cast('' as varchar2(4000 s,cast('' as varchar2(4000 q)
rules iterate (1000)
(
q[any] order by n=nvl(s[cv-1],1
s[any] order by n= s[cv]||
length(regexp_substr(nvl(s[cv-1],'1''(\d)\1*',1,iteration_number+1||
substr(regexp_substr(nvl(s[cv-1],'1''(\d)\1*',1,iteration_number+11,1)
)

0000

Тебе то он может и показался наикрасивейшим, но вот для меня это очередной повод задуматься о своих знаниях по Oracle :(

tanya17031986

я тоже задумался :)
и показалось, что селектик будет работать только для 10-ки и выше.

freezer

с другой стороны, а нахрена эти знания, если запрос жутко непереносимый получается?

Dasar

а что разве есть еще что-то кроме оракла? :)

freezer

а что, разве нет? Хотя бы МС и Постгре

aleks058

Вспомнилась поговорка про молоток и гвозди

0000

если запрос жутко непереносимый получается?
Нафиг не надо. Видел как пытаются делать все универсально - получается как обычно через одно место.
MS SQL в ближайшем времени видимо будет вполне серьезно конкурировать с Oracle.

freezer

Видел как пытаются делать все универсально - получается как обычно через одно место
да ладно тебе. Вот тут в соседнем треде HQL упоминался - скажешь "через одно место"?
У нас в фирме недавно data layer портировали с грёбанного Firebird на Oracle - намучались изрядно. А если где придётся портировать код типа вышеприведённого на какой-нибудь MSSQL - это легче будет сразу повеситься.

0000

> Вот тут в соседнем треде HQL упоминался - скажешь "через одно место"?
Честно, я не совсем понял, что там хотели (я таким программированием не занимаюсь)
> с ... Firebird на Oracle - намучались изрядно
Хе-хе, разумеется. А как ты хотел?
Мне очень нравится по этому поводу первая глава из Кайт - Оракл для профессионалов, где Кайт вопрос независимости приложения от БД поднимает.

freezer

Честно, я не совсем понял, что там хотели
не так важно, что хотели, важно что независимость от диалекта СУБД достигается в довольно высокой степени

pitrik2

MS SQL в ближайшем времени видимо будет вполне серьезно конкурировать с Oracle.
это почему?

0000

На форуме SQL.ru, те кто использует MS SQL утверждают, что он по фичастости догоняет Оракл. Правда тут несколько все неоднозначно: те кто прогит под MS SQL имеет свой подход, кто под Oracle свой (у каждого свои методы, т.к. архитектура баз сильно различается) - потому каждый на себя кусок тянет. Холиварчики можно на форуме почитать.
По процентному соотношению вакансий MS SQL уже равняется Ораклу в Мск.

pitrik2

По процентному соотношению вакансий MS SQL уже равняется Ораклу в Мск.
о
вот это уже реальные данные

0000

Гы-гы-гы, глянул ща раздел Работа-Вакансии - там Оракл впереди (за счет смежных продуктов). Получается, что нагнал :D Прошу прощения за дизинформацию.
Просто слишком часто спотыкался именно на MS SQL вакухи.
Оставить комментарий
Имя или ник:
Комментарий: