SQL.RU
 client/server technologies
 
 Главная | Документация | Статьи | Книги | Форум | Опросы | Рассылка | Работа | Поиск | FAQ |

Добро пожаловать в форум, Guest  >>  Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик  Ответить
Топик располагается на нескольких страницах: 1 2   вперед  Ctrl      [все]
 конкурс на рисование снежинок   [new]
SimonInBlues
Member

Откуда: Балаково
Сообщений: 258
Наверное всем хорошо известна головоломка на рисование календаря с помощью sql (pl/sql).
В связи с наступающим Новым Годом, предлагаю поучаствовать в конкурсе на рисование снежинок

Примерно вот так:
with w as (
  select 40 /*размер фигуры*/ width from dual
),
s as (
  select level r, w.width w from dual t, w connect by level <= w.width
)
select
  pkg_geometry.getShapeRow(s.r, s.w)
from s
order by s.r

create or replace package pkg_geometry is
  function getShapeRow(pRow integer, pWidth integer) return varchar2;
end pkg_geometry;

create or replace package body pkg_geometry is
  
  function atRectangle(pRow integer, pCol integer, pWidth integer) return boolean is
  begin
    if ( pRow in (1, pWidth) or (pCol in (1, pWidth))) then
      return true;
    end if;
    
    return false;
  end atRectangle;
  
  function atCross(pRow integer, pCol integer, pWidth integer) return boolean is
  begin
    if ( (pRow = pCol) or (pRow = (pWidth - pCol)) ) then
      return true;
    end if;
    
    return false;
  end atCross;

  function atPlus(pRow integer, pCol integer, pWidth integer) return boolean is
  begin
    if ( (pRow = ceil(pWidth / 2)) or (pCol = ceil(pWidth / 2)) ) then
      return true;
    end if;
    
    return false;
  end atPlus;

  function atCircle(pRow integer, pCol integer, pWidth integer) return boolean is
    pRad number;
    pR number:= pRow;
    pC number:= pCol;
    pW number:= pWidth;
  begin
    pRad:= pW / 2;
    if (power(pR-pRad,2) + power(pC-pRad,2) - power(pRad, 2) between -5 and 5) then
      return true;
    end if;
    
    return false;
  end atCircle;

  function getShapeRow(pRow integer, pWidth integer) return varchar2 is
    res varchar2(4000);
    symbol char;
  begin
    for i in 1..pWidth loop      
      if (
          /*atRectangle(pRow, i, pWidth) or 
          atRectangle(pRow-(pWidth/4), i-(pWidth/4), ceil(pWidth/2)) or */
          atCross(pRow, i, pWidth) or 
          atPlus(pRow, i, pWidth) or
          atCircle(pRow-(pWidth/4), i-(pWidth/4), ceil(pWidth/2)) or 
          atCircle(pRow, i, pWidth)
      ) then
        symbol:= 'W';        
      else
        symbol:= ' ';
      end if;
      res:= res || symbol;
    end loop;

    return res;
  end getShapeRow;

end pkg_geometry;

А вот результат:
W                    W       W       W                    W 
W W W W W
W W W W W
W W W W W
W W W
W W W W W
W W W
W W W
W W W
W W W
W W W
W W W W W
W W W
W W W
W W WWWWW W W
W W W W W
W W W W W
W W W W W
W WW W WW W
WW W WW
W W W W W
W W W W W
W W W
W W W
W W W W W
W W W
W W W
W W W W W W
W WWW W W
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
W WWW W W
W W W W W W
W W W
W W W
W W W W W
W W W
W W W
W W W W W
W W W W W
WW W WW
W WW W WW W
W W W W W
W W W W W
W W W W W
W W WWWWW W W
W W W
W W W
W W W W W
W W W
W W W
W W W
W W W
W W W
W W W W W
W W W
W W W W W
W W W W W
W W W W W
W W W W W
WWWWW W
25 дек 07, 22:01    [5096278] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 8379
SimonInBlues
Наверное всем хорошо известна головоломка на рисование календаря с помощью sql (pl/sql).
В связи с наступающим Новым Годом, предлагаю поучаствовать в конкурсе на рисование снежинок
А девок не можешь нарисовать? )))
26 дек 07, 09:26    [5096877] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
йфяцыч
Member

