суббота, 9 октября 2021 г.

Сети: Cisco paket tracer и задачи

Cisco Packet Tracer - это программное обеспечение для моделирования сетей, предназначенное для моделирования сетевых устройств Cisco. Вы можете использовать Cisco Packet Tracer для проектирования простых и довольно сложных сетевых топологий. Вы также можете настроить виртуальные машины, маршрутизаторы, коммутаторы и другие устройства в Packet Tracer для проверки топологии сети.

как скачать и для чего подробнее - читать тут, ориг сайт

задачки 2014 года

фулл



пятница, 18 октября 2019 г.

OpenCV : colorpicker from video pixel

● OpenCV приложение1 (2016г)
– Входные данные: поток web-камеры
– Вывод: Графическое окно с текущем кадром потока. На на кадре
текстом выведен код цвета под курсором.

#laba1
import numpy as np
import cv2
capture=cv2.VideoCapture(0)
global r,b,y
global im,location
strings = "q"xi=100yi=100
def showcolor(event,x,y,flags,param):
    global xi, yi
    xi=x
    yi=y

while True:
    b,frame=capture.read()
    im=frame
    msg = strings
    fontface = cv2.FONT_HERSHEY_SIMPLEX
    fontscale = 1.0    location = (xi, yi)
    b = im[yi, xi][0]
    g = im[yi, xi][1]
    r = im[yi, xi][2]
    strings = r.astype(str) + " " + g.astype(str) + " " + b.astype(str)
    clr = np.array([r.astype(int), g.astype(int), b.astype(int)])
    color = (r.astype(int), 190, 0)
    cv2.putText(frame, msg, location, fontface, fontscale,  color=(clr[0], clr[1], clr[2]))
    cv2.imshow("image", frame)
    cv2.setMouseCallback('image', showcolor)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
capture.release()
cv2.destroyAllWindows()

среда, 1 июня 2016 г.

Создание инфоблока "экзамены" . 1С Битрикс API

- Инфоблок "Расписание экзаменов" 
- Свойства для элементов этого инфоблока: 
- "Аудитория" тип целое число 
- "Преподаватель" тип строка 
- и 5 элеметов этого инфоблока с заполнеными полями: 
- Название (стандартное поле инфоблока) 
- Аудитория
- Преподаватель 
- Дата начала (стандартное поле инфоблока) 

__________________________________________



<?php

CModule::IncludeModule("iblock");

$ib = new CIBlock;

$IBLOCK_TYPE = "newb"; //тип инфоблока

$SITE_ID = "s1"; //сайт


// Настройка доступа

$arAccess = array(

"2" => "R", // Все пользователи

);

if ($contentGroupId) $arAccess[$contentGroupId] = "X"; // Полный доступ

if ($editorGroupId) $arAccess[$editorGroupId] = "W"; // Запись

if ($ownerGroupId) $arAccess[$ownerGroupId] = "X"; // Полный доступ


$arFields = Array(

"ACTIVE" => "Y",

"NAME" => "Расписание экзаменов",

"CODE" => "tm",

"IBLOCK_TYPE_ID" => $IBLOCK_TYPE,

"SITE_ID" => $SITE_ID,

"SORT" => "5",

"GROUP_ID" => $arAccess, // Права доступа

"FIELDS" => array(


// Символьный код разделов

"SECTION_CODE" => array(

"IS_REQUIRED" => "Y",

"DEFAULT_VALUE" => array(

"UNIQUE" => "Y",

"TRANSLITERATION" => "Y",

"TRANS_LEN" => "30",

"TRANS_CASE" => "L",

"TRANS_SPACE" => "-",

"TRANS_OTHER" => "-",

"TRANS_EAT" => "Y",

"USE_GOOGLE" => "N",

),

),

"DETAIL_TEXT_TYPE" => array( // Тип детального описания

"DEFAULT_VALUE" => "html",

),

"SECTION_DESCRIPTION_TYPE" => array(

"DEFAULT_VALUE" => "html",

),

"IBLOCK_SECTION" => array( // Привязка к разделам обязательноа

"IS_REQUIRED" => "N",

),

"LOG_SECTION_ADD" => array("IS_REQUIRED" => "Y"), // Журналирование

"LOG_SECTION_EDIT" => array("IS_REQUIRED" => "Y"),

"LOG_SECTION_DELETE" => array("IS_REQUIRED" => "Y"),

"LOG_ELEMENT_ADD" => array("IS_REQUIRED" => "Y"),

"LOG_ELEMENT_EDIT" => array("IS_REQUIRED" => "Y"),

"LOG_ELEMENT_DELETE" => array("IS_REQUIRED" => "Y"),

),


// Шаблоны страниц

"LIST_PAGE_URL" => "#SITE_DIR#/tm/",

"SECTION_PAGE_URL" => "#SITE_DIR#/tm/#SECTION_CODE#/",

"DETAIL_PAGE_URL" => "#SITE_DIR#/tm/#SECTION_CODE#/#ELEMENT_CODE#/",


"INDEX_SECTION" => "Y", // Индексировать разделы для модуля поиска

"INDEX_ELEMENT" => "Y", // Индексировать элементы для модуля поиска


"VERSION" => 1, // Хранение элементов в общей таблице


"SECTION_PROPERTY" => "Y", // Разделы каталога имеют свои свойства (нужно для модуля интернет-магазина)

);


