[Python] вопрос/ответ.

Discussion in 'Python' started by De-visible, 21 Jan 2009.

  1. DiesIrae

    DiesIrae Active Member

    Joined:
    14 Mar 2019
    Messages:
    30
    Likes Received:
    156
    Reputations:
    0
    Так, я не хрена не понял. В условиях задачи по комбинаторики.
    Процент, пройденных комбинаций?
    Типо 1/1 это типо 0%, Дальше, мы типо начинаем брутфорсить. И типо процент отражает перебранные комбинации?
    UPD
    Пока, я пробежал 3 км и завершил свой утренний комплекс ОФП, мне пришла в голову аналогия.
    1|1===============4|4
    Допустим, мы с 1|1======2|4(50%)========4|4
    Я верно, понимаю задачу?
     
    #1101 DiesIrae, 2 Aug 2019
    Last edited: 2 Aug 2019
  2. Matrix001

    Matrix001 Active Member

    Joined:
    18 Aug 2016
    Messages:
    262
    Likes Received:
    146
    Reputations:
    3
    Да, верно. Но только мы должны получить комбинацию 2|4 не просто взяв ее из уже всех полученных комбинаций методом (bruteforce), а вывести имея только максимальный и минимальный результаты комбинаций.
     
  3. DiesIrae

    DiesIrae Active Member

    Joined:
    14 Mar 2019
    Messages:
    30
    Likes Received:
    156
    Reputations:
    0
    Короче, я понял. Для логики нам нужна какая-то математика. Нам нужно, что то типо формулы Гауса для суммы всех чисел от 1 до n. Что-бы ускорить вычисления.
    Задача именно, для двумерного массива размером в 4 элемента? или n-мерный и на n-элементов?
    Просто я к чему. 2|4 (50%), верно-же. 4|8 - это тоже самое. Так-хоть до 1000 проходи, просто пропорционально потом прикидывай, хоть до 800000000. Разницы то, нет...а вот с увеличением размерности массива, уже другие вычисления начинаются...
     
    #1103 DiesIrae, 2 Aug 2019
    Last edited: 2 Aug 2019
  4. aka dexter

    aka dexter Elder - Старейшина

    Joined:
    23 Jun 2006
    Messages:
    539
    Likes Received:
    801
    Reputations:
    74
    с предыдущей страницы:
    п.с. господа, учитесь скомпоновывать и выражать свои мысли, чтобы они были понятны хотя бы не только вам.
     
  5. DiesIrae

    DiesIrae Active Member

    Joined:
    14 Mar 2019
    Messages:
    30
    Likes Received:
    156
    Reputations:
    0
    Сам себе, отвечу.
    В глаза бросается, элементарное.
    1|1 - 0 процентов, ну гипотетически пусть будет 25% от 25%.
    1|2 - У нас получается 50 % от 25% общих, верно-же?
    1|3 - 75% от 25%.
    1|4 - 25%. И по новой...
    2|4 - 50% - правильно, да?
    3|4 - 75% - да?
    4|4 - 100%.
    Я не могу, уловить. А в чём собственно проблема-то?
    Как на вход, подаются числа? Т.е. соответствует ли значение элемента, порядку.
    Что должно, получится на выходе?
     
    #1105 DiesIrae, 2 Aug 2019
    Last edited: 2 Aug 2019
  6. Matrix001

    Matrix001 Active Member

    Joined:
    18 Aug 2016
    Messages:
    262
    Likes Received:
    146
    Reputations:
    3
    Задача для любого размера массива с любыми возможным цифрами. На вход подается только максимально возможные комбинации, тоесть например я знаю что максимум у меня может быть 3|3|3 мне необходимо узнать допустим 0.25 % от этой комбинации. При этом не генерируя этот порядок, и не рассчитывая от уже этих сгенерированных (допустим в цикле комбинаций) эту комбинацию.
     
  7. DiesIrae

    DiesIrae Active Member

    Joined:
    14 Mar 2019
    Messages:
    30
    Likes Received:
    156
    Reputations:
    0
    Вот, уже лучше.
    Ты хочешь увидеть, какие элементы будут на этапе перебора в условной точке перебора = 0.25%?
    Верно?
    Но опять-же для любого размера - такого в природе не существует.
    Я просто, попытаюсь объяснить, на пальцах, довольно очевидную вещь.
    Есть такая штука как кардинальное число множества или мощность множества. Ты очевидно, с этим знаком, из курса мат.анализа.
    Так, вот мощность счетных множеств, определяется биекцией (взаимно однозначным отображением) на множество натуральных чисел. И тут, у нас проблема. Множество - натуральных чисел бесконечно.
    Т.е. как сравнить два множества? Если они бесконечны?
    Правильно по мощности. Ладно, дальше начинается, математика. Я в ней не силён.
    Тип int, слава Богу в Python неограничен. Теоретически, как я понял. Хотя, как я опять-же понял читая мутную штуку https://docs.python.org/3/library/sys.html#sys.maxsize
    Там, пишется, что
    sys.maxsize

    An integer giving the maximum value a variable of type Py_ssize_t can take. It’s usually 2**31 - 1 on a 32-bit platform and 2**63 - 1 on a 64-bit platform


    Таким, образом. Я подключил модуль. Присвоил значение переменной. Он выдал. Значение. Окей, двигаемся дальше.
    Потом, я решил добавить к переменной +1. Всё сработало. Число увеличилось. Потом Я решил умножить на это число. Тоже все сработало. Потом возвести в степень равную этому числу...и тут, Python запущенный из cmd (да, я ещё использую Windows в 2019), начал жрать ресурсы, увеличивая объем выделяемой оперативной памяти. И вот, уже 3 минуты я жду, когда мне программа выдаст результат, и на то как количество памяти возрастает, и не собирается останавливаться на достигнутом.
    Я прогнозирую, что будет примерно, такой ответ:
    Traceback (most recent call last):
    File "<pyshell#60>", line 2, in <module>
    result = n**result
    MemoryError
    Таким, образом подытоживаем, всё вышесказанное.
    Чё, мы хотим то получить от функции? Сгенерировать комбинации из чисел, которые будут в тех 0.25% и вывести их?
    Или что?
    Потому, что тогда, ты можешь, просто ограничить условия перебора и всё.
    Грубо, говоря. Если не надо перебирать от 1 до 1000. Пусть перебирает от 1000 до 10000.
    Если, ещё грубее.
    Числовая прямая, же понятно что такое?
    Будем думать, что это |1, |2, |3...|n - где n = 100%
    Если тебе надо 50%? Как ты это сделаешь?
    Очевидно, что найдешь расстояние.
    Дальше.
    Система координат это что?
    Это взаимнооднозначное отображение двух множеств. 1|1, 2|2, 3|3...n|n.
    Пусть S= n*n = 100%?
    Логично же?
    Количество комбинаций у тебя это площадь.
    Логично же?
    Трехмерный массив. Количество элементов - это объем.
    Четырех мерные, увы я не силен в аналитической геометрии.
    Просто, этот Японский сложно разобрать. Простите, за мою тупость.
    Тем, временем оперативная память заполнена на 65%, а результата числа нет...Вывод?
     
  8. Matrix001

    Matrix001 Active Member

    Joined:
    18 Aug 2016
    Messages:
    262
    Likes Received:
    146
    Reputations:
    3
    Стоп стоп стоп.
    Ох, вот например есть массив [6, 6, 6, 6, 6] или [7, 7, 7, 7, 7, 7, 7, 7, 7, 7].
    Например для второго кол-во комбинаций 7 в 10-й степени.
    НИ один комп в мире даже квантовый не сможет посчитать скажем 255 в 100000000000 степени.
    Мне этого и не нужно.
    Мне нужно всего лишь даже на маленьких примерах получить комбинацию по проценту.
    То есть мне не надо просто взять и с начало сгенерировать все возможное ко-во комбинаций, взять и вычислить какая комбинация стоит под каким процентным номером и просто вывести ее (потому что если брать для больших комбинаций то это ждать вечность пока что-то переберет тебе даже ее 0.001%).
    Мне надо какае-то формула которая зная только максимальную размерность этой комбинации (например 3|3|3 - максимальный ее размер 3-и а каждая цифра ограничена от 1 до 3) получает уже ту комбинацию которая должна стоять под этим номером процента то есть как ты уже понял 111 - учтем что это 0 % максимальное количество комбинаций в данной это 3 в 3 степени что дает нам 27 комбинаций, то есть допустим что 0.5 % это грубо говоря (13.5 потому что если округлить получим среднюю позицию 14) 14, а под ней надо вычислить эту комбинацию которая должна быть (1|3|0).
     
    #1108 Matrix001, 2 Aug 2019
    Last edited: 2 Aug 2019
  9. DiesIrae

    DiesIrae Active Member

    Joined:
    14 Mar 2019
    Messages:
    30
    Likes Received:
    156
    Reputations:
    0
    Давай, пока ограничимся 3-х мерными моделями. Дабы, нам понять, алгоритм. А дальше, перейдём и к [6, 6, 6, 6, 6].
    |1 - это числовая прямая. Правильно же.
    50% будет точка на прямой, соответсnвующая 50% от n. Логично?
    Верно-же?
    А теперь, проще...
    Есть куча функций для работы с массивами...
    например hsplit() - разбивает массив, вдоль горизонтальной оси.
    Т.е. ты заводишь, свой массив. Превращаешь его в одномерный. Находишь элементы, которые лежат у тебя на твоих 50%, с поправкой на окрестность. И получаешь, свои числа...
    Или за тебя, надо, написать код?
    P/S чисто у меня досих пор считается...75% оперативной памяти уже занято.
    Надеюсь, на этот вопрос ты получил ответ.
     
  10. Matrix001

    Matrix001 Active Member

    Joined:
    18 Aug 2016
    Messages:
    262
    Likes Received:
    146
    Reputations:
    3
    Массив и так одномерный, что за бред с многомерными массивами ? Не так просто, теперь ты от меня не отделаться, я 2-а года потратил на решение этой задачки так и не решил. Какие многомерные массивы ? я же писал, все что мне известно это всего-лишь то какая комбинация максимальна и минимальна.
     
    #1110 Matrix001, 2 Aug 2019
    Last edited: 2 Aug 2019
  11. DiesIrae

    DiesIrae Active Member

    Joined:
    14 Mar 2019
    Messages:
    30
    Likes Received:
    156
    Reputations:
    0
    Погоди, так ты просто тупо, забиваешь список?
    [6, 6, 6, 6]...одними и теме-же числами?
    А изначально пишешь:
    Вот и пойми, что ты хотел сказать.
     
  12. Matrix001

    Matrix001 Active Member

    Joined:
    18 Aug 2016
    Messages:
    262
    Likes Received:
    146
    Reputations:
    3
    Я написал 2|4 что бы объяснить что мне нужно !!! Как я тогда бы объяснил что я хочу ?
     
  13. Matrix001

    Matrix001 Active Member

    Joined:
    18 Aug 2016
    Messages:
    262
    Likes Received:
    146
    Reputations:
    3
    Не решил ?
     
  14. Foxiya

    Foxiya New Member

    Joined:
    13 Sep 2019
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Почему питон при команде
    sudo python2 -m SimpleHTTPServer 80
    Запускает сервер на 2080 порте?
     
  15. DiesIrae

    DiesIrae Active Member

    Joined:
    14 Mar 2019
    Messages:
    30
    Likes Received:
    156
    Reputations:
    0
    Права root?
     
  16. aka dexter

    aka dexter Elder - Старейшина

    Joined:
    23 Jun 2006
    Messages:
    539
    Likes Received:
    801
    Reputations:
    74
    зотщем тебе легасовый python2 ?
     
  17. DiesIrae

    DiesIrae Active Member

    Joined:
    14 Mar 2019
    Messages:
    30
    Likes Received:
    156
    Reputations:
    0
    Что я должен решить?
    Стоят два светофора. На светофоре 3 лапмочки. [3,3]
    Какое количество одновременно горящих и из их комбинаций останется если одну лампочку разбить, на каком-то из сфетофоров? [1,3] [2,3]...[3,1]...[3,3]
    Ну ок. В твоей задачи. Есть n светофоров, с n лампочками. Сколько останется комбинаций лампочек, если мы по разбивали n количество лампочек?
    При чем не понятно, сколько лампочек и светофоров, и где лампочки горят, а где не горят.
    И это нужно реализовать без счетных циклов.
    Интересная задача.
    https://ru.wikipedia.org/wiki/Формула_Хартли
    [​IMG]
    Пойди туда, ни знаю куда, найди то, ни знаю что.
     
  18. Foxiya

    Foxiya New Member

    Joined:
    13 Sep 2019
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Ну конечно,я же указываю sudo.Пробывал на прямую из под рута тоже самое
     
  19. Foxiya

    Foxiya New Member

    Joined:
    13 Sep 2019
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    В 3 питоне тоже самое получается
     
  20. aka dexter

    aka dexter Elder - Старейшина

    Joined:
    23 Jun 2006
    Messages:
    539
    Likes Received:
    801
    Reputations:
    74
    никакого демона или сервера с cpanel не крутится на локалке?