Откуда: UA-RU(62-99)-?
Сообщений: 637
У меня слабый сервер

SQL> SQL> set head off
SQL> select 'Ж' from dual;

Ж

SQL> 

26 дек 07, 09:41    [5096953] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 11743
Тады уж
tst> select '*' from dual;

'
-
*
26 дек 07, 09:45    [5096969] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
йфяцыч
Member

Откуда: UA-RU(62-99)-?
Сообщений: 637
Вячеслав Любомудров
Тады уж
tst> select '*' from dual;

'
-
*


Ну он не настолько слаб и я могу себе позволить снежинку побольше... ;))
Твой вариант, прям таки архибюджетный.
26 дек 07, 09:56    [5097049] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
ы!
Guest
Тупо standart edition (one):
select a from
(      select '  |  ' a,1 b from dual
 union select '\ | /' a,2 b from dual
 union select '--|--' a,3 b from dual
 union select '/ | \' a,4 b from dual
 union select '  |  ' a,5 b from dual
) order by b

26 дек 07, 10:11    [5097144] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
_Grey_
Member

Откуда: Черкассы
Сообщений: 19
Снегопа-ад-снегопа-ад,
если женщина про-о-осит....

select a from
(      select '*    *       * *  *    *     * *  *    *  * *    *  *   *     ' a,1 b from dual
 union select '       *      *  *          *      *     *   *        *  *    ' a,2 b from dual
 union select '  *   *     *          *     *          *  ___    *   *       ' a,3 b from dual
 union select '                   *     *      *    *  * /*_*\   *      *   *' a,4 b from dual
 union select '*       *     *   *    *   * *   * *      \___/  *    * *   * ' a,5 b from dual
 union select '     *                *     *      *   *  /   \    *       *  ' a,6 b from dual
 union select '*  __     *     *   *    *   *_ *     *  |     |__  *  *   *  ' a,7 b from dual
 union select ' */  \__   _   *  /\_/\*  ___/ \_   _ *  \     /  \_/\    *_  ' a,8 b from dual
 union select '_/      \_/ \____/     \_/       \_/ \___/\___/       \___/ \_' a,9 b from dual  
) order by b
26 дек 07, 10:38    [5097267] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 11743
Снежинкой глаз залепило?
Оригинально...
26 дек 07, 10:40    [5097282] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
_Grey_
Member

Откуда: Черкассы
Сообщений: 19
Уболтал

select a from
(      select '*    *       * *  *    *     * *  *    *  * *    *  *   *     ' a,1 b from dual
 union select '       *      *  *          *      *     *   *        *  *    ' a,2 b from dual
 union select '  *   *     *          *     *          *  ___    *   *       ' a,3 b from dual
 union select '                   *     *      *    *  * /0_0\   *      *   *' a,4 b from dual
 union select '*       *     *   *    *   * *   * *      \___/  *    * *   * ' a,5 b from dual
 union select '     *                *     *      *   *  /   \    *       *  ' a,6 b from dual
 union select '*  __     *     *   *    *   *_ *     *  |     |__  *  *   *  ' a,7 b from dual
 union select ' */  \__   _   *  /\_/\*  ___/ \_   _ *  \     /  \_/\    *_  ' a,8 b from dual
 union select '_/      \_/ \____/     \_/       \_/ \___/\___/       \___/ \_' a,9 b from dual  
) order by b
26 дек 07, 10:51    [5097353] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
йфяцыч
Member

Откуда: UA-RU(62-99)-?
Сообщений: 637
гиде морковка? Почему шаров 2, когда по мануалу 3? Что значит 0_0, почему не o_O или O_o, ну или, на крайняк
o|o
-
От чего снеговик такой испуганный? где руки? гиде ведро? Почему слова снеговика расположены вне рисунка? Что делает снеговик на пляже среди песчаных замков?
низачот...
26 дек 07, 11:46    [5097764] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
pravednik
Member