$ID = $ib->Add($arFields);

if ($ID > 0)

{

echo "инфоблок успешно создан";

}

else

{

echo "ошибка создания инфоблока";

return false;

}



$propid1=0;

$propid2=0;


// Определяем, есть ли у инфоблока свойства

$dbProperties = CIBlockProperty::GetList(array(), array("IBLOCK_ID"=>$ID));

if ($dbProperties->SelectedRowsCount() <= 0)

{

$ibp = new CIBlockProperty;


$arFields = Array(

"NAME" => "Аудитория",

"ACTIVE" => "Y",

"SORT" => -777, // Сортировка

"CODE" => "Number",

"PROPERTY_TYPE" => "N", //


"IBLOCK_ID" => $ID

);

$propId = $ibp->Add($arFields);

if ($propId > 0)

{

$arFields["ID"] = $propId;

$propid1=$propId;

$arCommonProps[$arFields["CODE"]] = $arFields;

echo "&mdash; Добавлено свойство ".$arFields["NAME"]."<br />";

}

else

echo "&mdash; Ошибка добавления свойства ".$arFields["NAME"]."<br />";




/* сео-свойства */

$arFields = Array(

"NAME" => "Преподаватель",

"ACTIVE" => "Y",

"SORT" => -777,

"CODE" => "Name",

"PROPERTY_TYPE" => "S", // Строка


"IBLOCK_ID" => $ID,


);

$propId = $ibp->Add($arFields);

if ($propId > 0)

{

$arFields["ID"] = $propId;

$propid2=$propId;

$arCommonProps[$arFields["CODE"]] = $arFields;

echo "&mdash; Добавлено свойство ".$arFields["NAME"]."<br />";

}

else

echo "Ошибка добавления свойства ".$arFields["NAME"]."<br />";

}

else

echo "Для данного инфоблока уже существуют свойства<br />";




$el = new CIBlockElement;

for($i=0;$i<5;$i++){

$PROP = array();

$PROP[$propid1] = "Преподаватель".$i; //

$PROP[$propid2] = "Аудитория".$i;

$date = "31.05.2016 ".$i.":32:00";

$stmp = MakeTimeStamp($date, "DD.MM.YYYY HH:MI:SS");


$arLoadProductArray = Array(

"MODIFIED_BY" => $USER->GetID(), // элемент изменен текущим пользователем

"IBLOCK_SECTION_ID" => false, // элемент лежит в корне раздела

"IBLOCK_ID" => $ID,

"PROPERTY_VALUES"=> $PROP,

"NAME" => "Предмет #".$i,

"ACTIVE" => "Y", // активен

"PREVIEW_TEXT" => "текст для предмета #".$i,

"DETAIL_TEXT" => "текст для детального просмотра элементa #".$i,

"ACTIVE_FROM" => $date,

"START_DATE"=> $date,

"DATE_ACTIVE_FROM"=>$date

);


if($PRODUCT_ID = $el->Add($arLoadProductArray))

echo "New ID: ".$PRODUCT_ID;


else

echo "Error: ".$el->LAST_ERROR;

}

