Привіт Гість ( Вхід | Реєстрація )

> Это реальная задача по теории вероятностей!, от не п
Death
Oct 27 2011, 21:12
Пост #1


<script ///>
**********

Група: Moderators
Повідомлень: 6 371
З нами з: 5-November 03
З: Kyiv
Користувач №: 26
Стать: НеСкажу
Free-DC_CPID
Парк машин:
гидропарк
jabber:deadjdona@gmail.com



(Show/Hide)



--------------------
wbr, Me. Dead J. Dona OGR-27
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
8 Сторінки V « < 5 6 7 8 >  
Reply to this topicStart new topic
Відповідей(90 - 104)
LSA
Sep 19 2012, 13:25
Пост #91


кранчер з фермою
*******

Група: Trusted Members
Повідомлень: 623
З нами з: 7-October 07
З: Kyiv
Користувач №: 596
Стать: Чол
Free-DC_CPID
Парк машин:
Й9450 8G DDR2 QA90 16G DDR3 GTX 482



http://durdom.in.ua/public/main/photos/photo_34188.jpg
ось вам задача


--------------------
(Show/Hide)


GF100 GF114
+++++,++++

<a href="http://allprojectstats.com/showuser.php?id=1333992"><img src="http://allprojectstats.com/s1333992m0a.png" border=0>
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
x3mEn
Sep 10 2013, 14:07
Пост #92


snow catcher
*********

Група: Trusted Members
Повідомлень: 2 213
З нами з: 4-August 07
Користувач №: 563
Стать: Чол
Free-DC_CPID



Задача для знавців SQL.

Колись була така передача "Звёздный час".
Там була гра, давалося слово, із літер цього слова треба було на час скласти як можна більше інших слів.

Зараз є варіації на цю тему, наприклад "Слова из слов"
Якось мені стало цікаво, як можна було б знайти всі слова, які можна утворити із заданого, якщо в мене є словник усіх допустимих слів.

А тепер задача:
Є таблиця виду
create table WORDS
(
  WORD VARCHAR2(40)
);


Треба написати SQL, яким із таблиці WORDS вибираються всі відмінні від заданого слова, які можна утворити із літер даного.

Наприклад, якщо дадено слово ОСТРОВ, з нього можно утворити наступні слова:
ОР
ВОР
РОВ
РОТ
СОР
ТОР
ВОРС
ОСОТ
РОСТ
СОРТ
ТОРС
ТРОС
ВОРОТ
ОСТОВ
СТВОР

Коли я це завдання дав своїм знайомим, як не дивно, у них воно викликало ступор.
А вам слабо написати SQL? wink.gif
Процедури не приймаються, тільки чистий select


--------------------

(Show/Hide)

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Rilian
Sep 10 2013, 14:20
Пост #93


interstellar
**********

Група: Team member
Повідомлень: 17 157
З нами з: 22-February 06
З: Торонто
Користувач №: 184
Стать: НеСкажу
Free-DC_CPID
Парк машин:
ноут и кусок сервера





WITH RECURSIVE xtab AS (
WITH no_cte AS (
SELECT
1::int AS len
, idx as idx
, substring ( 'ОСТРОВ' FROM idx FOR 1) as str
FROM generate_series(1, char_length( 'ОСТРОВ' )) idx
)
SELECT t0.len as len
, t0.idx
, t0.str
FROM no_cte t0
UNION SELECT 1+t1.len
, tc.idx
, t1.str || tc.str AS str
FROM xtab t1
JOIN no_cte tc ON tc.idx > t1.idx
)
SELECT * FROM xtab
WHERE EXISTS (SELECT * FROM words WHERE word = str)


--------------------
(Show/Hide)


IPB Image

IPB Image

IPB Image
IPB Image

загальна статистика: BOINCstats * FreeDC команда: BOINC команда Ukraine

IPB Image

IPB Image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
x3mEn
Sep 10 2013, 14:33
Пост #94


snow catcher
*********

Група: Trusted Members
Повідомлень: 2 213
З нами з: 4-August 07
Користувач №: 563
Стать: Чол
Free-DC_CPID



generate_series - це, вибачаюсь, який стандарт SQL?
взагалі-то задача написати SQL в стандарті ну хоча б SQL:2008

SQL Server 2008?
http://www.spatialdbadvisor.com/sql_server...aldbadvisor.com

Є набагато простіше рішення, без generate_series.
Та я і не впевнений, що наведене рішення працює правильно.
Бо не зміг привести його до стандарту SQL, щоб перевірити


--------------------

(Show/Hide)

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
A1ex01
Sep 10 2013, 14:52
Пост #95


round catcher)
********

Група: Trusted Members
Повідомлень: 1 365
З нами з: 27-August 08
З: Kyiv
Користувач №: 809
Стать: Чол
Парк машин:
хз*X2/2/500/хз*5870 ц7x64



та давай сразу свой вариант, а кто сможет выложит лучше)