Откуда: Киев
Сообщений: 11578
йфяцыч
гиде морковка? Почему шаров 2, когда по мануалу 3? Что значит 0_0, почему не o_O или O_o, ну или, на крайняк
o|o
-
От чего снеговик такой испуганный? где руки? гиде ведро? Почему слова снеговика расположены вне рисунка? Что делает снеговик на пляже среди песчаных замков?
низачот...


фигасе у вас тех. требования к всякого рода зверушкам
26 дек 07, 11:49    [5097789] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
_Grey_
Member

Откуда: Черкассы
Сообщений: 19
йфяцыч
гиде морковка? Почему шаров 2, когда по мануалу 3? Что значит 0_0, почему не o_O или O_o, ну или, на крайняк
o|o
-
От чего снеговик такой испуганный? где руки? гиде ведро? Почему слова снеговика расположены вне рисунка? Что делает снеговик на пляже среди песчаных замков?
низачот...


Сори, глюки Оракла, наверное, пропатчу может ведро и другие части снеговика появятся.

P.S. Ora 10.2.0.1 + Win2003
26 дек 07, 12:11    [5097986] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
PaulEr
Member

Откуда:
Сообщений: 2736
_Grey_
йфяцыч
гиде морковка? Почему шаров 2, когда по мануалу 3? Что значит 0_0, почему не o_O или O_o, ну или, на крайняк
o|o
-
От чего снеговик такой испуганный? где руки? гиде ведро? Почему слова снеговика расположены вне рисунка? Что делает снеговик на пляже среди песчаных замков?
низачот...


Сори, глюки Оракла, наверное, пропатчу может ведро и другие части снеговика появятся.

P.S. Ora 10.2.0.1 + Win2003


26 дек 07, 12:21    [5098057] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
_Alex_SMIRNOV_
Member

Откуда: Киев
Сообщений: 1319
_Grey_
йфяцыч
гиде морковка? Почему шаров 2, когда по мануалу 3? Что значит 0_0, почему не o_O или O_o, ну или, на крайняк
o|o
-
От чего снеговик такой испуганный? где руки? гиде ведро? Почему слова снеговика расположены вне рисунка? Что делает снеговик на пляже среди песчаных замков?
низачот...


Сори, глюки Оракла, наверное, пропатчу может ведро и другие части снеговика появятся.

P.S. Ora 10.2.0.1 + Win2003


Напиши на MetaLink с подробным описанием бага... пусть пофиксят
26 дек 07, 12:24    [5098079] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
Deko_MoD
Member

Откуда:
Сообщений: 9
_Alex_SMIRNOV_
_Grey_
йфяцыч
гиде морковка? Почему шаров 2, когда по мануалу 3? Что значит 0_0, почему не o_O или O_o, ну или, на крайняк
o|o
-
От чего снеговик такой испуганный? где руки? гиде ведро? Почему слова снеговика расположены вне рисунка? Что делает снеговик на пляже среди песчаных замков?
низачот...


Сори, глюки Оракла, наверное, пропатчу может ведро и другие части снеговика появятся.

P.S. Ora 10.2.0.1 + Win2003


Напиши на MetaLink с подробным описанием бага... пусть пофиксят


27 дек 07, 09:54    [5101719] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
автар
Guest
снеговик какой-то бесполый получилсо.
почему никто не додумался влепить

 | 
о|о
27 дек 07, 11:05    [5102218] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
_Grey_
Member

Откуда: Черкассы
Сообщений: 19
Так-с, проблема начинает проясняться. Дело в том, что за время пока выполняется запрос - снега успевает насыпать снеговику по ...
 | 
о|о
- и как следствие третьего шара не видно.

Помогите оптимизировать запрос - чтобы снега сыпалось не так много.
Прилагаю план выполнения:
Plan hash value: 688197787
 
