Skip to content

Instantly share code, notes, and snippets.

View kachayev's full-sized avatar
🇺🇦
Fighting for freedom

Oleksii Kachaiev kachayev

🇺🇦
Fighting for freedom
View GitHub Profile
@kachayev
kachayev / pingpong.scala
Created February 6, 2013 12:07
Simplest ping-pong example of Scala Actors
import scala.actors.Actor
import scala.actors.Actor._
case object Ping
case object Pong
case object Stop
class Ping(count: Int, pong: Actor) extends Actor {
def act() {
var pingsLeft = count - 1
@kachayev
kachayev / sleep_barber.erl
Last active December 12, 2015 09:19
Solve sleeping barber problem with many barbers and many client generators
%%
%% Solve sleeping barber problem in most general case
%% Task description on Wikipedia:
%% http://en.wikipedia.org/wiki/Sleeping_barber_problem
%%
%% Additions to classic variant:
%% * many barbers
%% * many clients generators with random timeouts between clients
%% * calculation for total served clients
%% * random time for each client to make barber's job
@kachayev
kachayev / sleep_barber_monitor.erl
Created February 11, 2013 16:59
Solve sleeping barber problem with many barbers and many client generators and barber failures (monitor)
%%
%% Solve sleeping barber problem in most general case
%% Task description on Wikipedia:
%% http://en.wikipedia.org/wiki/Sleeping_barber_problem
%%
%% Additions to classic variant:
%% * many barbers
%% * many clients generators with random timeouts between clients
%% * calculation for total served clients
%% * random time for each client to make barber's job
@kachayev
kachayev / sleep_barber_exit.erl
Created February 11, 2013 17:30
Solve sleeping barber problem with many barbers and many client generators and barber failures (exit)
%%
%% Solve sleeping barber problem in most general case
%% Task description on Wikipedia:
%% http://en.wikipedia.org/wiki/Sleeping_barber_problem
%%
%% Additions to classic variant:
%% * many barbers
%% * many clients generators with random timeouts between clients
%% * calculation for total served clients
%% * random time for each client to make barber's job
@kachayev
kachayev / uniq_substr.hs
Last active December 13, 2015 17:38
Define function that returns count of unique substrings consuming O(1) memory
import Data.List
uniqSubstr :: String -> Int
uniqSubstr = sum . (map pair) . pairwise . sort . tails
where
pairwise l@(_:ht) = zip l ht
prefix pre post = length $ takeWhile (uncurry (==)) $ zip pre post
pair (pre, post) = length $ drop (prefix pre post) post
#!/bin/sh
set -e
sudo -s
apt-get update
apt-get install openjdk-6-jre openjdk-6-jdk mailtools git nginx build-essential -y
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list
apt-get update
apt-get install jenkins -y
# python 2+
from itertools import takewhile, ifilter, izip, tee, starmap, chain
def uniq_substrings(origin):
suffixes = chain([""], sorted(tails(origin)))
return sum(starmap(suffix, pairwise(suffixes)))
def pairwise(iterable):
a, b = tee(iterable)
next(b, None)
# python 2.7+
from itertools import dropwhile, tee, izip
def repeatfunc(f, zero):
curr = zero
while 1:
yield curr
curr = f(curr)
def pairwise(origin):
@kachayev
kachayev / let.py
Created April 3, 2013 15:43
Can you guess how it's possible? (yes, this is python)
>>> (let (a=2, b=4) (a + b))
6
>>> (let (x=20, y=40, z=1) (x*y*z))
800
# python 2.7+
class Node(object):
def __init__(self, value, left, right):
self.value = value
self.left = left
self.right = right
def __iter__(self):
yield self.value