///Повернуть рамку на 1 позицию
///\param top номер строки левого верхнего угла рамки в исходной матрице
///\param left номер колонки левого верхнего угла рамки в исходной матрице
///\param width ширина рамки (количество колонок)
///\param width height высота рамки (количество строк)
/// left
/// | w
/// ************
/// top--***abcdef***
/// h***n****g***
/// ***mlkjih***
/// ************
///
/// rotateFrame(matrix, 1, 3, 6, 3)
void rotateFrame(int **matrix, int top, int left, int width, int height)
{
if (width == 1)
{
int copyOfLast = shiftColumn(matrix, top, left, height, true);
matrix[top][left] = copyOfLast
return;
}
if (height == 1)
{
int copyOfLast = shiftRow(matrix, top, left, width, true);
matrix[top][left] = copyOfLast
return;
}
//верхняя строка
int copyOfLast = shiftRow(matrix, top, left, width, true);
//левый столбец
shiftColumn(matrix, top, left, height, false);
//нижняя строка
shiftRow(matrix, top + height - 1, left, width, false);
//правый столбец
shiftColumn(matrix, top, left + width - 1, height, true);
//восстанавливаем элемент из правого верхнего угла
matrix[top + 1][left + width - 1] = copyOfLast;
}
///Сдвинуть участок строки длинной length на одну позицию в лево или право в зависимости от shiftLeft.
///Первый элемент не изменяется, последний пропадает.
///Возвращает элемент, который будет утрачен.
/// **abcd** -> **aabc** (shiftLeft == true), возвращаем d
/// **abcd** -> **bcdd** (shiftLeft == false), возвращаем a
int shiftRow(int **matrix, int top, int left, int length, bool shiftLeft)
{
}
///Аналогично shiftRow, но для столбца
int shiftColumn(int **matrix, int top, int left, int length, bool shiftDown)
{
}
/// Скачать программу по имени с заданной версией.
/// Возвращает путь до скачанного файла в локальном
std::filesystem::path downloadPackage(const std::string &name, const std::string &versionString);
/// Конструктор PackageUploader.
/// Принимает PackageRegistry, который хранит информацию об адресах
/// на которых можно скачать различные программы.
PackageUploader(const PackageRegistry &packageRegistry);
min_val, max_val = 1, 10
if min_val <= x <= max_val:
print("...")
def BoundsChecker:
__init__(self, min_val, max_val):
self.min_val = min_val
self.max_val = max_val
def isBounded(self, val):
return self.min_val <= val <= self.max_val
checker = BoundsChecker(1, 10)
if (checker.isBounded(x))
print("...")
# here we connect signals with our slots
QtCore.QObject.connect(self.ui.button_open,QtCore.SIGNAL("clicked()"), self.file_dialog)
.def filegraph(current, last):
if current in visited:
print( visited, ' visited')
print(node)
for key in node:
print('%s -> %s' % (key, node[key]), end = ' \n')
print(current, ' Посещено')
return #*Сразу выходим, чтобы уменьшить вложенность кода*
#spisok.clear()
current_dir_items = [] #*это список файлов в текущей директории, то что он был глобальным создавало проблемы ниже*
names = os.listdir(current)
visited.append(current)
print(current, ' Текущая директория')
print(last, ' Последняя директория')
for name in names:
directory = os.path.join(current, name)
if os.path.isdir(directory) == True:
current_dir_items.append(directory)
print(directory, 'директория')
print( current_dir_items, ' список')
print(last)
node[current] = last, current_dir_items #Добавляем в словарь !!!список не копируется, мы помещаем в словарь ссылку на него!!!
if (last in node) #*логика на исключениях -- плохая идея*
print(node[last], ' last' )
else
print(' Ключа нет')
print(node[current], ' current')
if len(current_dir_items) != 0:
#for a in range(0, len(current_dir_items)):
# if node[current][1][a] not in visited:
for next_item in current_dir_items: #*по возможности не используйте for in range(len)*
if next_item not in visited:
time.sleep(3)
os.chdir(next_item) #*код становится проще*
for key in node:
print('%s -> %s' % (key, node[key]), end = ' \n')
print(next_item, ' current ', '-' * 10 )
return filegraph(next_item, current) #тут происходил spisok.clear() и портил вам данные в словаре.
else:
time.sleep(3)
print(' Возвращение ' )
print(node[current][0], ' current 0' )
for key in node:
print('%s -> %s' % (key, node[key]), end = ' \n')
return filegraph(node[current][0], '')