--------------------
Stats: RC5-72 OGR-(26 /27 /28 ) Mag@(free-dc /boinc)
support: BTC 3Po6aejsoZM7bQvo138fuYwaLc67bzMfEr
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
x3mEn
Sep 10 2013, 15:01
Пост #96


snow catcher
*********

Група: Trusted Members
Повідомлень: 2 213
З нами з: 4-August 07
Користувач №: 563
Стать: Чол
Free-DC_CPID



ну ок, даю:

select * from words
where upper('&word') = '&word'
  and word <> '&word'
  and length(word) <= length('&word')
  and
    case
      when length(word) >= 1
        then length('&word') - length(replace('&word', substr(word,1,1))) - length(word) + length(replace(word, substr(word,1,1)))
      else 1
    end >=0
  and
    case
      when length(word) >= 2
        then length('&word') - length(replace('&word', substr(word,2,1))) - length(word) + length(replace(word, substr(word,2,1)))
      else 1
    end >=0    
  and
    case
      when length(word) >= 3
        then length('&word') - length(replace('&word', substr(word,3,1))) - length(word) + length(replace(word, substr(word,3,1)))
      else 1
    end >=0    
  and
    case
      when length(word) >= 4
        then length('&word') - length(replace('&word', substr(word,4,1))) - length(word) + length(replace(word, substr(word,4,1)))
      else 1
    end >=0    
  and
    case
      when length(word) >= 5
        then length('&word') - length(replace('&word', substr(word,5,1))) - length(word) + length(replace(word, substr(word,5,1)))
      else 1
    end >=0    
  and
    case
      when length(word) >= 6
        then length('&word') - length(replace('&word', substr(word,6,1))) - length(word) + length(replace(word, substr(word,6,1)))
      else 1
    end >=0    
  and
    case
      when length(word) >= 7
        then length('&word') - length(replace('&word', substr(word,7,1))) - length(word) + length(replace(word, substr(word,7,1)))
      else 1
    end >=0    
  and
    case
      when length(word) >= 8
        then length('&word') - length(replace('&word', substr(word,8,1))) - length(word) + length(replace(word, substr(word,8,1)))
      else 1
    end >=0    
  and
    case
      when length(word) >= 9
        then length('&word') - length(replace('&word', substr(word,9,1))) - length(word) + length(replace(word, substr(word,9,1)))
      else 1
    end >=0    
  and
    case
      when length(word) >= 10
        then length('&word') - length(replace('&word', substr(word,10,1))) - length(word) + length(replace(word, substr(word,10,1)))
      else 1
    end >=0    
order by length(word), word;

Таким скриптом вибираються всі слова з обмеженням, що вхідне слово не більше 10 символів.
Якщо треба більше - домальовується ще N аналогічних конструкцій через and.
Просто мені було достатньо 10.
Можливо не зовсім і естетично, зате швидкодія майже не залежить від довжини слова.
Я думаю, що на довжині слова овер 16 літер рекурсія загнеться.
Можу поділитися словничком в 52 тисячі слів, на якому я тренувався.


--------------------

(Show/Hide)

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
x3mEn
Sep 10 2013, 15:10
Пост #97


snow catcher
*********

Група: Trusted Members
Повідомлень: 2 213
З нами з: 4-August 07
Користувач №: 563
Стать: Чол
Free-DC_CPID



А от і словничок.


Приєднані файл(и)
Приєднаний файл  words.zip ( 275.72Кб ) Кількість викачувань: 200


--------------------

(Show/Hide)

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
x3mEn
Sep 10 2013, 15:21
Пост #98


snow catcher
*********

Група: Trusted Members
Повідомлень: 2 213
З нами з: 4-August 07
Користувач №: 563
Стать: Чол
Free-DC_CPID



перевірка на слові НИКОТИНАМИДАДЕНИНДИНУКЛЕОТИДФОСФАТГИДРИН (40 символів)

5614 rows selected in 1,517 seconds


--------------------

(Show/Hide)

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Rilian
Sep 10 2013, 16:07
Пост #99


interstellar
**********

Група: Team member
Повідомлень: 17 157
З нами з: 22-February 06
З: Торонто
Користувач №: 184
Стать: НеСкажу
Free-DC_CPID
Парк машин:
ноут и кусок сервера



x3mEn, postgres

вариант с if это говнокод smile.gif если можно юзать if то тогда уже и like надо заюзать


--------------------
(Show/Hide)


IPB Image

IPB Image

IPB Image
IPB Image

загальна статистика: BOINCstats * FreeDC команда: BOINC команда Ukraine

IPB Image

IPB Image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Death
Sep 10 2013, 16:25
Пост #100


<script ///>
**********

Група: Moderators
Повідомлень: 6 371
З нами з: 5-November 03
З: Kyiv
Користувач №: 26
Стать: НеСкажу
Free-DC_CPID
Парк машин:
гидропарк
jabber:deadjdona@gmail.com



