Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кто-нибудь знает упражнения по развитию логики? 
:(
    Опции темы
diadiavova
Дата 24.3.2012, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте




07:19


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
БелАмор
Дата 25.3.2012, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 10.6.2010
Где: Россия




Псевдоидиотская задачка для программистов:

Из пункта А в пункт Б вылетело два крокодила: один - зелёный, другой - направо.
Сколько зелёных крокодилов должно прибыть в пункт Б?

PM   Вверх
UniBomb (Online)
Дата 25.3.2012, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург




diadiavova, как решал? Я вот порой натыкаюсь на подобные задачки (ну, которые решаются обычным перебюором) и меня всегда интересует - а существуют ли какие математические модели решения? Вот например можно ли здесь вывести какую-нибудь формулу, подствави в которую номер решения можно было бы это решение получить. Ведь перебором - это скучно.

если что, то вот верные ответы:

Код

07:19  -  17
07:37  -  17
09:17  -  17
09:49  -  22
09:59  -  23
11:19  -  12
11:37  -  12
12:47  -  14
12:57  -  15
13:17  -  12
13:49  -  17
13:59  -  18
14:27  -  14
14:39  -  17
14:48  -  17
14:58  -  18
15:27  -  15
15:39  -  18
15:48  -  18
15:58  -  19
16:27  -  16
16:39  -  19
16:48  -  19
16:58  -  20
17:09  -  17
17:13  -  12
17:24  -  14
17:25  -  15
17:26  -  16
17:31  -  12
17:42  -  14
17:52  -  15
18:18  -  18
18:29  -  20
18:44  -  17
18:45  -  18
18:46  -  19
18:54  -  18
18:55  -  19
18:56  -  20
19:07  -  17
19:11  -  12
19:28  -  20
19:34  -  17
19:35  -  18
19:36  -  19
19:43  -  17
19:53  -  18
21:47  -  14
21:57  -  15



--------------------
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 25.3.2012, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте




Цитата(UniBomb @  25.3.2012,  18:29 Найти цитируемый пост)
diadiavova, как решал? 

К сожалению, по всей видимости так же как и ты
Код

function areEquals(n1, n2)
{
  var values = [6,2,5,5,4,5,6,3,7,6];
  var nums = [parseInt(n1 / 10), (n1 % 10), parseInt(n2 / 10), (n2 % 10)];
  return (nums[0] + nums[1] + nums[2] + nums[3]) == (values[nums[0]] + values[nums[1]] + values[nums[2]] + values[nums[3]]);
}

function result()
{
  var ret = [];
  for(var h = 0; h < 24; h++)
  {
    for(var m = 0; m < 60; m++)
    {
     if(areEquals(h, m))
     ret.push((h > 9? h.toString():"0" +h.toString()) + ":" + (m > 9 ? m.toString():"0" + m.toString()));
    }
  }
  return ret;
}

alert(result().join(", "));

Выдает вот это
Цитата

07:19, 07:37, 09:17, 09:49, 09:59, 11:19, 11:37, 12:47, 12:57, 13:17, 13:49, 13:59, 14:27, 14:39, 14:48, 14:58, 15:27, 15:39, 15:48, 15:58, 16:27, 16:39, 16:48, 16:58, 17:09, 17:13, 17:24, 17:25, 17:26, 17:31, 17:42, 17:52, 18:18, 18:29, 18:44, 18:45, 18:46, 18:54, 18:55, 18:56, 19:07, 19:11, 19:28, 19:34, 19:35, 19:36, 19:43, 19:53, 21:47, 21:57

Цитата(UniBomb @  25.3.2012,  18:29 Найти цитируемый пост)
а существуют ли какие математические модели решения?

Я думаю, можно что-то придумать такое, что сократит количиство перебираемых вариантов до такого уровня, что можно будет вручную найти хотя бы несколько значений. Но тут проблема в том, что ты сначала ищешь такой способ, потом сидишь, перебираешь и в конце концов все равно потратишь уйму времени на то, что можно было решить гораздо проще и еще не факт, что найдешь что-то полезное. Если такой способ существует, то посмотреть его описание было бы интересно, но искать самому - чойт ниахота smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
UniBomb (Online)
Дата 25.3.2012, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург




Цитата(diadiavova @  25.3.2012,  19:17 Найти цитируемый пост)
так же как и ты

Всё различие в том, что я на плюсах писал  smile 


Цитата(diadiavova @  25.3.2012,  19:17 Найти цитируемый пост)
придумать такое, что сократит количиство перебираемых вариантов до такого уровня, что можно будет вручную найти хотя бы несколько значений

Товарищ мой, когда я озвучил задачку, решил отсечь часть вариантов. Он решил, что первые цифры должны быть 11. Далее через пять минут он выдал решение 11:19. Но всё равно от перебора его это не избавило. Жаль сейчас в голову не приходят другие подобные задачи, так бы можно было бы обобщить. Но всё равно получается, что задачки на перебор - это не прикольно  smile

Добавлено через 2 минуты и 10 секунд
Кстати, в псот призывается Злоха. Интересно было бы посмотреть на sql запрос, находящий правильные ответы  smile 


--------------------
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 25.3.2012, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте




Цитата(UniBomb @  25.3.2012,  19:31 Найти цитируемый пост)
 Но всё равно от перебора его это не избавило.

Перебирать все подряд не интересно. Тут можно сделать так: берешь за основу какое-нибудь значение и смотришь на сколько расходятся сумма цифр и количество сегментов. Далее, зная о том, на сколько каждая цифра отличается от количества сегментов, которое используется для ее отображения можно эти значения сближать. Ну например, если 1 использует два сегмента, а 2 - 5, то замена единицы на двойку приведет к тому, что разница между сегментами и цифрами сократится( в случае, если изначально сегментов было меньше) на 2. Для других замен так же можно провести подобные вычисления и свести все в таблицу. Далее при из любого значения можно небольшим количеством таких замен получить один из нужных результатов.

Добавлено через 1 минуту и 8 секунд
Цитата(UniBomb @  25.3.2012,  19:31 Найти цитируемый пост)
Всё различие в том, что я на плюсах писал

Яваскрипт в браузере доступен, так что можно все сделать не отходя от кассы smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
UniBomb (Online)
Дата 25.3.2012, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург




Цитата(diadiavova @  25.3.2012,  19:54 Найти цитируемый пост)
Перебирать все подряд не интересно.

Так и я о том же  smile 


Цитата(diadiavova @  25.3.2012,  19:54 Найти цитируемый пост)
так что можно все сделать не отходя от кассы  smile  

Ты не поверишь  smile 


--------------------
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 25.3.2012, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте




Цитата(UniBomb @  25.3.2012,  20:13 Найти цитируемый пост)
Так и я о том же 

Ну я тебе фактически предложил вариант, если хочешь, можешь заморочиться. Например для каждого показания мы вводим некую величину(назовем ее характеристикой), которая вычисляется вычитанием количества сегментов из суммы цифр. Дальше небольшая табличка 10х10. Строки таблицы - это начальные значения одного индикатора, столбцы - конечные значения. Пересечение строки и столбца - величина, на которую изменится характеристика при замене. Все числа тут могут быть и отрицательными. Нам надо найти такие показания, при которых характеристика равна нулю. Но мы можем взять любое показание и с помощью таблицы легко подобрать несколько замен и таким образом найти одно из решений.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Zloxa
Дата 26.3.2012, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008




Цитата(diadiavova @  25.3.2012,  19:17 Найти цитируемый пост)
 так же как и ты


Цитата(UniBomb @  25.3.2012,  19:31 Найти цитируемый пост)
я на плюсах

Код

SQL> with t as (
  2  select trunc(sysdate)+level/24/60 tm
  3         ,to_char(trunc(sysdate)+level/24/60,'HH24MI') di
  4         ,translate(to_char(trunc(sysdate)+level/24/60,'HH24MI'),'1234567890','2554563766') sg
  5  from dual connect by level < 24*60
  6  )
  7  select  to_char(tm,'HH24:MI') tm
  8  from t
  9  where substr(di,1,1)+substr(di,2,1)+substr(di,3,1)+substr(di,4,1)
 10        =substr(sg,1,1)+substr(sg,2,1)+substr(sg,3,1)+substr(sg,4,1)
 11  and rownum <= 10
 12  ;
 
TM
-----
07:19
07:37
09:17
09:49
09:59
11:19
11:37
12:47
12:57
13:17
 
10 rows selected


Это сообщение отредактировал(а) Zloxa - 26.3.2012, 09:14


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Zloxa
Дата 26.3.2012, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008




Цитата(UniBomb @  25.3.2012,  20:13 Найти цитируемый пост)
Ты не поверишь    

У Юни меньше всего букав  smile 


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
diadiavova
Дата 26.3.2012, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте




Цитата(Zloxa @  26.3.2012,  10:16 Найти цитируемый пост)
У Юни меньше всего букав 

Код

static void Main(string[] args){
    int[] segments = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 6 };
    for (int h = 0; h < 24; h++)for (int m = 0; m < 60; m++){
                int[] digs = { h / 10, h % 10, m / 10, m % 10 };
                if (digs.Sum() == digs.Select(x => segments[x]).Sum())
                    Console.WriteLine("{0:00}:{1:00}", h, m);}
}
 smile

