Можно ли установить главных героев, не читая произведение "Война и мир"?
Да, надо выдать частоту встречаемости имен.
Мы видим, что наиболее часто встречаются имена собственные Андрей, Ростов, Пьер и Анна.
Добро пожаловать в официальный канал PascalABC.NET! Здесь вы найдете все необходимые сведения о языке и системе программирования PascalABC.NET. Этот канал предназначен для всех, кто интересуется программированием на языке PascalABC.NET, независимо от уровня опыта
PascalABC.NET - это мощный инструмент для разработки программ на языке Pascal. Он позволяет создавать разнообразные приложения, от простых консольных программ до сложных многофункциональных приложений. Благодаря своей простоте и понятности, PascalABC.NET подходит как для начинающих программистов, так и для опытных специалистов
В нашем канале вы сможете находить информацию о последних обновлениях языка и системы, участвовать в обсуждениях с другими участниками, делиться своим опытом и задавать вопросы. Мы также предоставляем различные обучающие материалы, чтобы помочь вам освоить все возможности PascalABC.NET
Присоединяйтесь к нашему каналу и станьте частью активного сообщества программистов, увлеченных разработкой на языке PascalABC.NET. Независимо от того, хотите ли вы узнать о новых функциях языка, найти ответы на свои вопросы или просто общаться с единомышленниками, здесь вы найдете все, что вам нужно для успешного программирования на PascalABC.NET!
27 Jan, 08:11
23 Jan, 04:38
// 6.0 sec PascalABC.NET vs 11.4 sec Python
begin
var mx := 0;
for var n := 4 to 9999 do
begin
var s: faststring := '4' + '1' * n;
while ('411' in s) or ('1111' in s) do
s.Replace('411', '14', 1)
.Replace('1111', '1', 1);
mx := max(mx, s.ToString.Sum(d -> d.todigit));
end;
print(mx, Milliseconds / 1000);
end.
19 Jan, 04:29
type
Edge = auto class
start, &end: char;
cost: real;
end;
Graph = auto class
edges: array of Edge;
vertices: HashSet<char>;
constructor(params edges: array of (char, char, real));
begin
Self.edges := edges.Select(e -> new Edge(e[0], e[1], e[2])).ToArray;
Self.vertices := new HashSet<char>(
Self.edges.Select(e -> e.start) + Self.edges.Select(e -> e.end)
);
end;
function Dijkstra(source, dest: char): sequence of char;
begin
assert(vertices.Contains(source));
var inf := real.MaxValue;
var dist := Dict(vertices.Select(v -> (v, inf)));
var previous := Dict(vertices.Select(v -> (v, ' ')));
dist[source] := 0;
var q := vertices.ToHashSet;
var neighbours := Dict(vertices.Select(v -> (v, new HashSet<(char, real)>)));
foreach var edge in edges do
begin
neighbours[edge.start].Add((edge.end, edge.cost));
neighbours[edge.end].Add((edge.start, edge.cost));
end;
while q.Count > 0 do
begin
var u := q.MinBy(v -> dist[v]);
q.Remove(u);
if (dist[u] = inf) or (u = dest) then
break;
foreach var (v, cost) in neighbours[u] do
begin
var alt := dist[u] + cost;
if alt < dist[v] then
begin
dist[v] := alt;
previous[v] := u;
end;
end;
end;
var s := new List<char>;
var u := dest;
while previous[u] <> ' ' do
begin
s.Insert(0, u);
u := previous[u];
end;
s.Insert(0, u);
Result := s;
end;
end;
begin
var gr := new Graph(
('a', 'b', 7.0), ('a', 'c', 9.0), ('a', 'f', 14.0),
('b', 'c', 10.0), ('b', 'd', 15.0), ('c', 'd', 11.0),
('c', 'f', 2.0), ('d', 'e', 6.0), ('e', 'f', 9.0)
);
gr.Dijkstra('a', 'e').Println; // Результат: ['a', 'c', 'f', 'e']
end.
16 Jan, 05:25
type
Farenheit = class;
Celsius = auto class
value: real;
public
constructor (v: real) := value := v;
static function operator implicit(c: Celsius): Farenheit;
function ToString: string; override
:= $'{value}°C';
end;
Farenheit = auto class
value: real;
public
constructor (v: real) := value := v;
static function operator implicit(f: Farenheit): Celsius;
function ToString: string; override
:= $'{value}°F';
end;
static function Celsius.operator implicit
(c: Celsius): Farenheit
:= new Farenheit(c.value * 9 / 5 + 32);
static function Farenheit.operator implicit
(f: Farenheit): Celsius
:= new Celsius((f.value - 32) * 5 / 9);
begin
var c := new Celsius(25);
var f: Farenheit := c; // Неявное преобразование из Цельсия в Фаренгейт
Println($'Температура: {c} = {f}');
var f2 := new Farenheit(77);
var c2: Celsius := f2; // Неявное преобразование из Фаренгейта в Цельсий
Println($'Температура: {f2} = {c2}');
end.
15 Jan, 04:14
14 Jan, 05:13
08 Jan, 20:24
08 Jan, 07:34
06 Jan, 04:28
in
, срезы, индексация с конца. to
для создания пар "ключ-значение" — лаконичные инструменты для работы с данными.[1,2,3]
.31 Dec, 15:49
##
Arr(1..9).Select(x -> x * x * x).Sum.Println;
Arr(1..9).Sum.Sqr.Println;
'2025'.Batch(2).Select(x -> x[0]+x[1])
.Select(x -> x.ToInteger).Sum.Sqr.Println;
Seq(1,8,8,10).Select(x -> x ** 3)
.Sum.Round.Println;
(2026..2029).Zip([4,-6,4,-1]
,(x,y) -> x * y).Sum.Println;
(2026..2029).Select(x -> x*x)
.Zip([4,-6,4,-1],(x,y) -> x * y)
.Sum.Sqrt.Round.Println;
(2021..2024).Reverse
.Zip([4,-6,4,-1],(x,y) -> x * y).Sum.Println;
(2021..2024).Reverse.Select(x -> x*x)
.Zip([4,-6,4,-1],(x,y) -> x * y)
.Sum.Sqrt.Round.Println;
2025
2025
2025
2025
2025
2025
2025
2025
29 Dec, 07:32
28 Dec, 04:50
27 Dec, 04:46
function RootsOfUnity(n: integer)
:= (0..n-1).Select(x -> Complex.FromPolarCoordinates(1, 2 * PI * x / n));
begin
RootsOfUnity(3).PrintLines
end.
1+0i
-0.5+0.866025403784439i
-0.5-0.866025403784438i
26 Dec, 04:37
25 Dec, 04:35
24 Dec, 04:45
21 Dec, 04:31
19 Dec, 04:15
17 Dec, 04:06
15 Dec, 04:29
type Observation = auto class
X, Y: real;
end;
begin
// Исходные наблюдения
var observations := Seq(new Observation(0, 0), new Observation(1, 1), new Observation(3, 4), new Observation(6, 8));
// Вычисление разницы координат
var deltas := observations.Zip(observations.Skip(1),
(a, b) -> new class(DX := b.X - a.X, DY := b.Y - a.Y));
deltas.Println; // Вывод результата
end.
Name
, Age
и Salary
.type Employee = auto class
Name: string;
Age: integer;
end;
type Salary = auto class
Amount: real;
end;
begin
// Списки сотрудников и зарплат
var employees := Seq(new Employee('Alice', 25), new Employee('Bob', 30), new Employee('Charlie', 35));
var salaries := Seq(new Salary(2000.0), new Salary(2500.0), new Salary(3000.0));
// Объединение данных
var employeeData := employees.Zip(salaries,
(e, s) -> new class(e.Name, e.Age, Salary := s.Amount));
employeeData.Println; // Вывод результата
end.
ProductName
, Q1Sales
, Q2Sales
и Difference
.type Sale = auto class
ProductName: string;
Quantity: integer;
end;
begin
// Продажи за два квартала
var q1Sales := Seq(new Sale('ProductA', 100), new Sale('ProductB', 200), new Sale('ProductC', 150));
var q2Sales := Seq(new Sale('ProductA', 120), new Sale('ProductB', 180), new Sale('ProductC', 160));
// Объединение данных и вычисление разницы
var summary := q1Sales.Zip(q2Sales,
(q1, q2) -> new class(q1.ProductName, Q1Sales := q1.Quantity, Q2Sales := q2.Quantity, Difference := q2.Quantity - q1.Quantity));
summary.Println; // Вывод результата
end.
type Rating = auto class
ProductName: string;
Score: integer;
end;
begin
// Рейтинги от двух покупателей
var ratings1 := Seq(new Rating('ProductA', 5), new Rating('ProductB', 3), new Rating('ProductC', 4));
var ratings2 := Seq(new Rating('ProductA', 4), new Rating('ProductB', 5), new Rating('ProductC', 3));
// Объединение данных и вычисление разницы
var differences := ratings1.Zip(ratings2,
(r1, r2) -> new class(r1.ProductName, Score1 := r1.Score, Score2 := r2.Score, Difference := r1.Score - r2.Score));
differences.Println; // Вывод результата
end.
type Measurement = auto class
Time: integer;
Value: real;
end;
begin
// Измерения в два момента времени
var measurements1 := Seq(new Measurement(0, 1.0), new Measurement(1, 2.5), new Measurement(2, 3.7));
var measurements2 := Seq(new Measurement(0, 1.2), new Measurement(1, 2.4), new Measurement(2, 3.8));
// Разница между измерениями
var trends := Zip(measurements1, measurements2,
(m1, m2) -> new class(m1.Time, Difference := m2.Value - m1.Value));
trends.Println; // Вывод результата
end.
11 Dec, 04:01
07 Dec, 09:58
06 Dec, 05:26
(consider,[рассматривать,учитывать])
(proposal,[предложение,заявка])
(affect,[влиять,затрагивать])
(suggest,[предлагать,советовать,означать])
28 Nov, 14:14
{$DisableStandardUnits}
library LibA;
type
My = class
i,j: integer;
end;
function Add(a,b: integer) := a + b;
end.
27 Nov, 04:30
uses Coords;
begin
Globals.PointRadius := 2.3;
Globals.LineWidth := 1.0;
var p1 := Pnt(2,3);
var p2 := Pnt(-4,7.3);
var p3 := Pnt(-5,-3);
DrawPoint(p1);
DrawPoint(p2);
DrawPoint(p3);
DrawText(p1,'A', Align := Alignment.LeftBottom, Size := 18);
DrawText(p2,'B', Align := Alignment.LeftBottom, Size := 18);
DrawText(p3,'C', Align := Alignment.RightTop, Size := 18);
DrawLine(p1,p2);
DrawLine(p1,p3);
DrawLine(p2,p3);
DrawText(Middle(p1,p2), p1.Distance(p2).ToString(2), Align := Alignment.Center, BackgroundColor := Colors.LightBlue);
DrawText(Middle(p2,p3), p2.Distance(p3).ToString(2), Align := Alignment.Center,
BackgroundColor := Colors.White, BorderWidth := 0.5);
DrawText(Middle(p1,p3), p1.Distance(p3).ToString(2), Align := Alignment.Center, BackgroundColor := Colors.LightGreen);
end.
24 Nov, 04:03
var a := Arr(1, 2, 3, 4, 5, 6);
foreach var group in a.NWise(3) do
Println(group);
// Результат: [1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]
var temperatures := Arr(22.1, 23.4, 21.8, 24.2, 22.9, 23.7);
foreach var window in temperatures.NWise(3) do
Println(window.Average.Round(4));
// Результат: 22.4333, 23.1333, 22.9667, 23.6
var consumption := Arr(120, 180, 150, 200, 260, 220);
foreach var window in consumption.NWise(2) do
if Abs(window[1] - window[0]) > 50 then
Println(window);
// Результат: [120, 180], [200, 260]
var windSpeeds := Arr(5, 8, 6, 10, 12, 9, 7);
foreach var window in windSpeeds.NWise(3) do
Println(window.Max);
// Результат: 8, 10, 12, 12, 12
var requests := Arr(50, 60, 70, 80, 90, 100, 110);
foreach var window in requests.NWise(4) do
Println(window.Sum);
// Результат: 260, 300, 340, 380
var exchangeRates := Arr(74.5, 74.6, 74.8, 74.7, 74.5, 74.4, 74.6);
foreach var window in exchangeRates.NWise(3) do
if window.Max - window.Min <= 1 then
Println(window);
// Результат: [74.6, 74.8, 74.7], [74.5, 74.4, 74.6]
var sales := Arr(100, 120, 140, 130, 150, 160, 170);
foreach var window in sales.NWise(3) do
if (window[0] < window[1]) and (window[1] < window[2]) then
Println(window);
// Результат: [100, 120, 140], [130, 150, 160], [150, 160, 170]
23 Nov, 06:26
22 Nov, 04:01
begin
var s: set of integer;
var n := 10000000;
for var i:=1 to n do
s += [i];
Print(MillisecondsDelta);
end.
20 Nov, 04:44
type
[Serializable]
Node = auto class
Data: string; Yes, No: Node;
end;
const FName = 'animals.dat';
begin
var root: Node;
Println('Загадайте животное');
if not FileExists(FName) then
root := new Node('Собака', nil, nil)
else root := Node(Deserialize(FName));
var cur := root;
while cur.Yes <> nil do
if ReadlnInteger(cur.Data + '? (0-Нет, 1-Да):') = 1 then
cur := cur.Yes else cur := cur.No;
if ReadlnInteger('Это ' + cur.Data + '? (0-Нет, 1-Да):') = 1 then
Println('Я угадала!')
else
begin
var newA := ReadlnString('Я проиграла. Какое животное вы загадали?');
var quest := ReadlnString('Введите вопрос для отличия ' +
newA + ' от ' + cur.Data + ':');
cur.Yes := new Node(newA, nil, nil);
cur.No := new Node(cur.Data, nil, nil);
cur.Data := quest;
end;
Serialize(FName, root);
end.
17 Nov, 04:44
begin
var a := MatrRandom(3,4,0,2); // Создаём случайную матрицу 3x4 с элементами от 0 до 2
a.Println(3); // Выводим матрицу в удобном формате
a.Indices(x -> x = 0).Println; // Находим индексы всех нулей в матрице
a.Indices(x -> x = 0).ForEach(\(i,j) -> (a[i,j] := 99)); // Заменяем все нули на 99
a.Println(3); // Выводим обновлённую матрицу
end.
15 Nov, 04:53
function SieveOfEratosthenes(n: integer): array of integer;
begin
var isPrime := |True| * (n + 1);
isPrime[0] := False;
isPrime[1] := False;
for var i := 2 to Trunc(Sqrt(n)) do
if isPrime[i] then
for var j := i * i to n step i do
isPrime[j] := False;
Result := (2..n).Where(i -> isPrime[i]).ToArray;
end;
begin
var n := 50;
var primes := SieveOfEratosthenes(n);
Println('Простые числа до ', n, ': ', primes);
end.
11 Nov, 04:05
begin
// LordOfTheRings
var sentences := ReadAllText('HarryPotter.txt').ToWords('.?!');
var lst := new List<string>;
foreach var sentence in sentences do
begin
var words := sentence.ToWords(AllDelimiters);
if words.Length = 0 then
continue;
if words[0][1].IsLower then
continue;
lst.Add(words[0]);
end;
lst.EachCount.OrderByDescending(kvp -> kvp.Value).Take(30).Print;
end.
08 Nov, 10:10
begin
var a := MatrRandomInteger(3,4,1,9);
a.Println;
a := MatrByCol(a.Cols.OrderBy(col -> col.Sum));
a.Println;
end.
import numpy as np
a = np.random.randint(0, 100, (3, 4))
print(a)
sorted_indices = np.argsort(a.sum(axis=0))
sorted_matrix = a[:, sorted_indices]
print(sorted_matrix)
05 Nov, 06:40
begin
var items := |('яблоко','фрукт'), ('помидор','овощ'), ('банан','фрукт')
, ('морковь','овощ'), ('арбуз','ягода')|;
var grouped := new Dictionary<string, List<string>>;
foreach var (item,category) in items do
begin
if category not in grouped then
grouped[category] := new List<string>;
grouped[category].Add(item)
end;
grouped.PrintLines;
end.
фрукт: яблоко, банан
овощ: помидор, морковь
ягода: арбуз
03 Nov, 04:04
begin
var a := ReadAllText('LordOfTheRings.txt').ToLower.ToWords(AllDelimiters)
.Where(w -> w[1] in 'а'..'я');
for var i:=2 to 10 do
a.Where(w -> w.Length = i)
.EachCount
.OrderByDescending(kv -> kv.Value).Take(5).Println;
end.
31 Oct, 04:59
var a := Arr(1, 2, 3, 4, 5);
var squares := a.Select(x -> x * x); // Числа преобразуются в их квадраты
a := squares.ToArray; // Результат можно присвоить тому же массиву
Println(squares); // Вывод: [1, 4, 9, 16, 25]
var a := Arr(1, 2, 3, 4, 5);
var strValues := a.Select(x -> x.ToString); // Числа преобразуются в строки
Println(strValues); // Вывод: ['1', '2', '3', '4', '5']
var a := Arr(1, 2, 3, 4, 5, 6);
var evenNumbers := a.Where(x -> x mod 2 = 0); // Отбираются только чётные числа
Println(evenNumbers); // Вывод: [2, 4, 6]
var items := Arr(('apple', 1.5), ('banana', 1.2), ('cherry', 0.9));
var fruitNames := items.Select(x -> x[0]); // Извлекается только название фрукта
Println(fruitNames); // Вывод: ['apple', 'banana', 'cherry']
26 Oct, 10:05
uses Newtonsoft.Json.Linq;
begin
// Считываем содержимое JSON из файла
var jsonString := ReadAllText('data.json');
// Разбор JSON-строки в объект JObject
var jsonObject := JObject.Parse(jsonString);
// Доступ к верхнему уровню объекта "человек"
var person := jsonObject['человек'];
// Извлечение простых значений
var name := person['имя'].ToString;
var age := person['возраст'].ToObject&<integer>;
var isStudent := person['являетсяСтудентом'].ToObject&<boolean>;
// Доступ к вложенному объекту "контакты"
var contacts := person['контакты'];
var email := contacts['электроннаяПочта'].ToString;
var phone := contacts['телефон'].ToString;
// Доступ к массиву "хобби"
var hobbies := person['хобби'];
var hobbyList := hobbies.ToObject&<array of string>;
// Вывод извлеченных данных с ручным выравниванием
Println($'Имя: {name}');
Println($'Возраст: {age}');
Println($'Является студентом: {isStudent}');
Println($'Электронная почта: {email}');
Println($'Телефон: {phone}');
// Объединение элементов массива хобби в строку и вывод
Println($'Хобби: {hobbyList.JoinToString('', '')}');
end.
{
"человек": {
"имя": "Иван",
"возраст": 30,
"являетсяСтудентом": false,
"контакты": {
"электроннаяПочта": "[email protected]",
"телефон": "123-456-7890"
},
"хобби": ["чтение", "путешествия", "плавание"]
}
}
23 Oct, 04:17
var a := new integer[5]; // Создаём массив
var b := a; // b ссылается на тот же массив,что и a
b[0] := 10; // Теперь и a[0], и b[0] равны 10
var a := new integer[5]; // Создаём массив
var b := Copy(a); // b — это копия массива a
b[0] := 10; // Изменение b не затрагивает a
var a, b: array of integer;
a := new integer[5];
b := new integer[5];
if a = b then // это сравнение вернёт False
Println('Массивы равны')
else
Println('Массивы не равны');
var a := new integer[5];
var b := new integer[5];
if a.ArrEqual(b) then // Проверяет равенство всех элементов массива
Println('Массивы равны')
else
Println('Массивы не равны');
20 Oct, 09:00
18 Oct, 04:48
procedure SortByChoice(a: array of integer);
begin
var n := a.Length;
for var i := 0 to a.Length - 2 do
begin
var imin := i;
for var j := i + 1 to n - 1 do
if a[j] < a[imin] then
imin := j;
if imin <> i then
Swap(a[imin], a[i]);
end;
end;
17 Oct, 04:58
begin
var arr := ArrRandomInteger(10);
var min1, min2 := (MaxInt, MaxInt);
foreach var x in arr do
if x < min1 then
(min1, min2) := (x, min1)
else if x < min2 then
min2 := x;
Println('Сгенерированный массив: ', arr);
Println('Первый минимум: ', min1);
Println('Второй минимум: ', min2);
end.
begin
var arr := ArrRandomInteger(10);
var min1 := arr.Min();
var min2 := arr.Where(x -> x <> min1).Min();
Println('Сгенерированный массив: ', arr);
Println('Первый минимум: ', min1);
Println('Второй минимум: ', min2);
end.
16 Oct, 04:18
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target xsi:type="File" name="logfile" fileName="log.txt" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
</nlog>
{$reference 'NLog.dll'}
uses NLog;
begin
// Инициализация логгера
LogManager.LoadConfiguration('nlog.config');
var log := LogManager.GetCurrentClassLogger;
// Запись логов
log.Info('Программа запущена');
try
var a := 10;
var b := 0;
var c := a div b; // Это вызовет исключение
except
on e: Exception do
log.Error('Ошибка: ' + e.Message);
end;
log.Info('Программа завершена');
end.
15 Oct, 07:10
14 Oct, 04:22
11 Oct, 04:09
10 Oct, 07:19
08 Oct, 11:28
06 Oct, 04:00
05 Oct, 08:53
uses Turtle;
procedure Koch(sz: real; n: integer);
begin
if n = 0 then
Forw(sz)
else begin
Koch(sz/3,n-1); Turn(-60);
Koch(sz/3,n-1); Turn(120);
Koch(sz/3,n-1); Turn(-60);
Koch(sz/3,n-1);
end;
end;
begin
Window.Title := 'Снежинка Коха';
Turn(90);
Forw(-10);
Down;
Koch(20,5);
end.
04 Oct, 05:30
03 Oct, 05:49
function f(x: real) := exp(x) - 4;
function df(x: real) := exp(x); // Производная f'(x) = exp(x)
function NewtonMethod(x, eps: real): real;
begin
while abs(f(x)) > eps do
x := x - f(x) / df(x);
Result := x;
end;
begin
var x := 0.5; // Начальное приближение
var eps := 0.00001;
var root := NewtonMethod(x, eps);
Println('Корень уравнения: ', root);
end.
02 Oct, 06:07
function f(x: real) := exp(x) - 4;
function BisectionMethod(a, b, eps: real): real;
begin
var fa := f(a); // Вычисляем f(a) один раз в начале
while Abs(b - a) > eps do
begin
var c := (a + b) / 2;
var fc := f(c);
if fc = 0 then
break;
if fa * fc < 0 then
b := c
else
(a, fa) := (c, fc);
end;
Result := (a + b) / 2;
end;
begin
var (a, b) := (0.0, 3.0);
var eps := 0.000001;
var root := BisectionMethod(a, b, eps);
Println('Корень уравнения:', root);
end.
01 Oct, 04:38
type
SortedMultiset<T> = class(IEnumerable<T>)
private
data: SortedDictionary<T, integer>; // Храним элемент и количество его вхождений
public
// Конструктор
constructor Create;
begin
data := new SortedDictionary<T, integer>();
end;
// Метод добавления элемента
procedure Add(x: T);
begin
if data.ContainsKey(x) then
data[x] := data[x] + 1 // Увеличиваем количество вхождений
else
data.Add(x, 1); // Добавляем новый элемент с количеством 1
end;
// Метод удаления элемента
function Remove(x: T): boolean;
begin
if data.ContainsKey(x) then
begin
if data[x] > 1 then
data[x] := data[x] - 1 // Уменьшаем количество вхождений
else
data.Remove(x); // Удаляем элемент, если это последнее вхождение
Result := true;
end
else
Result := false;
end;
// Метод получения количества вхождений элемента
function Count(x: T): integer;
begin
if data.ContainsKey(x) then
Result := data[x]
else
Result := 0;
end;
// Метод для получения минимального элемента
function Min: T;
begin
if data.Count = 0 then
raise new System.InvalidOperationException('Мультимножество пусто.');
Result := data.Keys.First(); // Первый элемент в отсортированном множестве
end;
// Метод для получения максимального элемента
function Max: T;
begin
if data.Count = 0 then
raise new System.InvalidOperationException('Мультимножество пусто.');
Result := data.Keys.Last(); // Последний элемент в отсортированном множестве
end;
// Метод для получения всех элементов множества
function GetElements: sequence of T;
begin
foreach var key in data.Keys do
for var i := 1 to data[key] do
yield key;
end;
// Реализация интерфейса IEnumerable<T>
function GetEnumerator: IEnumerator<T>;
begin
Result := GetElements().GetEnumerator();
end;
function System.Collections.IEnumerable.GetEnumerator: System.Collections.IEnumerator;
begin
Result := GetElements().GetEnumerator();
end;
// Метод для вывода множества
procedure Print;
begin
foreach var e in self do
Write(e, ' ');
Writeln;
end;
end;
// Пример использования
begin
var multiset := new SortedMultiset<integer>();
multiset.Add(5);
multiset.Add(3);
multiset.Add(5);
multiset.Add(2);
multiset.Print(); // Вывод: 2 3 5 5
multiset.Remove(5);
multiset.Print(); // Вывод: 2 3 5
Writeln('Min: ', multiset.Min); // Вывод: Min: 2
Writeln('Max: ', multiset.Max); // Вывод: Max: 5
Writeln('Количество 5: ', multiset.Count(5)); // Вывод: Количество 5: 1
multiset.Println;
end.
27 Sep, 04:50
26 Sep, 04:16
25 Sep, 06:48
uses GraphWPF;
begin
Circle(200,200,100,Colors.LightBlue);
Window.SaveToClipboard;
end.
24 Sep, 09:08
uses Coords;
function GenerateCluster(X, Y, spread: real; count: integer): array of Point;
begin
Result := ArrGen(count, i -> new Point(
RandomReal(X - spread / 2, X + spread / 2),
RandomReal(Y - spread / 2, Y + spread / 2)
));
end;
begin
Window.Title := 'Генерация кластеров';
var cluster1 := GenerateCluster(5, 3, 5, 90);
var cluster2 := GenerateCluster(7, -6, 4, 105);
var cluster3 := GenerateCluster(-7, 2, 6, 44);
DrawPoints(cluster1,3);
DrawPoints(cluster2,3);
DrawPoints(cluster3,PointRadius := 3);
end.
23 Sep, 09:47
23 Sep, 09:47
20 Sep, 04:12
uses System.Net;
begin
var url := 'https://yandex.ru';
var client := new WebClient;
try
var content := client.DownloadString(url);
Println(content[:1000]);
except
on e: Exception do
Println('Ошибка при загрузке данных:', e.Message);
end;
end.