-------------------------------------------------------------------------
| Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------
|   0 | SELECT STATEMENT |      |     9 |   603 |    28  (36)| 00:00:01 |
|   1 |  SORT ORDER BY   |      |     9 |   603 |    28  (36)| 00:00:01 |
|   2 |   VIEW           |      |     9 |   603 |    27  (34)| 00:00:01 |
|   3 |    SORT UNIQUE   |      |     9 |       |    27  (93)| 00:00:01 |
|   4 |     UNION-ALL    |      |       |       |            |          |
|   5 |      FAST DUAL   |      |     1 |       |     2   (0)| 00:00:01 |
|   6 |      FAST DUAL   |      |     1 |       |     2   (0)| 00:00:01 |
|   7 |      FAST DUAL   |      |     1 |       |     2   (0)| 00:00:01 |
|   8 |      FAST DUAL   |      |     1 |       |     2   (0)| 00:00:01 |
|   9 |      FAST DUAL   |      |     1 |       |     2   (0)| 00:00:01 |
|  10 |      FAST DUAL   |      |     1 |       |     2   (0)| 00:00:01 |
|  11 |      FAST DUAL   |      |     1 |       |     2   (0)| 00:00:01 |
|  12 |      FAST DUAL   |      |     1 |       |     2   (0)| 00:00:01 |
|  13 |      FAST DUAL   |      |     1 |       |     2   (0)| 00:00:01 |
-------------------------------------------------------------------------

Проблема с патчем модулей ведра и морковки для Оракла 10.2.0.1 остается открытой - помогите чем можете. На Металинк обращаться смысла нет - у буржуев ведра не той системы а морковь вся геномодифицированная.
27 дек 07, 11:33    [5102420] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
гггг
Guest
как предложила одна коллега, написать осталось ещё рингтончек "В лесу родилась елочка"
у кого там музыкальный слух?
вот заготовочка:
select chr(7)||chr(7) from dual;
exec dbms_lock.sleep(.2);
27 дек 07, 11:53    [5102617] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
_Alex_SMIRNOV_
Member

Откуда: Киев
Сообщений: 1319
гггг
как предложила одна коллега, написать осталось ещё рингтончек "В лесу родилась елочка"
у кого там музыкальный слух?
вот заготовочка:
select chr(7)||chr(7) from dual;
exec dbms_lock.sleep(.2);


А вот и слова, но только инвертированые :

В пустыне помирал дубок,
Дубок в пустыне чах.
Весной и в осень, кривенький,
В коричневых тонах.

Самум ему стихи читал:
Подъем, дубок, вставай!
А зной песок раскидывал:
Давай позагорай!

Отважный лев, зеленый лев
Над дубом пролетал,
Частенько радостный верблюд
Галопом проползал.

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

Она телегу не везет,
И бабы нету в ней,
Что склеит прочно дуб чужой
До верхних до ветвей.

И вот он, безобразненький,
С поминок убежал
И мало-мало гадостей
У старичков отнял.
27 дек 07, 12:01    [5102676] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
Еуац
Guest
Не, чуваки, вы не шарите: у правильной снежинки должно быть шесть веточек. Поэтому единственный правильный вариант - йфяцыча.
Или так например:
select a from
(      select ' \ | / ' a,1 b from dual
 union select '  >|<  ' a,2 b from dual
 union select ' / | \ ' a,3 b from dual
) order by b
29 дек 07, 14:03    [5111474] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
гггггг
Guest
Еуац
Не, чуваки, вы не шарите: у правильной снежинки должно быть шесть веточек. Поэтому единственный правильный вариант - йфяцыча.
Или так например:
select a from
(      select ' \ | / ' a,1 b from dual
 union select '  >|<  ' a,2 b from dual
 union select ' / | \ ' a,3 b from dual
) order by b

это больше похоже на какого-то жука а не на снежинку...
29 дек 07, 14:17    [5111535] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
Еуац
Guest
гггггг
Еуац
Не, чуваки, вы не шарите: у правильной снежинки должно быть шесть веточек. Поэтому единственный правильный вариант - йфяцыча.
Или так например:
select a from
(      select ' \ | / ' a,1 b from dual
 union select '  >|<  ' a,2 b from dual
 union select ' / | \ ' a,3 b from dual
) order by b

это больше похоже на какого-то жука а не на снежинку...




Зато правильно с точки зрения геометрии кристаллов.
А восьмиконечных и пятиконечных снежинок вообще не бывает.
29 дек 07, 14:26    [5111551] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
_Alex_SMIRNOV_
Member

