Skip to content

Instantly share code, notes, and snippets.

@disolovyov
disolovyov / _readme.md
Created October 15, 2011 22:18
Объектно-ориентированное программирование. Лабораторная работа 2.

Вариант 1

  • На 6: Заставить мух равномерно вращаться в полёте.
  • На 7: Заставить мух циклически и плавно увеличиваться и уменьшаться.
  • На 8: Сделать муху, которая при наведении на неё курсора «отползает» в привычном направлении, а иначе стоит на месте.

Вариант 2

  • На 8: Согласовать направление движения мухи с её углом наклона. Иными
@disolovyov
disolovyov / _readme.md
Created October 18, 2011 23:37
Функционально-логическое программирование. Лабораторная работа 2.

Постановка

Ниже приведена программа на Прологе, реализующая REPL-подобную среду для работы со списками.

process(Input) :-
    write('> '),
    read(Command),
 perform(Command,Input,Output),
@disolovyov
disolovyov / js_in_depth.md
Created October 23, 2011 14:30
Курсы JavaScript от AssistUnion
  1. Типы данных в JavaScript (2 часа)
  • Простые типы, объекты и массивы
  • Приведение типов
  • Виды доступа к полям объектов
  • Особенности поведения массивов
  • Концепция прототипа
  • Итерация по внутренней структуре объекта
  1. Функциональные аспекты JavaScript (2 часа)
  • Функциональные объекты
  • Анонимные функции
@disolovyov
disolovyov / 8-rbt.pl
Created November 2, 2011 07:48
Функционально-логическое программирование. Лабораторная работа 3.
% балансировка красно-чёрного поддерева
% (объясняется графически)
balance(T,tr(red,B,tr(black,A,T1,T2),tr(black,C,T3,T4))) :-
T=tr(black,A,T1,tr(red,B,T2,tr(red,C,T3,T4))),!;
T=tr(black,C,tr(red,B,tr(red,A,T1,T2),T3,T4)),!;
T=tr(black,A,T1,tr(red,C,tr(red,B,T2,T3),T4)),!;
T=tr(black,C,tr(red,A,T1,tr(red,B,T2,T3)),T4),!.
balance(T,T).
% вставка узла в красно-чёрное дерево
@disolovyov
disolovyov / .gitattributes
Created November 14, 2011 23:28
Объектно-ориентированное программирование. Лабораторная работа 3.
*.zip -crlf -diff
@disolovyov
disolovyov / wanted.md
Created March 12, 2012 13:09
Lonely startup developers seeking programming partners

Hi, we are Livesheets, a startup based in London and Riga. We need an extra hand, so we're looking for additions to the team.

That's where you come in.

Livesheets is about building a brand new (patent pending) way of creating, sharing, and selling calculations. Our application enables casual users to turn a simple formula into an interactive mathematical model, play with its parts in real time, and visualize the result with style.

@disolovyov
disolovyov / fp_recursion.md
Created May 23, 2012 19:13
FP: Recursion - Homework

Recursion

Getting recursion involves trying recusion. Make your own implementations of standard Haskell functions you've seen and used before, namely: minimum, reverse, sum, product, take, drop, repeat, and cycle.

You can add an apostrophe suffix to the names of your versions of these functions to avoid naming conflicts. E.g. take becomes take'.

Try to implement as many as possible.

@disolovyov
disolovyov / output.txt
Created July 12, 2012 06:01
Coding Dojo 2012-07-11
+
+
+ +
+
+
+ +
+ +
+ +
@disolovyov
disolovyov / read_fallback.hs
Created August 5, 2012 09:15
Read from strings with a fallback on error
{-# LANGUAGE ScopedTypeVariables #-}
fromStr :: Read a => a -> String -> a
fromStr fallback s =
let parsed = reads s :: Read a => [(a, String)]
in case parsed of
[(result, _)] -> result
_ -> fallback
p :: Show a => a -> IO ()
@disolovyov
disolovyov / canvas.hs
Created August 21, 2012 19:29
Panda Canvas 2 prototyping...
import Control.Monad.Writer
import Data.IORef
import Data.List.Zipper (Zipper(..))
import qualified Data.List.Zipper as Zipper
import Graphics.Rendering.OpenGL hiding (flush)
import Graphics.UI.GLUT hiding (flush)
data CanvasAction = PointAction GLfloat GLfloat | FlushAction
type Canvas = Writer [CanvasAction] ()