Permalink
Browse files

Add lecture 09

  • Loading branch information...
1 parent 23a4bbf commit 25b7eaff55701e415455d41776a05f96110fd07e @nb nb committed Apr 9, 2013
Showing with 73 additions and 0 deletions.
  1. +68 −0 lectures/09-task-02-solution.lecture
  2. +5 −0 lectures/index.yml
@@ -0,0 +1,68 @@
+= Днес
+
+* Примерно решение
+* Грешки
+
+= Резултати
+
+* Малко точки
+* Много хора с 0 точки
+* Лесни тестове (`[0 0]` хваща много :-))
+* Само двама с всички тестове
+
+= Примерен тест
+== Пускайте си примерния тест
+
+*Пускайте си примерния тест*
+*Пускайте си примерния тест*
+*Пускайте си примерния тест*
+*Пускайте си примерния тест*
+*Пускайте си примерния тест*
+*Пускайте си примерния тест*
+
+= Последни три, първи три
+
+* Просто `take` няма да свърши работа, ако има само два то връща тях
+* `rvec` за намиране на последните три елемента е малко повече
+* `take-last`
+* Не трябва да сравнявате един вектор със себе си
+* `=` vs. `identical?` – няма нужда от `=` ако обектът ще е същия
+
+= Средно-аритметично
+
+* В програмите имате на много места `reduce +`. Един `sum`?
+* Няма нужда от quote на празния списък, `()` е достатъчно
+* Празна поредица? `seq` върши идеална работа
+* `juxt`
+* `_helper` не помага много да разберем какво прави
+
+= Комутативно фибоначи
+
+* `not-any?` е ваш приятел
+* Няма нужда от вложени `for`-ове, един стига: `(for [a (range) b (range)]…)`
+
+= Уф
+
+* Брой цифри: логаритъм – трябва да внимаваме с отрицателни числа
+* Брой цифри: `(str n)` – трябва да внимаваме с отрицателни числа
+
+= Двойка мързеливци
+
+* За всяка двойка
+* Има и вариант на триъгълник, за да не изцикляме първо цялата една поредица, а последователно от едната и от другата, но е доста бавно.
+
+= Как да четем код
+
++ Най-често по-важните функции са отдолу, защото трябва да сме декларирали функция, за да я ползваме.
++ В една по-дълга функция, най-лесно е да прочетем първо тялото и само ако се нещо не ни е ясно да се качим нагоре до `let`, `letfn` дефинициите.
++ За много от функциите от по-висок ред четем първо функцията, след това прескачаме предиката, четем списъка и чак тогава се връщаме на предиката:
+
+:code
+ (remove nil? users)
+
+Това ще бъде прочетено като „премахни всички потребители, които са `nil`“. Така е много по-лесно, отколкото да се опитаме да фо прочетем по ред: „премахни ниловите потребители“, „премахни никаквите потребители“ или „премахни нилихистичните потребители“.
+
+= github/clojure-examples
+
+[github.com/fmi/clojure-examples](https://github.com/fmi/clojure-examples)
+
View
@@ -34,3 +34,8 @@
title: 08. Референтни типове, част 2
date: 2013-03-28
slug: 08-referential-types-2
+'9':
+ title: 09. Решение на втора задача
+ date: 2013-04-04
+ slug: 09-task-02-solution
+

0 comments on commit 25b7eaf

Please sign in to comment.