Откуда: Киев
Сообщений: 1319
set pagesize 0

SELECT TRANSLATE(dbms_random.VALUE || dbms_random.VALUE, '0123456789.', '*        *') "СНЕГ" FROM dba_objects
29 дек 07, 14:48    [5111622] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
uranic
Member

Откуда:
Сообщений: 256
А java сможет звук играть?
может можно елочку проиграть не через chr(7) а через java?
29 дек 07, 14:56    [5111650] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
OraEagle
Member

Откуда:
Сообщений: 301
2 _Alex_SMIRNOV_

автор

set pagesize 0

SELECT TRANSLATE(dbms_random.VALUE || dbms_random.VALUE, '0123456789.', '* *') "СНЕГ" FROM dba_objects


rulezzzz
29 дек 07, 15:03    [5111661] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
Happy New Year!!!
Guest
Продолжаем играться:

select a from
(      select '       ^       ' a,1 b from dual
 union select '      / \      ' a,2 b from dual
 union select '     /_ _\     ' a,5 b from dual
 union select '      / \      ' a,4 b from dual
 union select '     /_ _\     ' a,3 b from dual
 union select '      / \      ' a,6 b from dual
 union select '     /   \     ' a,7 b from dual
 union select '    /__ __\    ' a,8 b from dual
 union select '       |       ' a,9 b from dual
 union select '       |       ' a,10 b from dual)
 order by b
29 дек 07, 16:00    [5111782] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
nxx
Member

Откуда:
Сообщений: 1168
Happy New Year!!!
Продолжаем играться:

select a from
(      select '       ^       ' a,1 b from dual
 union select '      / \      ' a,2 b from dual
 union select '     /_ _\     ' a,5 b from dual
 union select '      / \      ' a,4 b from dual
 union select '     /_ _\     ' a,3 b from dual
 union select '      / \      ' a,6 b from dual
 union select '     /   \     ' a,7 b from dual
 union select '    /__ __\    ' a,8 b from dual
 union select '       |       ' a,9 b from dual
 union select '       |       ' a,10 b from dual)
 order by b


а так ?

