Вычисление максимального количества точек принадлежащих одной линии из массива точек C#
Дано:
Массив точек на плоскости: points[][] Xi и Yi.
Надо найти:
Сколько максимально точек принадлежит одной прямой.
Пример:

Дано:
Массив точек на плоскости: points[][] Xi и Yi.
Надо найти:
Сколько максимально точек принадлежит одной прямой.
Пример:

Как добавить в таблицу данные с Primary Key (когда надо этот первичный ключ игнорировать)
SET IDENTITY_INSERT tableA ON
-- Теперь можно делать список полей с Primary Key и добавлять записи так:
INSERT Into tableA ([id], [c2], [c3], [c4], [c5] )
SELECT [id], [c2], [c3], [c4], [c5] FROM tableB
-- Вот так нельзя "INSERT Into tableA SELECT ........"
SET IDENTITY_INSERT tableA OFF
Пример округления даты до часа и до минут
declare @dt datetime
set @dt = '09-22-2007 15:07:38.850'
select dateadd(mi, datediff(mi, 0, @dt), 0)
select dateadd(hour, datediff(hour, 0, @dt), 0)
Пример прокручивания/вращения массива Array K раз на C#
public static void Rotate(int[] nums, int k) {
int len = nums.Length;
int cnt = k%len;
if ((len<2)||(cnt==0)){return;}
int x = 0;
int val = nums[x];
int val_prev = nums[x];
int x_start = x;
for (int i = 0; i<len;i++)
{
x = x+cnt<len?x+cnt:(x+cnt)%len;
val_prev = nums[x];
nums[x] = val;
if (x_start == x)
{
x++;
val = nums[x];
x_start = x;
}
else
{
val = val_prev;
}
}
}
Смысл на примере:
Есть массив: [1,2,3,4,5]
Проворачиваем его 3 раза: K=3.
Результат:
[3,4,5,1,2]
В предыдущей части (Руководство по Python Bottle (Перевод) Часть 5 — Request Data (данные в запросе)) мы рассмотрели основные аспекты относящиеся к передаваемым данным в запросах, в этой части мы вкратце рассмотрим использование шаблонов.
Bottle имеет быстрый и мощный встроенный механизм шаблонов, который называется SimpleTemplate Engine. Для рендеринга шаблона вы можете использовать функцию template() или декоратор view(). Все, что вам нужно сделать, это предоставить имя шаблона и переменные, которые вы хотите передать шаблону в качестве аргументов. Вот простой пример того, как обратиться к шаблону:
@route('/hello')
@route('/hello/<name>')
def hello(name='World'):
return template('hello_template', name=name)
Данный код загрузит файл шаблона hello_template.tpl и отобразит его с установленной переменной name. Bottle будет искать шаблоны в папке ./views/ или в любой папке, указанной в списке bottle.TEMPLATE_PATH.
В предыдущей части (Руководство по Python Bottle (Перевод) Часть 4 — Создание контента) мы рассмотрели основные аспекты относящиеся к передаваемому контенту, в этой части мы рассмотрим данные передаваемые в запросах.
Файлы Cookie, HTTP-заголовки, поля HTML форм и другие данные запроса доступны через глобальный объект request. Этот специальный объект всегда ссылается на текущий запрос, даже в многопоточных средах, где одновременно обрабатываются сразу несколько клиентских подключений:
from bottle import request, route, template
@route('/hello')
def hello():
name = request.cookies.username or 'Guest'
return template('Привет {{name}}', name=name)
Объект request является подклассом от BaseRequest и имеет очень богатый API для доступа к данным. Здесь будут рассмотрены только наиболее часто используемые функции, этого должно быть достаточно для начала.
В предыдущей части (Руководство по Python Bottle (Перевод) Часть 3 — Маршрутизация запросов) мы рассмотрели основные аспекты касающиеся маршрутизации запросов, в этой части будут рассмотрены аспекты относящиеся к передаваемому контенту.
В чистом стандарте WSGI диапазон возвращаемых из приложения типов очень ограничен. Приложения должны возвращать строки с возможностью разбиения их на набор байт. Можно вернуть строку (разбив её на части), но большинство серверов это заставляет передавать контент символ за символом. Строки в Unicode не допускаются вообще. Это не очень практично.
Bottle гораздо более гибок и поддерживает широкий спектр типов. Он автоматически добавляет заголовок Content-Length, когда это возможно, и автоматически кодирует Unicode, что облегчает работу разработчика. Ниже приведен список типов данных, которые могут быть возвращены из приложения, и краткое описание того, как они обрабатываются платформой:
В предыдущей части (Руководство по Python Bottle (Перевод) Часть 2 — Hello World) мы создали простое Web приложение, с одним единственным маршрутом, вот та часть кода с маршрутизацией из примера «Hello World»:
@route('/hello')
def hello():
return "Hello World!"
В этом примере декоратор route() связывает URL путь с вызываемой функцией, и добавляет новый маршрут.
Теперь давайте добавим ещё один маршрут:
@route('/')
@route('/hello/<name>')
def greet(name='Незнакомец'):
return template('Здравствуй {{name}}, как дела?', name=name)
(Не забываем ипортировать необходимые библиотеки: from bottle import template)
Данный пример демонстрирует сразу две важные вещи: Вы можете привязывать более одного маршрута к одной вызываемой функции, и вы можете добавлять шаблоны URL адресов и получать доступ к параметрам по ключевым словам.
Ниже приведен пример корректного отмена транзакции при ошибке:
update Params set Value=168 where Param = 'SessionHoursLimit'
PRINT @@TRANCOUNT
BEGIN TRY
BEGIN TRAN
PRINT @@TRANCOUNT
update Params set Value=167 where Param = 'SessionHoursLimit'
select 1/0 -- Если закомментировать эту строку то предыдущая строка выполнится
COMMIT TRAN
END TRY
BEGIN CATCH
if @@TRANCOUNT>0
ROLLBACK TRAN
END CATCH
PRINT @@TRANCOUNT
select * from Params
Если закомментировать строку с ошибочным оператором SELECT 1/0 то предшествующая строка будет выполнена и транзакция успешно завершится, если оставить строку SELECT 1/0 то транзакция отменится полностью, и параметр Value останется таким, каким он был установлен в первой строке скрипта до начала транзакции.
Пример:
using System;
using Newtonsoft.Json;
using System.Xml.Linq;
namespace ConsoleAppTest
{
class Program
{
static void Main(string[] args)
{
string xml = @"<response><user>Roman</user><status>Active</status></response>";
XDocument doc = XDocument.Parse(xml);
string jsn = JsonConvert.SerializeXNode(doc);
dynamic response = JsonConvert.DeserializeObject(jsn);
Console.WriteLine(response.response.status);
Console.WriteLine(response.response.user);
Console.ReadKey();
}
}
}