141 / 181 / 44
Регистрация: 25.04.2012
Сообщений: 2,623
Записей в блоге: 5
1

Массив: Составить из исходного новый массив - n последних элементов mas+mas+n первых элементов mas

19.03.2013, 22:14. Показов 1688. Ответов 14
Метки нет (Все метки)

Дан массив mas. Нужно составить из него новый массив- n последних элементов mas+mas+n первых элементов mas, где n - от 1 до бесконечности(массив mas закольцован).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.03.2013, 22:14
Ответы с готовыми решениями:

из заданного одномерного массива mas[N] формирует новый массив mas из полусумм двух соседних элементов исходно
из заданного одномерного массива mas формирует новый массив mas из полусумм двух соседних элементов...

Дан двумерный массив MAS. Ввести A (номер строки) и B (номер столбца) Определить сумму всех ближайших соседних элементов для MAS[A,B]
Дан двумерный массив MAS. Ввести A (номер строки) и B (номер столбца) Определить сумму всех...

Определите булевскую функцию f(x, mas), которая проверяет, входит ли элемент x в массив mas
Определите булевскую функцию f(x, mas), которая проверяет,входит ли элемент x в массив mas. это ...

Если элемент массива mas[0,i] входит в строку ss, то переменной string bla присваиваем значение mas[1,i]
надо выполнить следующее - если элемент массива mas входит в строку ss, то переменной string bla...

14
4864 / 3286 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
20.03.2013, 04:01 2
приведи пример
0
141 / 181 / 44
Регистрация: 25.04.2012
Сообщений: 2,623
Записей в блоге: 5
20.03.2013, 12:40  [ТС] 3
Массав исходный - 1 2 3 4 5 6 7
n = 2
Массив новый - 6 7 1 2 3 4 5 6 7 1 2
0
4864 / 3286 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
20.03.2013, 13:07 4
Python
1
2
3
4
5
6
>>> n = 2
>>> lst = [1, 2, 3, 4, 5, 6, 7]
>>> out = lst[-n:] + lst + lst[:n]
>>> print(out)
[6, 7, 1, 2, 3, 4, 5, 6, 7, 1, 2]
>>>
1
141 / 181 / 44
Регистрация: 25.04.2012
Сообщений: 2,623
Записей в блоге: 5
20.03.2013, 14:04  [ТС] 5
В функции update как задать цикл, чтобы в возвращаемом ей массиве значение каждого элемента бралось из входного массива table с индексом, равным сумме элементов вокруг текущего элемента на friendship элементов в каждую сторону ? Т.е. cells = 1 2 3 4 friendship = 1 возвращаемый массив[1] = 4 + 2 = 6
Вложения
Тип файла: txt automation.py.txt (1.6 Кб, 5 просмотров)
0
4864 / 3286 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
20.03.2013, 15:21 6
перименуй cullular_automation_1d в CellularAutomation1d, с подчёркиваниями называются функции и переменные

Добавлено через 5 минут
приведи пример: чему изначально равны все подаваемые аргументы, чему они равны после вызова, что возвращается из вызова
1
141 / 181 / 44
Регистрация: 25.04.2012
Сообщений: 2,623
Записей в блоге: 5
20.03.2013, 15:28  [ТС] 7
Сделал.
Вложения
Тип файла: txt automation.py.txt (1.6 Кб, 4 просмотров)
0
141 / 181 / 44
Регистрация: 25.04.2012
Сообщений: 2,623
Записей в блоге: 5
20.03.2013, 18:20  [ТС] 8
__init___
на входе
nstates = 4
friendship = 2
table = [0, 1, 1, 0]

после вызова
nstates_ = 4
friendship_ = 2
table = [0, 1, 1, 0]
cells_ получает из random_initialize(nstates_)

random_initialize
на входе
nstates = 4
на выходе
[0,3,1,2]

dump
на входе
cells_ = [0,3,1,2]
nstates_ = 4
на выходе
выводит "0312"

update
на входе
cells = [0,3,1,2]
table = [0,1,1,0]
friendship = 2
на выходе
[table[(1+2+3+1) mod len(table)],table[(2+0+1+2) mod len(table)],table[(0+3+2+0) mod len(table)],table[(3+1+0+3)mod len(table)]] == [0,1,1,0]

generate_random_table
на входе
cells=[0,3,1,2]
nstates = 4
friendship = 2
на выходе
a=максимальная сумма элементов cells, взятых по правилу: по friendship элементов с каждой стороны от некоторого элемента(массив cells тут закольцован)
a=3+1+2+1=7
выходной массив длины 7 содержит случайные целые числа в диапазоне от 0 до 6
[5,5,4,6,1,0,3]

Обновил файл.
Вложения
Тип файла: txt automation.py.txt (1.6 Кб, 6 просмотров)
0
4864 / 3286 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
21.03.2013, 00:41 9
не, ты можешь написать, что ты подаешь в метод .update() и что ожидаешь получить ?
нужно всё, что ты подаешь туда, что происходит с подаваемыми элементами (если они меняются в результате вызова) и что возвращает сам метод