Добавлено @ 10:56
У Унибомба все равно короче smile 

Это сообщение отредактировал(а) diadiavova - 26.3.2012, 11:02


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
UniBomb (Online)
Дата 26.3.2012, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург




Цитата(Zloxa @  26.3.2012,  10:16 Найти цитируемый пост)
У Юни меньше всего букав

Цитата(diadiavova @  26.3.2012,  11:44 Найти цитируемый пост)
У Унибомба все равно короче

Просто Уни ленивее  smile Но ради справедливости стоит сказать, что в его коде помимо грубой ошибки ещё и градус ###кодства выше  smile

Добавлено через 25 секунд
Ох уж этот антиругослов  smile 


--------------------
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 26.3.2012, 12:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте




Кстати, раз уж заговорили о SQL, то видимо не лишне будет показать как это будет выглядеть с использованием LINQ-запроса(раз уж пошла такая пьянка, то фигли там стесняться-то? smile).
Код

static void Main(string[] args)
{
    int[] segments = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 6 };
    Array.ForEach((from h in Enumerable.Range(0, 24)
                    from m in Enumerable.Range(0, 60)
                    let digs = new int[] { h / 10, h % 10, m / 10, m % 10 }
                    where digs.Sum() == digs.Select(x => segments[x]).Sum()
                    select (string.Format("{0:00}:{1:00}", h, m))).ToArray(), Console.WriteLine);
}




