im_noob, Нет, случайно менять код - это не программирование.
Опиши алгоритм работы словами. Как можно более детально. Типа "прочитать число n". "n раз: сгенерировать случайное число a. Подсчитать сумму цифр a"
Не пиши код - сначала продумай, что ты делаешь, и только потом начинай кодировать. На отдельной бумажке записывай в столбик имена всех переменыых и что они означают (вроде "n - количество чисел в последовательности. i - индекс текущего обрабтываемого числа").
В последнем коде у тебя как будто каждую строчку писал другой человек вообще не зная, что происходит строчкой выше.
Если n - количество чисел в последовательности, то почему в цикле while (n > 0) ты считаешь сумму цифр числа n? В задаче же надо сумму цифр чисел в последовательности считать! А не сумму цифр длины последовательности.
longclaps, Да какая разница, что там кроется? Так хоть автор вопроса почитает умные книжки. Ну, наткнется он на область применения и допущения моделей, побалуется с примерами и поймет, что условный курс чего-то на форексе не вписывается в допущения модели. Это что-то плохое?
LoliDeveloper, Нужен код целиком. Если, как вы говорите, потоки работают с разной памятью (хоть и частью одного массива) - то никаких проблем тут быть не может и мутекс тут не нужен.
im_noob, ну, как бы вы максимум в массиве нашли? Судя по заданию, надо подсчитать суммы - вы их в массив сложите и там максимум найдите. Потом можно массив выкинуть, объединив жва цикла (вычисления и поиска)
im_noob, Нет, вам надо подсчитать сумму цифр одного числа отдельно.. И запустить ее на каждом a.
Для этого воспользуйтесь операциями модуля и деления на цело на 10. Модуль даст последнюю цифру, а деление на 10 выкинет ее. Циклом можно пройтись по всем цифрам.
Небольшое разъяснение: надо для каждой клетки смотреть только на 8 соседних клеток, прибавляя +-1 к индексам. Это будет сильно быстрее, чем для каждой клетки сканировать весь список мин.
schokk64rus В питоне это вообще одной строчкой без рекурсии и масок делается.
Сначала сделайте zip двух списков, чтобы получить список пар. Потом передайте это в itertools.product, раскрыв список через оператор * (не знаю, как он правильно у питонистов называется). Возможно, потом вам надо будет удалить первый и последний сгенерированные списки: они равны atoms и dopedatoms.
schokk64rus, Т.е. вам надо какие-то элементы из первого списка заменить элементами из второго на тех же позициях. Заменять по одному, по 2, и так далее до семи. 2^n-2 варианта - так?
Какие-то аццкие ограничения. Обычно такая задача дается, когда можно перекладывать на любой шпиндель. Особенно дикие ограничения для шпинделей 2-7. Там точно можно только на 2 соседних (по одному слева и справа) перекладывать?
В таком виде длинная цепь из промежуточных шпинделей вообще не влияет на алгоритм. Будь их хоть 100 - все, что вы можете с ними делать - это перекладывать диск с одного конца до другого, а там уже решать задачу для 3-х шпинделей.
rastr, помимо проверки на квадратность, возможно в графе запрещены петли. Тогда надо проверить, что по диагонали стоят 0. А так, ваш код выглядит правильным.
Опиши алгоритм работы словами. Как можно более детально. Типа "прочитать число n". "n раз: сгенерировать случайное число a. Подсчитать сумму цифр a"
Не пиши код - сначала продумай, что ты делаешь, и только потом начинай кодировать. На отдельной бумажке записывай в столбик имена всех переменыых и что они означают (вроде "n - количество чисел в последовательности. i - индекс текущего обрабтываемого числа").
В последнем коде у тебя как будто каждую строчку писал другой человек вообще не зная, что происходит строчкой выше.
Если n - количество чисел в последовательности, то почему в цикле
while (n > 0)ты считаешь сумму цифр числа n? В задаче же надо сумму цифр чисел в последовательности считать! А не сумму цифр длины последовательности.