Цитата Сообщение от Alex9 Посмотреть сообщение
на выходе
Код
[table[(1+2+3+1) mod len(table)],table[(2+0+1+2) mod len(table)],table[(0+3+2+0) mod len(table)],table[(3+1+0+3)mod len(table)]] == [0,1,1,0]
потому что это - вообще непонятно, что
0
141 / 181 / 44
Регистрация: 25.04.2012
Сообщений: 2,623
Записей в блоге: 5
21.03.2013, 15:30  [ТС] 10
Это должен получиться конечный автомат первого порядка ( типа программы жизнь).
update
на входе
cells = [0,3,1,2] - текущие значения клеток
table = [0,1,1,0] - таблица переходов для получения нового состояния для каждой клетки
friendship = 2 - размер соседства, количество клеток от некоторой клетки в каждую сторону в массиве клеток
на выходе
[table[(1+2+3+1) mod len(table)],table[(2+0+1+2) mod len(table)],table[(0+3+2+0) mod len(table)],table[(3+1+0+3)mod len(table)]] == [0,1,1,0] -
новый массив клеток, полученный из таблицы переходов с указанием соседства
значение каждой клекти пересчитывается по правилу: для каждого элемента массива cells считается сумма его friendship элементов справа и слева, при этом если для подсчета суммы не хватает элементов - массив cells замыкается, -1 элементом становится последний, len(cells) элементом становится 0-й. Новым значением клетки становится элемент таблицы переходов, индекс которого равен вычисленной сумме, при этом если в массиве table е хватает индексов для этого, то индекс элемента равен остатку от целочисленного деления вычисленной суммы на количество элементов имеющейся таблицы переходов.
0
4864 / 3286 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
21.03.2013, 18:06 11
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>>> cells = [0, 3, 1, 2]
>>> table = [0, 1, 1, 0]
>>> friendship = 2
>>> 
>>> def f(cells, table, friendship):
...     out = []
...     buf = cells[-friendship:] + cells + cells[:friendship]
...     tlen = len(table)
...     for i in range(len(cells)):
...         # в out - состояния из table для i клеток из cells
...         csum = 0
...         ibuf = i + friendship
...         for j in range(1, friendship + 1):
...             # в csum - сумма соседних клеток на расстоянии j
...             csum += buf[ibuf - j] + buf[ibuf + j]
...         out.append(table[csum % tlen])
...     return out
... 
>>> print(f(cells, table, friendship))
[0, 1, 1, 0]
>>>
1
141 / 181 / 44
Регистрация: 25.04.2012
Сообщений: 2,623
Записей в блоге: 5
21.03.2013, 23:06  [ТС] 12
Почему-то не выводит эксепшен в функции random_initialize.
Вложения
Тип файла: txt automation.py.txt (2.1 Кб, 4 просмотров)
0
4864 / 3286 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
22.03.2013, 01:06 13
Цитата Сообщение от Alex9 Посмотреть сообщение
Python
1
if table == None:
с None вот так сравнивать не принято, делают через table is None

__init__() должен быть первым методом в классе

Цитата Сообщение от Alex9 Посмотреть сообщение
Python
1
except:
не должно быть пустых except, потому что какое-нибудь неожиданное исключение может отловиться и об этом не узнаешь, принято писать всегда точное имя ожидаемого исключения или кортеж имён

Цитата Сообщение от Alex9 Посмотреть сообщение
Почему-то не выводит эксепшен
а почему должно выводить ? не вижу ни raise, ни каких-то неправильных вызовов
2
141 / 181 / 44
Регистрация: 25.04.2012
Сообщений: 2,623
Записей в блоге: 5
22.03.2013, 19:10  [ТС] 14
Ругается на неопределенное глобальное cells_, т.е.
Python
1
cells_ = self.random_initialize(nstates_)
не работает ?
Вложения
Тип файла: txt automation.py.txt (2.0 Кб, 7 просмотров)
0
4864 / 3286 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
23.03.2013, 01:36 15
Цитата Сообщение от Alex9 Посмотреть сообщение
неопределенное глобальное cells_
cells_ не указана в global метода

в глобальной области без слова global все переменные нужно создать, присвоив им None
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.03.2013, 01:36
Помогаю со студенческими работами здесь

Создать массив mas из N элементов и реализовать методы
Создать массив mas из N элементов: 1) Реализовать метод для заполнения массива случайными...

Сформировать и вывести массив Mas, состоящий из N элементов
help. Сформировать и вывести массив Mas, состоящий из N элементов. Значение каждого элемента...

Заполнить массив ves весами относительно величин элементов mas
Помогите плиз. Есть массив заполнений значениями int mas и пустой массив int ves, нужно заполнить...

Заполнить массив mas следующим образом
Ребят не могу никак решить задачу. т.к. с лазарусом у меня вообще никак. Заполнить массив mas...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru