Skip to content

Instantly share code, notes, and snippets.

@gennad
gennad / proxy.py
Created March 3, 2011 18:56
Proxy - GoF
# -*- coding: utf-8 -*-
class IMath:
"""Интерфейс для прокси и реального субъекта"""
def add(self, x, y):
raise NotImplementedError()
def sub(self, x, y):
raise NotImplementedError()
@gennad
gennad / stack.py
Created March 6, 2011 11:19
Stack
class Stack:
def __init__(self):
self.stack = []
def push(self, el):
self.stack.append(el)
def pop(self):
if len(self.stack) == 0:
raise StackEmptyError()
@gennad
gennad / qsort.py
Created March 7, 2011 10:38
Quicksort
"""
TODO
"""
@gennad
gennad / mergesort.py
Created March 7, 2011 10:41
Merge sort
"""
TODO
"""
@gennad
gennad / .vimrc
Created April 7, 2011 12:55
My .vimrc
set nocompatible
"Включаем распознавание типов файлов и типо-специфичные плагины:
filetype on
filetype plugin on
filetype plugin indent on
"Настройки табов для Python, согласно рекоммендациям
set tabstop=4
set shiftwidth=4
@gennad
gennad / div.py
Created May 27, 2011 08:26
Деление
# -*- coding: utf-8 -*-
# Целочисленне деление без оператора "деление"
def div(a,b):
if a < b:
return 0
elif a == b:
return 1
@gennad
gennad / hashmap.py
Created May 27, 2011 08:45
Hashmap implementation
class Hash:
def __init__(self):
self.f = []
self.s = []
def add(self, key, value):
found = False
for i, val in enumerate(self.f):
if val == key:
self.s[i] == value
@gennad
gennad / rand5.py
Created May 27, 2011 09:02
rand5 to 7
import random
def rand5():
seq = [0,1,2,3,4,5]
return random.choice(seq)
def rand7():
i = 5 * (rand5() - 1) + rand5()
while i > 21:
i = 5 * (rand5() - 1) + rand5()
@gennad
gennad / girl.py
Created May 28, 2011 11:10
class Girl
#-*- coding: utf-8 -*-
class Girl:
methods = {'и':'у','й':'ю','ти':'щу','ей':'ью','ри':'рю',
'ери':'еру','ети':'ечу','ись':'усь','йся':'юсь',
'оди':'ожу','рай':'раю','вись':'вюсь','тись':'чусь'}
def __init__(self, name = 'Наташа'):
print 'Привет, меня зовут', name
self.name = name
def __del__(self):
@gennad
gennad / yield.py
Created May 28, 2011 11:18
List compr, generators and yield
mylist = [x*x for x in range(3)]
for i in mylist :
print(i)
# Generators can be read only once
mygenerator = (x*x for x in range(3))
for i in mygenerator :
print(i)
Yield is a keyword that is used like return, except the function will return a generator.