а перевірка на слові АБВГДЕЄЖЗ.........Я что даст?


--------------------
wbr, Me. Dead J. Dona OGR-27
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Rilian
Sep 10 2013, 16:26
Пост #101


interstellar
**********

Група: Team member
Повідомлень: 17 157
З нами з: 22-February 06
З: Торонто
Користувач №: 184
Стать: НеСкажу
Free-DC_CPID
Парк машин:
ноут и кусок сервера



QUOTE(Death @ Sep 10 2013, 17:25) *

а перевірка на слові АБВГДЕЄЖЗ.........Я что даст?

даст частичную выборку из словаря, ибо большая часть слов использует повторы букв


--------------------
(Show/Hide)


IPB Image

IPB Image

IPB Image
IPB Image

загальна статистика: BOINCstats * FreeDC команда: BOINC команда Ukraine

IPB Image

IPB Image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
x3mEn
Sep 10 2013, 16:29
Пост #102


snow catcher
*********

Група: Trusted Members
Повідомлень: 2 213
З нами з: 4-August 07
Користувач №: 563
Стать: Чол
Free-DC_CPID



Rilian, PostgreSQL не у всьому відповідає стандарту SQL, скажімо так, свій власний діалект SQL.
На інших СУБД твій чудокод не запускається.
А мій запит принаймні на твоїй PostgreSQL має працювати.
Або буде працювати після невеличкої адаптації, я бачу що у substr і length в PostgreSQL свій синтаксис.

Щодо говнокоду не зрозумів. Хочеш, юзай like, це не заборонено.
Спробуй залий в базєйку табличку і тестани на 40-символьному слові.
Покажи час виконання і результат (кількість слів) на слові НИКОТИНАМИДАДЕНИНДИНУКЛЕОТИДФОСФАТГИДРИН,
тоді можна щось буде вирішити, що із написано говнокод, а що геніальний чудокод.

(Death @ Sep 10 2013, 17:25) *

а перевірка на слові АБВГДЕЄЖЗ.........Я что даст?

АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ

13816 rows selected

Найдовші слова:
ГЕМОТРАНСФУЗИЯ
ЗВУКОСНИМАТЕЛЬ
ПОДХЛЁСТЫВАНИЕ
РАЗГИЛЬДЯЙСТВО
ЧЕТЫРЁХПОЛЮСНИК
ЧЕТЫРЁХУГОЛЬНИК

Щоправда в мене словничок з обмеженням слова в 15 символів максимум.
Просто в грі Ерудит максимальна довжина слова 15, тому сенсу ще довші слова пхати не було.


--------------------

(Show/Hide)

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Rilian
Sep 10 2013, 16:40
Пост #103


interstellar
**********

Група: Team member
Повідомлень: 17 157
З нами з: 22-February 06
З: Торонто
Користувач №: 184
Стать: НеСкажу
Free-DC_CPID
Парк машин:
ноут и кусок сервера



x3mEn, сорри за троллинг, но вы в COMPANY_NAME пишете программу для платной подписки абонентов на "эрудит" ?


--------------------
(Show/Hide)


IPB Image

IPB Image

IPB Image
IPB Image

загальна статистика: BOINCstats * FreeDC команда: BOINC команда Ukraine

IPB Image

IPB Image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
x3mEn
Sep 10 2013, 16:47
Пост #104


snow catcher
*********

Група: Trusted Members
Повідомлень: 2 213
З нами з: 4-August 07
Користувач №: 563
Стать: Чол
Free-DC_CPID



Не палимось, не палимось... ph34r2.gif

В дійсності я цей скрипт придумав в одну з безсонних ночей, коли був дома, а не на роботі, так що це моя інтелектуальна власність, а не COMPANY_NAME. awesome.png


--------------------

(Show/Hide)

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
A1ex01
Sep 10 2013, 17:08
Пост #105


round catcher)
********

Група: Trusted Members
Повідомлень: 1 365
З нами з: 27-August 08
З: Kyiv
Користувач №: 809
Стать: Чол
Парк машин:
хз*X2/2/500/хз*5870 ц7x64



(x3mEn @ Sep 10 2013, 17:29) *

Покажи час виконання і результат (кількість слів) на слові НИКОТИНАМИДАДЕНИНДИНУКЛЕОТИДФОСФАТГИДРИН,
тоді можна щось буде вирішити, що із написано говнокод, а що геніальний чудокод.

+1, Rilian, время выполнения твоей версии давай


--------------------
Stats: RC5-72 OGR-(26 /27 /28 ) Mag@(free-dc /boinc)
support: BTC 3Po6aejsoZM7bQvo138fuYwaLc67bzMfEr
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

8 Сторінки V « < 5 6 7 8 >
Reply to this topicStart new topic
1 Користувачів переглядають дану тему (1 Гостей і 0 Прихованих Користувачів)
0 Користувачів:

 



- Lo-Fi Версія Поточний час: 18th June 2025 - 07:34