Virtuozzo Storage – за пределами виртуализации Денис Силаков # docker plugin install virtuozzo/ploop:1.0 # vstorage set-attr -R /mnt/vstorage/dkv replicas=3 # docker plugin set virtuozzo/ploop vstorage.source=/mnt/vstorage/docker # docker plugin set virtuozzo/ploop args="-size 16GB" # docker volume create -d virtuozzo/ploop -o size=512G --name # docker run -it -v :/ alpine ----------------------------------------------------------------------------------------- Програмная реализация нахождения решения головоломки «Судоку» в 1С Кирилл Ткаченко Перем N, КодСимволаНоль, Судоку, СчЗамен, ИсхДанные; Процедура ИнициализацияКонстант() N = 9; КодСимволаНоль = КодСимвола("0"); КонецПроцедуры Процедура ИнициализацияПеременных() Судоку = Новый Массив(N, N); ИсхДанные = Новый Массив(); ИсхДанные.Добавить("000006201"); ИсхДанные.Добавить("070510060"); ИсхДанные.Добавить("006080059"); ИсхДанные.Добавить("120000000"); ИсхДанные.Добавить("080940500"); ИсхДанные.Добавить("590000000"); ИсхДанные.Добавить("001050073"); ИсхДанные.Добавить("030460080"); ИсхДанные.Добавить("000003604"); СчЗамен = 0; КонецПроцедуры Процедура ПечатьСудоку() Перем Рез, ТекСтрок, ТекСтолб; Рез = "+---+---+---+" ""; Для ТекСтрок = 0 По N - 1 Цикл Для ТекСтолб = 0 По N - 1 Цикл Если ТекСтолб % 3 = 0 Тогда Рез = Рез + "|"; КонецЕсли; Рез = Рез + Символ(Судоку[ТекСтрок][ТекСтолб] + КодСимволаНоль); КонецЦикла; Рез = Рез + "|" ""; Если ТекСтрок % 3 = 2 Тогда Рез = Рез + "+---+---+---+" ""; КонецЕсли; КонецЦикла; Рез = Рез + "" ""; Сообщить(Рез); КонецПроцедуры Процедура СтрокиВСудоку() Перем ТекСтрок, ТекСтолб; Для ТекСтрок = 0 По N - 1 Цикл Для ТекСтолб = 0 По N - 1 Цикл Судоку[ТекСтрок][ТекСтолб] = КодСимвола(ИсхДанные[ТекСтрок], ТекСтолб + 1) - КодСимволаНоль; КонецЦикла; КонецЦикла; КонецПроцедуры Функция Решить() ... Возврат Ложь; КонецФункции Перем ЦифраВСудоку; Перем НСтроки, НСтолбца; Перем НетНулей; Перем ТекСтрок, ТекСтолб, ТекЦифра; Перем НачСтрок, НачСтолб, КонСтрок, КонСтолб; ЦифраВСудоку = Новый Массив(10); НСтроки = 0; НСтолбца = 0; НетНулей = Истина; ТекСтрок = 0; Пока НетНулей И (ТекСтрок < N) Цикл ТекСтолб = 0; Пока НетНулей И (ТекСтолб < N) Цикл Если Судоку[ТекСтрок][ТекСтолб] = 0 Тогда НетНулей = Ложь; НСтроки = ТекСтрок; НСтолбца = ТекСтолб; КонецЕсли; ТекСтолб = ТекСтолб + 1; КонецЦикла; ТекСтрок = ТекСтрок + 1; КонецЦикла; Если НетНулей Тогда Возврат Истина; КонецЕсли; Для ТекЦифра = 0 По 9 Цикл ЦифраВСудоку[ТекЦифра] = Ложь; КонецЦикла; НачСтрок = Цел(НСтроки / 3) * 3; НачСтолб = Цел(НСтолбца / 3) * 3; КонСтрок = НачСтрок + 3; КонСтолб = НачСтолб + 3; Для ТекСтрок = 0 По N - 1 Цикл ЦифраВСудоку[Судоку[НСтроки][ТекСтрок]] = Истина; ЦифраВСудоку[Судоку[ТекСтрок][НСтолбца]] = Истина; КонецЦикла; Для ТекСтрок = НачСтрок По КонСтрок - 1 Цикл Для ТекСтолб = НачСтолб По КонСтолб - 1 Цикл ЦифраВСудоку[Судоку[ТекСтрок][ТекСтолб]] = Истина; КонецЦикла; КонецЦикла; Для ТекЦифра = 1 По 9 Цикл Если Не ЦифраВСудоку[ТекЦифра] Тогда СчЗамен = СчЗамен + 1; Судоку[НСтроки][НСтолбца] = ТекЦифра; Если Решить() Тогда Возврат Истина; КонецЕсли; Судоку[НСтроки][НСтолбца] = 0; КонецЕсли; КонецЦикла; Процедура Главная() ИнициализацияКонстант(); ИнициализацияПеременных(); СтрокиВСудоку(); ПечатьСудоку(); Сообщить(""); Решить(); ПечатьСудоку(); Сообщить(""); Сообщить("Число замен: " + СчЗамен); Сообщить(""); КонецПроцедуры -----------------------------------------------------------------------------------------