... решить интересную задачу.
бинарного дерева хорошо ...

Когда я начал изучать ruby, я решил реализовать бинарное дерево и некоторые из его основных операций (insert, delete, walk, и search), для того, что бы лучше вникнуть в язык. Бинарные деревья, это хорошее упражнение, что бы понять особенности языка, такие как: условные операторы, циклы, классы. В то же время, это возможность решить интересную задачу. Алгоритм бинарного дерева хорошо описан во многих книгах и в интернете.
Для усложнения задачи, я так же реализовал отрисовку бинарного дерева средствами html5 и Canvas. Это позволяет более наглядно понять работу бинарного дерева. Вы можете посмотреть демонстрацию на веб сайте.
Далее я кратко опишу реализацию основных методов построения бинарного дерева.
Читать дальше →
В первой части статьи о Prolog рассказывалось о структуре, синтаксисе и интерпретации языка. Конечно ...
В первой части статьи о Prolog рассказывалось о структуре, синтаксисе и интерпретации языка. Конечно же научно-популярная литература интересна для программиста, но гораздо более интересно что-то интерактивное, живое, запускаемое. Поэтому в этой статье я предлагаю вооружиться SWI-Prolog и рассмотреть решения простейших задач на Прологе.
Прежде, чем начинать, хотелось бы кратко ответить на злободневные вопросы от хабрачитателей:
— Где реально используется Пролог?
— Такие проекты существуют, некоторые приводились в комментариях к 1-й статье. Важно что, большинство программистов пишут на Прологе не от безвыходности, а от того, что им нравится Пролог. В конце концов Пролог не может использоваться для любой задачи, такой создание UI или манипулирование с файлами.
— Почему таких проектов мало?
— Потому что программистов владеющих Пролог крайне мало, не только потому что люди не изучали его, а потому что недоизучали для написания полных программ. Главная же причина, что люди недостаточно четко понимают в каких ситуациях лучше всего его использовать. Часто можно видеть, что ярые сторонники Пролога, пишут на нем все, включая обработчиков клавиатуры и мыши, из-за чего код получается еще хуже, чем на С.
— Почему нет сообщества Пролога?
— Оно есть. Такова специфика языка, что он очень полюбился в академической среде (большинство Prolog систем пишутся в различных университетах и наоборот практически любой университет пишет свой Пролог), из-за этого можно сказать страдает и применимость языка. Стоит отметить, что сообщество небольшое, но очень лояльное: практически все известные языки нашли свое отражение в современных языках (Lisp, ML -> F#, Scala; Smalltalk -> Java, Scala (агенты), скриптовые -> Ruby), в отличие от Пролог.
Думаю на этом хватит философских рассуждений и можно приступить к реальным примерам :)
В конце как обычно ожидает задача на приз.
Читать дальше →
В процессе реализации одной программы я столкнулся с задачей поиска простых чисел до числа N порядка ...
В процессе реализации одной программы я столкнулся с задачей поиска простых чисел до числа N порядка

. На хабре уже неоднократно писали про различные способы и методы, но не упоминали про основной метод решения, что я сегодня и постараюсь исправить.
Читать дальше
написан Оливером Голдман ...
... >Python известного
Дейкстры.
Псевдокод имеет множество недостатков. Самым главным недостатком, является то, что он
псевдо.
Посмотрите, например, реализацию на
Python известного алгоритма Дейкстры.
01 def Dijkstra(graph, v0):
02 distance = dict(((v, float('inf')) for v in graph.iterkeys()))
03 distance[v0] = 0
04 vertex = set(graph.iterkeys())
05 while vertex:
06 d1, v1 = min(((distance[v], v) for v in vertex))
07 vertex.remove(v1)
08 for v, d in graph[v1].iteritems():
09 if distance[v] > distance[v1] + d:
10 distance[v] = distance[v1] + d
11 return distance
Я не буду описывать достоинства и недостатки каждого из подходов. Я просто покажу, как это выглядит на
Python.
Все познается в сравнении.
Читать дальше →