?>

Обратная польская запись

Reverse Polish notation

Обратная польская нотация (ОПН) 
описание на вики

код PHP


<?php function polish($input){
$input=str_replace(" ","",$input);
for($i=0;$i<strlen($input);$i++){
 if(is_numeric($input[$i])){
  $stack[]=$input[$i];
  }
 else {
   $n2 = array_pop($stack);
   $n1 = array_pop($stack);
   switch($input[$i]) {
    case '+': $result = $n1 + $n2; break;
    case '-': $result = $n1 - $n2; break;
    case '*': $result = $n1 * $n2; break;
    case '/': $result = $n1 / $n2; break;
    default: echo "Ощибка ввода!\n";
   }
   array_push($stack,$result);
  }
 }
 return array_pop($stack);
}

echo polish("5 8 3 + *");?>

среда, 25 сентября 2013 г.

с++ / Задача Иосифа Флавия

Задача Иосифа (циклический список)

Описание задачи:
http://ru.wikipedia.org/wiki/Задача Иосифа


Решение (Перебором от http://cppalgorithms.blogspot.ru ) :


#include <iostream>
using namespace std;

class Node   //Узел связного списка
{
public:
int m_item;
Node *m_next;

Node(int item, Node *next){m_item = item, m_next = next;}
};

int main()
{
cout << "Enter number of people: ";
int numberOfPeople = 0;
cin >> numberOfPeople;

cout << "Enter interval: ";
int interval;
cin >> interval;

Node *first =new Node(1, 0); //Создаем первый узел. m_item содержит номер
first->m_next = first;       //и зацикливаем его на себя

Node *tmp = first;  //Указатель с которым будем работать в дальнейшем

for (int i = 2; i <= numberOfPeople; ++i)  //Создаем циклический список
{
tmp->m_next = new Node(i, first);
tmp = tmp->m_next;
}
while (tmp != tmp->m_next)    //Удаляем элемент через интервал
{
for (int i = 1; i < interval; ++i)
{
tmp = tmp->m_next;
}
Node *deleteNode = tmp->m_next;
tmp->m_next = tmp->m_next->m_next;

delete deleteNode;
}

cout << tmp->m_item << endl;  //Выводим оставшийся
}

/////////////////////////////////////////////////
Простая рекурсивная реализация (в 1-индексации):
int joseph (int n, int k) {
 return n>1 ? (joseph (n-1, k) + k - 1) % n + 1 : 1;
}
Нерекурсивная форма:
int joseph (int n, int k) {
 int res = 0;
 for (int i=1; i<=n; ++i)
  res = (res + k) % i;
 return res + 1;
}

с++ / Остатки

Остатки. Задумано целое число Х. Известны числа k, m, n – остатки от деления этого числа на 3, 5, 7 соответственно. Найдите число Х.

#include <iostream>
using namespace std;
int main()
{
int k,m,n,p;
cin>>k>>m>>n;
cout<<"interval";
cin>>p;
for(int x=0; x<p; x++) 
{
  if ((x%3)==k && (x%5)==m && (x%7)==n)
  {
    cout<<x<<endl;
  }
}

return 0;
}

c++ / диагональ прямоугольника

//Прямоугольник, стороны которого выражены натуральными числами M и N ,
//разделен на квадраты размером 1 x 1. Найти число квадратов, пересекаемых диагональю
//прямоугольника (пересекает только тогда, когда делит его на две произвольные части).

#include <iostream>
using namespace std;
int  euclid(int  A, int  B)
{
   // return B ? euclid(B, A % B) : A;
if (B)
  return euclid(B, A % B);
else
  return A;
}

int  chislo_kvad(int A, int B )
{
    return A + B - euclid(A, B);
}

int main()
{
    std::locale::global(std::locale(""));
    std::cout << "стороны прямоугольника:"
              << std::endl
              << '\t'
              << "A = ";

    int  A = 0;
    std::cin >> A;
    std::cout << '\t'
              << "B = ";
    int  B = 0;
    std::cin >> B;

    std::cout
              << chislo_kvad(A, B)
              << " квадратов."
              << std::endl;
}*/