Спасибо!
Вот пример, который был на лекции 7 в конце, записанный с помощью стандартных функций Dict и KV. Dict конструирует словарь, KV - KeyValuePair.
begin
var graph := Dict(('Rostov',Dict(KV('Moscow',1000),KV('Bataisk',10))),
('Moscow',Dict(KV('Rostov',1000))),
('Bataisk',Dict(KV('Rostov',10)))
);
graph.Println(NewLine);
graph['Rostov']['Moscow'] := 1100;
graph['Moscow']['Rostov'] := 1100;
Println;
graph.Println(NewLine);
end.
Я немного ошибся в примере на лекции - s.Matches возвращает последовательность Match, а не string, поэтому нужен еще один Select чтобы преобразовать его к последовательности строк:
begin
var q := ReadLines('a1.pas').Select(s->s.Matches('\w+')).SelectMany(x->x)
.Select(x->x.Value);
var d := new Dictionary<string,integer>;
foreach var x in q do
if d.ContainsKey(x) then
d[x] := d[x] + 1
else d[x] := 1;
d.OrderByDescending(x->x.Value).Take(10).Print(NewLine);
end.
Используя d.Get, которая возвращает либо значение, соответствующее ключу, либо 0 если ключа нет, можно записать короче:
begin
var q := ReadLines('FreqFile.pas').Select(s->s.Matches('\w+')).SelectMany(x->x)
.Select(x->x.Value);
var d := new Dictionary<string,integer>;
foreach var x in q do
d[x] := d.Get(x) + 1;
d.OrderByDescending(x->x.Value).Take(10).Print(NewLine);
end.
Результат применения к тексту программы таков :
(x,9)
(d,4)
(var,3)
(q,2)
(Select,2)
(s,2)
(Value,2)
(begin,1)
(ReadLines,1)
(FreqFile,1)
Я говорил, что можно поменять источник строк - взять файл в Интернете. Вот, в сети лежит текст Войны и мира, пропустим его через нашу программу:
begin
var w := new System.Net.WebClient();
var ss := w.DownloadString('http://vojnaimir.ru/files/book1.txt');
var q := ss.MatchValues('\w+');
var d := new Dictionary<string,integer>;
foreach var x in q do
d[x] := d.Get(x) + 1;
d.OrderByDescending(x->x.Value).Take(20).Print(NewLine);
end.
Результат:
(и,10137)
(в,4863)
(не,4221)
(что,3652)
(на,3200)
(с,3025)
(он,3017)
(как,1913)
(его,1876)
(к,1778)
(то,1606)
(я,1354)
(она,1195)
(сказал,1145)
(было,1137)
(это,1030)
(за,961)
(так,952)
(но,949)
(ее,897)
Если захотим взять только собственные имена, то поставим фильтр: слово с большой буквы и длины не менее 4:
var q := ss.MatchValues('\w+').Where(s->s[1].IsUpper and (s.Length>3));
Результат:
(Пьер,620)
(Андрей,593)
(Наташа,501)
(Ростов,432)
(Князь,316)
(Николай,241)
(Марья,237)
(Соня,200)
(Пьера,187)
(Анна,184)
(Долохов,156)
(Денисов,154)
(Борис,152)
(Андрея,151)
(Василий,139)
(Анатоль,137)
(Ростова,121)
(Когда,112)
(Элен,110)
(Пьеру,107)
Опубликована Лекция 9. https://youtu.be/AjtBMQ26YPc Объектно-ориентированное программирование - всё, сразу, быстро, сжато, нечётко, с ошибками.
В числе прочих вопросов освещены:
- Как неправильно пишется Барбара Лискоу на английском
- Какие принципы SOLID нарушает нагрузка преподавателя ЮФУ
- Что общего у студента и математической точки
- Почему нас окружают интерфейсы и почему мы их не замечаем в реальной жизни
- Что есть на самом деле sequence of T
Это последняя была?
Да
Все хорошее когда-то заканчивается…
Начинается новый цикл лекций по второй части курса 6.04 и 7.04 с 10.00 до 13.00 в ауд. 206
Видео тоже будет или как выше было написано, “все хорошее” действительно закончилось? ))
Вряд ли “всё хорошее” заключается в наличии видео )
Попробовали писать, пока на планшет. Что получилось, ещё не смотрела. Если запись приемлема, выложу. Обещали камеру ). Хорошо бы ещё штатив
Как ни странно, но для тех, кто не может по той или иной причине присутствовать на Ваших лекциях, “все хорошее” - это именно их видеозапись.
Часть 2. Лекция1 https://youtu.be/-pzmLssBcVE Лекция1. Продолжение https://youtu.be/-pzmLssBcVE
A у меня видео не открывается
Попробую посмотреть, в чем дело. Но позже
Ссылки “не туда”. Сравните их вид со ссылками, которые давал @Admin Ваши ведут к менеджеру для создания канала.
Ссылки исправлю вечером. В связи с тем, что прошла только одна практика, решили лекцию с сегодня перенести на следующий понедельник