Skip to content

Instantly share code, notes, and snippets.

View ddiachkov's full-sized avatar

Denis Diachkov ddiachkov

  • Snackpass
  • San Francisco
View GitHub Profile
## OLD
# DO NOT MODIFY THE CODE BELOW THIS LINE!
_elements_cnt = 0
_elements_cnt = Integer(gets)
_elements_i=0
_elements = Array.new(_elements_cnt)
while (_elements_i < _elements_cnt)
_elements_item = gets.to_s.strip;
@ddiachkov
ddiachkov / zipper.rb
Created September 18, 2013 15:37
Реализация зиппера для ruby
require_relative "./node"
module AST
##
# Реализация зиппера для обхода структуры AST.
#
# Что такое зиппер? Это паттерн из функционального программирования, предлагаемый
# в качестве более продвинутой замены визиторов. По сути энумератор (или курсор),
# умеет ходить не только вперёд/назад, но и вверх/вниз по дереву. Кроме этого
# во время обхода дерева зиппер позволяет нам удалять/заменять/добавлять ноды