На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Оставь надежду всяк сюда входящий
1) На раздел распространяются все правила форума.
2) Ответы на головоломки необходимо давать только в теге SPOILER. Сообщения в обход этого правила будут удаляться. Постоянное
нарушение данного пункта правил, повлечет за собой наказание.
3) Автор темы должен указать, известно ли ему решения задачи и сроки в которые он опубликует решение.Рекомендуется вести список отгадавших в первом сообщении.
4) При создании новой темы, в описании или в самом названии четко укажите разновидность задачи.
5) Полная версия правил раздела, находится в теме правила раздела.
Модераторы: Братец Лис
Страницы: (28) « Первая ... 24 25 [26] 27 28   ( Перейти к последнему сообщению )  
> Интересные задачки
    Цитата ya2500 @
    Тест: Правда или ложь?
    https://www.ridus.ru/news/248076

    Оттуда:
    Цитата
    Южноамериканская пустыня Атакама является самым сухим местом на ‎Земле

    Неправда:
    Цитата
    Некоторые районы Сухих долин не видели ни дождя, ни снега вот уже два миллиона лет[3].

    А вообще тест лёгкий - как только понимаешь замысел его авторов, становится легко отвечать без ошибок :)
    Подпись была включена в связи с окончанием срока наказания
      Цитата ya2500 @
      Необходимо добраться от зелёной стрелки до красной, строго чередуя цвета проходимых кругов: красный-синий-красный-синий
      Очевидно так:
      Прикреплённая картинка
      Прикреплённая картинка
        Славян, +1
        «Все, что видишь ты, — видимость только одна. Только форма, а суть никому не видна. Смысл этих картинок понять не пытайся, сядь спокойно в сторонке и выпей вина». Омар Хайям.
          Да я где-то по памяти уже видел эту задачку. Там, кстати, есть некоторое усложнение/усиление правил, приводящее к несколько более трудному решению. Но какое - не помню пока.

          Добавлено
          Мож красное, а потом две "синих"?..
            5+5+5+5 = 555

            это равенство, очевидно, не верно. Необходимо добавить всего одну прямую линию, чтобы получилось верное равенство. То есть, знак "равно" перечёркивать нельзя- должно получиться именно равенство, причём верное.
            «Все, что видишь ты, — видимость только одна. Только форма, а суть никому не видна. Смысл этих картинок понять не пытайся, сядь спокойно в сторонке и выпей вина». Омар Хайям.
              :whistle:
              5+5+5=550
                _lcf_, отличная подсказка!
                «Все, что видишь ты, — видимость только одна. Только форма, а суть никому не видна. Смысл этих картинок понять не пытайся, сядь спокойно в сторонке и выпей вина». Омар Хайям.
                  Скрытый текст
                  545+5+5=555


                  Добавлено
                  Цитата OpenGL @
                  Цитата ya2500 @
                  Тест: Правда или ложь?
                  https://www.ridus.ru/news/248076

                  Оттуда:
                  Цитата
                  Южноамериканская пустыня Атакама является самым сухим местом на ‎Земле

                  Неправда:
                  Цитата
                  Некоторые районы Сухих долин не видели ни дождя, ни снега вот уже два миллиона лет[3].

                  А вообще тест лёгкий - как только понимаешь замысел его авторов, становится легко отвечать без ошибок :)

                  Вопрос был про город, а не пустыню.
                  Мои религиозные убеждения не позволяют мне комментировать код.
                  Моё мировоззренье таково: в программе комментария ни одного!
                    MIF, всё верно!
                    «Все, что видишь ты, — видимость только одна. Только форма, а суть никому не видна. Смысл этих картинок понять не пытайся, сядь спокойно в сторонке и выпей вина». Омар Хайям.
                      Цитата MIF @
                      Вопрос был про город, а не пустыню.

                      Вопрос - да, а пояснение к нему - нет :)
                      Подпись была включена в связи с окончанием срока наказания
                        Дан массив чисел A[] длиной N.
                        Требуется посчитать сумму выражения

                        P = 2 * F(1) + 4 * F(2) + 8 * F(3) + ... + 2^N * F(N)

                        где F(i) есть сумма из произведений всех возможных комбинаций из i членов массива

                        Например, для N=3
                        F(2) = A[0] * A[1] + A[0] * A[2] + A[1] * A[2]

                        Пример: для A={1,3,5} P = 230

                        Прямая реализация ведёт к немалой вычислительной сложности. Как оптимизировать?
                          Как-то так:
                          ExpandedWrap disabled
                            def p(a):
                                n = len(a)
                                r = [0] * (n + 1)
                                r[0] = 1
                                for j in range(n):
                                    rr = [0] * (n + 1)
                                    rr[0] = 1
                                    for i in range(j + 2):
                                        rr[i] = r[i] + r[i - 1] * a[j]
                                    r = rr
                                for i in range(n + 1):
                                    r[i] *= (2 ** i)
                                return sum(r[1:])

                          Скрытый текст
                          Пусть Fi j - значение F(i) при условии, что мы рассматриваем в последовательности только первые j элементов. Слагаемые из этой суммы могут содержать j-ый элемент, а могут и нет. Сумма всех произведений, входящих в Fi j и j-ый элемент не содержащих, равна Fi j-1, а для расчёта суммы оставшихся заметим, что j-ый элемент можно вынести за скобки, и тогда в каждом произведении останется i-1 элементов, из чего следует, что их сумма равна aj*Fi-1 j-1. Итого, получаем рекуррентное соотношение
                          F0 j=1,
                          Fi j=Fi-1 j-1*aj+Fi j-1
                          Подпись была включена в связи с окончанием срока наказания
                            OpenGL
                            О, хороший логический вывод, получается компактный квадратичный алгоритм. :victory:

                            Интересно, реально ли сделать ещё быстрее? :o
                            Сообщение отредактировано: MBo -
                              Мне кажется, что можно. Если, конечно, считать, что все арифметические операции выполняются за O(1) :)
                              Подпись была включена в связи с окончанием срока наказания
                                Кстати, а значения F(i) нужны?
                                Если не нужны, то выражение можно вычислить куда быстрее.

                                Если на Питоне, то буквально в одну строчку
                                ExpandedWrap disabled
                                  from functools import reduce
                                  from operator import mul
                                  def p(a):
                                      retutn reduce(mul, (1 + 2*v for v in a), 1)


                                Просто приведённое выражение есть не что иное, как (1 + 2*a1)*(1 + 2*a2)*...*(1 + 2*aN)
                                Всё написанное выше это всего лишь моё мнение, возможно ошибочное.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (28) « Первая ... 24 25 [26] 27 28 


                                Рейтинг@Mail.ru
                                [ Script Execution time: 0,1459 ]   [ 16 queries used ]   [ Generated: 27.06.17, 05:29 GMT ]