powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как бы изобразить на PL/SQL такую функцию...
25 сообщений из 40, страница 1 из 2
Как бы изобразить на PL/SQL такую функцию...
    #32134446
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
..., которая, принимая в качестве аргумента целое положительное число, возвращает ближайшее к нему большее целое, являющееся степенью двойки?
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134483
Bagira
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По-моему так

Код: plaintext
1.
2.
3.
4.
5.
create or replace function a (nums number) return number is
nums2 number;
begin
nums2 := power( 2 ,ceil(sqrt(nums)));
return nums2;
end;
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134485
ламка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А прямым перебором не пробовал?
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134489
acidbaba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
FUNCTION    F1
  ( vI IN  number)
  RETURN  number IS
 i number;
BEGIN 
 i:= 1 ;
 loop 
  i:=i* 2 ;
  exit when i>vI;
 end loop;
 return i;
END
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134495
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Bagira: прокольчик
Код: plaintext
1.
2.
3.
4.
5.
6.
SQLWKS> select power( 2 ,ceil(sqrt( 4 ))) from dual;
POWER( 2 ,CE
 ----------
 
          4 
Выбрана  1  строка.
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134499
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прямым перебором больно долго считать будет.
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134507
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to acidbaba: Ну-ну. А если vi будут в основном большие числа и функция будет вызываться достаточно часто - представляю, что останется от Oracle....
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134514
Bagira
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Scott Tiger - а чем Вас моя функция не устраивает? :) если я правильно поняла Вашу задачу - у меня тоже была такая и все чудесно работает уже больше года
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134517
ламка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно нахадить логарифм от числа, а потом возводить 2 в степень "целая часть логарифма + 1"
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134519
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то не очень работает, если честно:
Код: plaintext
1.
2.
3.
4.
5.
SQL> select power( 2 ,ceil(sqrt( 1023 ))) from dual;

POWER( 2 ,CEIL(SQRT( 1023 )))
 -------------------------
 
                4294967296 
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134520
ламка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, нахОдить
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134522
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"2 Scott Tiger - а чем Вас моя функция не устраивает? :) если я правильно поняла Вашу задачу - у меня тоже была такая и все чудесно работает уже больше года"

Она у тебя не правильно работает, неужели непонятно.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SQLWKS> select power( 2 ,ceil(sqrt( 4 ))) from dual;
POWER( 2 ,CE
 ----------
 
          4 
Выбрана  1  строка.
SQLWKS> 
SQLWKS> 
SQLWKS> select power( 2 ,ceil(sqrt( 5 ))) from dual;
POWER( 2 ,CE
 ----------
 
          8 
Выбрана  1  строка.
SQLWKS> 


"ближайшее к 4 и 8 большее целое, являющееся степенью двойки" - это 9, а не 4 и 8.
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134527
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softbuilder@inbox.ru, 9 никаким образом не является степенью двойки, а 4 и 8 - являются.
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134535
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Scott Tiger:
Может народ тебя неправильно понимает?
Давай уточним, что ты хочешь:

Есть целые числа 1, 2, 3, 4, 5,.......n
Чисал в степени 2 соответсвенно будут: 1, 4, 9, 16, ......n^2
Допустим на входе число 10 значит ближайшее 16.
Если 8 значит 9. итд.
Так или нет?
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134540
acidbaba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно таким мрачным запросом (если :vI заведомо меньше 1267650600228229401496703205376)

Код: plaintext
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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
select min(power( 2 ,(a.X+b.X))) from
(
 select  0  X 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) a, 
 (
 select  0  X from dual
 union
 select  10  from dual
 union
 select  20  from dual
 union
 select  30  from dual
 union
 select  40  from dual
 union
 select  50  from dual
 union
 select  60  from dual
 union
 select  70  from dual
 union
 select  80  from dual
 union
 select  90  from dual) b
where power( 2 ,(a.X+b.X))>:vI
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134542
ламка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to softbuilder@inbox.ru:
ближайшее к 8 число, являющеечя степенью двойки имхо 8.
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134547
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит я неправильно понял. Ты имеешь ввиду?
2^0 - 1
2^1 - 2
2^3 - 8
2^4 - 16
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134549
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть целые числа 1, 2, 3, 4, 5,.......n
Чисал в степени 2 соответсвенно будут: 1, 4, 9, 16, ......n^2
Допустим на входе число 10 значит ближайшее 16.


Блин. Имеется в виду не n^2, а 2^n, т.е., 1, 2, 4, 8, 16, 32, ...
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134554
ламка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я полностью за твоё предыдущее высказывание, только там надо поменять 9 на 8.
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134555
Фотография Ося
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Scott Tiger

Интересная задачка, вам нужно?

y / (y c N),(x<2^y), (x-2^y)-> min я правильно понял?
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134559
ламка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, глюканул. Тигер прав.
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134565
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пытайтесь сделать из меня математика Я умничать не буду, я пальцем покажу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
y=f(x);
f( 0 )= 1 ;
f( 1 )= 1 ;
f( 2 )= 2 ;
f( 3 )= 4 ;
f( 4 )= 4 ;
f( 5 )= 8 ;
...
f( 1023 )= 1024 ;
...

Ну и т.д. 

 0  <= x <  2 ^ 32 



Да, нужно условие откорректировать - "...возвращает ближайшее к нему большее или равное ему целое..."
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134566
acidbaba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tiger, чем тебя не устраивает мой запрос?
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134574
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прям какие-то личные разборки пошли :)
Устраивает, хотя выглядит жутковато.
...
Рейтинг: 0 / 0
Как бы изобразить на PL/SQL такую функцию...
    #32134576
Фотография Ося
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f= POWER(2,ROUND(LOG(X,2))) ? разве не это предлагали несколько постингов назад?
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как бы изобразить на PL/SQL такую функцию...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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