--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Zloxa
Дата 26.3.2012, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008




Цитата(diadiavova @  26.3.2012,  13:33 Найти цитируемый пост)
раз уж пошла такая пьянка

SQL+REGEXP+XPATH(как часть XQuery)
Код

SQL> select regexp_replace(mi,'(\d{2})(\d{2})','\1:\2') result
  2  from (select to_char(trunc(sysdate)+level/24/60,'HH24MI') mi from dual connect by level <=24*60)
  3  where 'true' = XMLQuery(regexp_replace(mi,'(\d)','+\1')
  4                          ||'='||regexp_replace(translate(mi,'1234567890','2554563766'),'(\d)','+\1')
  5                          returning content
  6                          ).getStringVal();
  
 
RESULT
--------------------------------------------------------------------------------
07:19
07:37
09:17
09:49
09:59
...


Добавлено через 8 минут и 50 секунд
Больше всего впечатляет скорость 
Код

Executed in 5.265 seconds


 smile 

Это сообщение отредактировал(а) Zloxa - 26.3.2012, 13:47


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
UniBomb (Online)
Дата 26.3.2012, 14:01 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург




Последние вести с полей:


Цитата(diadiavova @  26.3.2012,  11:44 Найти цитируемый пост)
У Унибомба все равно короче  smile  


Цитата(irinazanuda @  26.3.2012,  14:59 Найти цитируемый пост)
Пусть короче, но Уни хороший -- тему можно закрывать



--------------------
PM MAIL ICQ Skype   Вверх
Страницы: (49) « Первая ... 45 46 [47] 48 49 
Ответ в темуСоздание новой темы Создание опроса
Правила раздела «Флейм»
Sneg0k

Добро пожаловать в «Флейм».

В разделе не действуют многие правила:

  • Можно оффтопить(умеренно)
  • Можно общаться на темы, не только связанные с программированием.

Строго запрещено:

  • Размещать рекламу
  • Обсуждать политику
  • Оскорблять друг-друга и переходить на личности
  • Наезжать, провоцировать других участников форума
  • Материться
  • Троллить

Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт.


Глас Винграда:


Глас Философии:


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Флейм | Следующая тема »


 




[ Время генерации скрипта: 0.0995 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.