select rpad(lpad('/',5-mod(rownum-2,5)),6)||'|'||
lpad('\',mod(rownum-2,5)+1)
from all_objects
where rownum <17
29 дек 07, 16:21    [5111825] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
pravednik
Member

Откуда: Киев
Сообщений: 11578
nxx

а так ?

select rpad(lpad('/',5-mod(rownum-2,5)),6)||'|'||
lpad('\',mod(rownum-2,5)+1)
from all_objects
where rownum <17


так красивше...;)...а то съехало чуток
select rpad(lpad('/',5-mod(rownum-2,5)),6)||'|'||
lpad('\',mod(rownum-2,5)+2) 
from all_objects
where rownum <17
29 дек 07, 16:25    [5111834] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
RA\/EN
Member

Откуда:
Сообщений: 3317
Тоже на йолку с утра пробило:
WITH
q AS ( 
SELECT 25-(trunc(ROWNUM/5)+1)*3 + MOD(-ROWNUM,5)*2 num 
FROM dual 
CONNECT BY LEVEL<=20) 
SELECT
lpad(' ',num+2)|| 
lpad('/',(MAX(num) over ()-num+1),'/')||lpad('\',(MAX(num) over ()-num+1),'\')|| 
lpad(' ',num+2) AS e
FROM q 
29 дек 07, 20:23    [5112214] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
SimonInBlues
Member

Откуда: Балаково
Сообщений: 258
А если объединить задумки уважаемых RA\/EN и _Alex_SMIRNOV_:
RA\/EN
Тоже на йолку с утра пробило:
WITH
q AS ( 
SELECT 25-(trunc(ROWNUM/5)+1)*3 + MOD(-ROWNUM,5)*2 num 
FROM dual 
CONNECT BY LEVEL<=20) 
SELECT
lpad(' ',num+2)|| 
lpad('/',(MAX(num) over ()-num+1),'/')||lpad('\',(MAX(num) over ()-num+1),'\')|| 
lpad(' ',num+2) AS e
FROM q 


_Alex_SMIRNOV_
set pagesize 0

SELECT TRANSLATE(dbms_random.VALUE || dbms_random.VALUE, '0123456789.', '*        *') "СНЕГ" FROM dba_objects


то получится вот так
WITH
q AS ( 
  SELECT 
    25-(trunc(ROWNUM/5)+1)*3 + MOD(-ROWNUM,5)*2 num
  FROM dual 
  CONNECT BY LEVEL<=20
) 
SELECT
  rownum rn,
  substr(TRANSLATE(dbms_random.VALUE || dbms_random.VALUE, '0123456789.', '*        *'), 1, num)|| 
    lpad('/',(MAX(num) over ()-num+1),'/')||lpad('\',(MAX(num) over ()-num+1),'\')|| 
        substr(TRANSLATE(dbms_random.VALUE || dbms_random.VALUE, '0123456789.', '*        *'), 1, num) v3
FROM q

   **         *   * /\*  *              * 
* * ** ///\\\* * *
/////\\\\\ *
* * *///////\\\\\\\ * **
** ** //\\ * * **
* * * ////\\\\ * * **
* //////\\\\\\** * *
* *** *////////\\\\\\\\ * *
* * //////////\\\\\\\\\\ * *
* **/////\\\\\* ** * ** *
* * ///////\\\\\\\ * * * *
*/////////\\\\\\\\\* *
** * ///////////\\\\\\\\\\\ *
* * * /////////////\\\\\\\\\\\\\ *
* *** ////////\\\\\\\\ * *
* ** * //////////\\\\\\\\\\ * **
* * ////////////\\\\\\\\\\\\** *
* //////////////\\\\\\\\\\\\\\
* *////////////////\\\\\\\\\\\\\\\\ *
* * *///////////\\\\\\\\\\\ * * *
30 дек 07, 15:59    [5113037] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
NewbieDBA
Guest
SimonInBlues
А если объединить задумки уважаемых RA\/EN и _Alex_SMIRNOV_:
RA\/EN
Тоже на йолку с утра пробило:
WITH
q AS ( 
SELECT 25-(trunc(ROWNUM/5)+1)*3 + MOD(-ROWNUM,5)*2 num 
FROM dual 
CONNECT BY LEVEL<=20) 
SELECT
lpad(' ',num+2)|| 
lpad('/',(MAX(num) over ()-num+1),'/')||lpad('\',(MAX(num) over ()-num+1),'\')|| 
lpad(' ',num+2) AS e
FROM q 


_Alex_SMIRNOV_
set pagesize 0

SELECT TRANSLATE(dbms_random.VALUE || dbms_random.VALUE, '0123456789.', '*        *') "СНЕГ" FROM dba_objects


то получится вот так
WITH
q AS ( 
  SELECT 
    25-(trunc(ROWNUM/5)+1)*3 + MOD(-ROWNUM,5)*2 num
  FROM dual 
  CONNECT BY LEVEL<=20
) 
SELECT
  rownum rn,
  substr(TRANSLATE(dbms_random.VALUE || dbms_random.VALUE, '0123456789.', '*        *'), 1, num)|| 
    lpad('/',(MAX(num) over ()-num+1),'/')||lpad('\',(MAX(num) over ()-num+1),'\')|| 
        substr(TRANSLATE(dbms_random.VALUE || dbms_random.VALUE, '0123456789.', '*        *'), 1, num) v3
FROM q

   **         *   * /\*  *              * 
* * ** ///\\\* * *
/////\\\\\ *
* * *///////\\\\\\\ * **
** ** //\\ * * **
* * * ////\\\\ * * **
* //////\\\\\\** * *
* *** *////////\\\\\\\\ * *
* * //////////\\\\\\\\\\ * *
* **/////\\\\\* ** * ** *
* * ///////\\\\\\\ * * * *
*/////////\\\\\\\\\* *
** * ///////////\\\\\\\\\\\ *
* * * /////////////\\\\\\\\\\\\\ *
* *** ////////\\\\\\\\ * *
* ** * //////////\\\\\\\\\\ * **
* * ////////////\\\\\\\\\\\\** *
* //////////////\\\\\\\\\\\\\\
* *////////////////\\\\\\\\\\\\\\\\ *
* * *///////////\\\\\\\\\\\ * * *


Зачет, в избранное.
2 янв 08, 12:26    [5115251] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
Снюгурочка
Guest
Конешно остальным в подметки не годится , но я тож хочу поучаствовать:

select translate(replace(replace('1234*6789',to_char(rownum),'*'),to_char(10-rownum),'*'),'123456789','         ') 
from dba_objects where rownum < 10;

*   *   *
 *  *  * 
  * * *  
   ***   
    *     
   ***   
  * * *  
 *  *  * 
*   *   *
4 янв 08, 15:43    [5119180] Ответить | Цитировать    Сообщить модератору

 Re: конкурс на рисование снежинок   [new]
icecovered
Guest
Что снежинки.... Вот цифры!!!!
Функция:

FUNCTION Pict(p_number varchar2) RETURN varchar2 IS
v_number varchar2(500);
BEGIN
CASE p_number
WHEN '1' THEN
BEGIN
v_number:='@<br>@<br>@<br>@<br>@';
END;
WHEN '2' THEN
BEGIN
v_number:='@@@@<br>          @<br>@@@@<br>@        <br>@@@@';
END;
WHEN '3' THEN
BEGIN
v_number:='@@@@<br>          @<br>@@@@<br>          @<br>@@@@';
END;
WHEN '4' THEN
BEGIN
v_number:='@       @<br>@       @<br>@@@@<br>';
v_number:=v_number||'          @<br>          @';
END;
WHEN '5' THEN
BEGIN
v_number:='@@@@<br>@          <br>@@@@<br>          @<br>@@@@';
END;
WHEN '6' THEN
BEGIN
v_number:='@@@@<br>@       <br>@@@@<br>@       @<br>@@@@';
END;
WHEN '7' THEN
BEGIN
v_number:='@@@@<br>       @<br>     @  <br>     @  <br>     @  ';
END;
WHEN '8' THEN
BEGIN
v_number:='@@@@<br>@       @<br>@@@@<br>@       @<br>@@@@';
END;
WHEN '9' THEN
BEGIN
v_number:='@@@@<br>@       @<br>@@@@<br>          @<br>@@@@';
END;
WHEN '0' THEN
BEGIN
v_number:='@@@@<br>@       @<br>@       @<br>@       @<br>@@@@';
END;

END CASE;
return v_number;
END Pict;



  • И ее вызов:

    SELECT dbms_random.value(10000,99999) num INTO sec_cod from dual;
    htp.p('<b><font size="0.5">');
    i:=1;
    htp.TABLEOPEN('0', 'left');
    htp.TABLEROWOPEN;
    LOOP
    htp.p('<td width="5"> <p align="center">');
    pict_smvl:=Pict(SUBSTR(to_char(sec_cod),i,1));
    htp.p(pict_smvl);
    htp.p('</p></td>');
    EXIT WHEN i=5;
    i:=i+1;
    END LOOP;
    htp.TABLEROWCLOSE;
    htp.TABLECLOSE;
    htp.p('</font></b>');

    Получается случайное пятизначное число, нарисованное собачками =)
  • 7 фев 08, 13:00    [5257199] Ответить | Цитировать    Сообщить модератору

     Re: конкурс на рисование снежинок   [new]
    RA\/EN
    Member

    Откуда:
    Сообщений: 3317
    NewbieDBA


       **         *   * /\*  *              * 
    * * ** ///\\\* * *
    /////\\\\\ *
    * * *///////\\\\\\\ * **
    ** ** //\\ * * **
    * * * ////\\\\ * * **
    * //////\\\\\\** * *
    * *** *////////\\\\\\\\ * *
    * * //////////\\\\\\\\\\ * *
    * **/////\\\\\* ** * ** *
    * * ///////\\\\\\\ * * * *
    */////////\\\\\\\\\* *
    ** * ///////////\\\\\\\\\\\ *
    * * * /////////////\\\\\\\\\\\\\ *
    * *** ////////\\\\\\\\ * *
    * ** * //////////\\\\\\\\\\ * **
    * * ////////////\\\\\\\\\\\\** *
    * //////////////\\\\\\\\\\\\\\
    * *////////////////\\\\\\\\\\\\\\\\ *
    * * *///////////\\\\\\\\\\\ * * *

    Зачет, в избранное.

    А я вот подумал, что то, что снег идет ПОЗАДИ елки, как-то несправедливо. И вот:
    WITH
    q AS ( 
      SELECT 25-(trunc(ROWNUM/5)+1)*3 + MOD(-ROWNUM,5)*2 num 
      FROM dual 
      CONNECT BY LEVEL<=20),
    qq AS (
      SELECT
      ROWNUM-1 rn,
      COUNT(*) over () cnt,
      lpad(' ',num+2)|| 
      lpad('/',(MAX(num) over ()-num+1),'/')||lpad('\',(MAX(num) over ()-num+1),'\')|| 
      lpad(' ',num+2) AS e
      FROM q ),
    qs AS (
    SELECT rn,n,c 
      FROM qq
     MODEL DIMENSION BY(rn,0 n)
           MEASURES (e,' ' c,cnt)
           RULES ITERATE (1e6) UNTIL (iteration_number=cnt[0,0]-1)
           (
           c[iteration_number,FOR n FROM 0 TO length(e[0,0])-1 INCREMENT 1] =
              CASE WHEN dbms_random.value<1/10 THEN '*' ELSE substr(e[iteration_number,0],cv(n)+1,1) END
           ))
    SELECT REPLACE(e,'~','')
      FROM (SELECT sys_connect_by_path(c,'~') e, LEVEL lvl
              FROM qs
             START WITH (n=0)
             CONNECT BY (PRIOR n = n-1 AND PRIOR rn =rn))
     WHERE lvl = (SELECT length(e) FROM qq WHERE ROWNUM=1)
    

                     *    /\***            *
    * ///\\\ * * *
    /////\\\\\*
    * * * * *//////\\\\\\*
    * * //\* * *
    * ////\\\\
    * //////\\\\\\ *
    ////////\\\**\\\ *
    * * ////////*/\\\\\\\\\*
    /*///\\\\\
    * * ///////\\\*\\\ *
    * /*///////\\\\\*\\\ * * * *
    //*/*//////\\\*\\\\\\\ *
    * * //////////*//\\\\*\*\*\\\\
    //*/////\\\\\\\\ *
    * //////////\\\\\*\\\\ *
    **////////*//\\\\\*\\\\\*
    *///*/*///*///\\\\\\*\\*\\\* *
    //*/////////////\\\*\\\\\\\\\\\** *
    ///*/////**\\\\\\*\\*\
    7 фев 08, 13:44    [5257598] Ответить | Цитировать    Сообщить модератору

     Re: конкурс на рисование снежинок   [new]
    dba123
    Guest
    RAVEN, а где же месяц?)
    7 фев 08, 13:51    [5257647] Ответить | Цитировать    Сообщить модератору

     Re: конкурс на рисование снежинок   [new]
    RA\/EN
    Member

    Откуда:
    Сообщений: 3317
    RA\/EN

    А я вот подумал, что то, что снег идет ПОЗАДИ елки, как-то несправедливо. И вот:
    ...

    Кстати, с помощью такого запроса, PAGESIZE 0, CLEAR и DBMS_LOCK.SLEEP можно смонстрячить прикольный скринсейвер для SQL*PLUS или PL/SQL Developer Command Window
    7 фев 08, 14:01    [5257714] Ответить | Цитировать    Сообщить модератору

     Re: конкурс на рисование снежинок   [new]
    RA\/EN
    Member

    Откуда:
    Сообщений: 3317
    dba123
    RAVEN, а где же месяц?)

    А двух Снегурочек-стриптизерш не надо?
    7 фев 08, 14:02    [5257718] Ответить | Цитировать    Сообщить модератору

    Топик располагается на нескольких страницах: 1 2   вперед  Ctrl      [все]
    Все форумы / Oracle Ответить
    Generated time: 328ms.
    Rambler's Top100 Powered by ActualForum 1.5.3 [s1] Copyright (c) Alex Sibilev 2000-2010