Programming

3d Graphics programming

OpenGL Works


Programming language:

OpenGL, C# (OpenTK)

Description:

Video recording of interactive OpenGL 3d scenes.

Image processing programming

Treasure Hunting


Programming Language:

C#

Description:

As an input, this program uses an image file (map) with arrows with small marks on them and other objects a.k.a. treasures.  The task of the program is to trace a path from the start point (red arrow) to the treasure, using the directions of the arrows: it follows the direction that the current arrow shows, until another arrow is found. This process continues till the found object is not an arrow, but a treasure.

Different types of objects are recognized by their eccentricity parameter. There may be a lot of distracting arrows and fake treasures on the map, but only the right way will be found.

An output of the program is an image file of a map with a correct path from the first arrow to the treasure.

Files:

Archive with the source code (rar)

Blur & Enlightenment

    

    

Programming Language:

C#

Description:

This program is used for enlightenment of dark images. Program algorithm is based on ideas from a Retinex algorithm. At first it creates a blurred version of an input image and then the enlightened image is made, based on the previous result.

Files:

Archive with the source code (rar)


Imperative programming

Music Information Database for Unix

Programming Language:

Written in C

Description:

This program will help you to structure information about music.

Files:

Archive with the source code (rar)

Help:

You may use these commands:
add: to add the record to the base
print: to show all the records in the base
find: to search for the record by its number in the base
search: to search for all the records by the artist or by the song name
change: to change the record with the current number in the base
delete: to delete the record from the base by its number there
exit: to exit the program
After typing the command follow the further instructions.


Online Graphics Card Game for Unix

Programming Language:

Written mostly in C, but since vector from namespace std is used, the language is C++.

Description: This is a popular Russian card game “the Fool” implemented as an online graphics multiplayer game (2-6 players) for Unix.

Files:

Archive with the source code (rar)

Help:

‘h’ is used for Hearts
‘b’ is used for Diamonds
‘t’ is used for Clubs
‘p’ is used for Spades


Calculator for mathematical expressions

Programming Language:

Written in C language.

Description:

This program is designed to calculate difficult mathematical expressions in integer numbers. One of the program’s features is the possibility to use variables. The program uses a tree-based algorithm to parse the expressions.

Files:

Archive with the source code (rar)

Help:

You may use the following tokens in the program:
Unary operations:
~ - the operation of addition to 1; + - unary plus; - - unary minus;
Binary operations:
+ - addition; - - subtraction; * - multiplication; % - mod;
/ - division without remainder;
| - including bit OR; & - bit AND; ^ - excluding OR;
<<,>> - shift left, shift right;
Other operations:
() - grouping;
= - assignment (can be used with variables only,
has the lowest priority)
You may use variables.
Each expression has to end with ';'.


Object-oriented programming

Queueing model (Bank)

Programming Language:

ActionScript 3.0

Description:

Program is created for modelling a work of a bank. To make it less boring, the graphic part was made in a frenzy style =)

In the end of every day and  every week, a statistics report about bank efficiency is shown. It includes bank profit, clients lost, maximum crowd and average crowd.

You may change the following attributes to watch the bank service efficiency dynamics:

1) Number of bank clerks

2) Maximum (average) period between two clients coming into bank

3) Maximum time of service

4) Maximum and dangerous queue length

5) An effect of an unsatisfied customer (how strong does he affect the further interest to a bank)

6) Modelling step length (in minutes)

Help:

You may skip non-working hours by pressing "Space".

Files:

Archive with the source code (rar)

Bank program (swf)

Report and Program structure description (doc)


Functional programming

Polynomial Simplifier


x + 3 x => 4 x
x + 3 x ^ 2 – 7 y ^ 3 + 2 y ^ 3 => x + 3 (x ^ 2) – 5 (y ^ 3)
x – 3 * (4 x – (5 * 6 * y – 28 y)) => – 11 x + 6 y
(x + y) * (x – y) * (2 x + 3 y) => 2 (x ^ 3) + 3 (x ^ 2) y – 2 x (y ^ 2) – 3 (y ^ 3)
(x + y) * (x + y) => (x ^ 2) + 2 x y + (y ^ 2)
(x + y) * (x + y) * (x + y) => (x ^ 3) + 3 (x ^ 2) y + 3 x (y ^ 2) + (y ^ 3)

Programming Language:

Lisp

Description:

This program is created to simplify polynomials.

Files:

Archive with the source code (rar)

Help:

Terms must be separated by spaces.


Pascal Language Interpreter

Result on the following program:

{Program with errors}

(* Pascal Program { ---------------  }*)
{ ---------------(* Pascal Program *) }
Program;

const n=2,m=4;
var i,j,k:integer;
    p,q,r,i:boolean; {There is already a variable i}
    h,l:integer;

begin
m:=4+m;		{Wrong assinment}
p:=34+10;
q:=true;
j:=i+3*(1+n);	{Wrong type usage}

if (q) the	{Wrong IF structure}
l:=8+4;

if(not q) then
a:=41;		{Assignment of the unknown variable}
else
begin
h:=35+true;	{Wrong type usage}
p:=false or q;
end

for i:=1  5 do	{Wrong FOR structure}
begin
if ( not p) then
begin
writeln(i,j);
j:=j+1;
end
else begin
writeln(h);
h:=h+1;
end

end

end.

Programming Language:

Refal

Description:

Pascal Language interpreter, capable of parsing programs with common language structures.

You may download the test files with Pascal programs from screenshot below.

Files:

Archive with the source code (rar)


Logic programming

Useful function set

Programming Language:

Prolog

Description:

Set operations: sublist, sort, subset, intersection, union, subtraction, sub_tree, min_path, short_path, cyclic, is_connected

Files:

Archive with the source code (rar)

Genealogy tree

Programming Language:

Prolog

Description:

Program for storage and correction of genealogy trees, capable of showing the type of relationship between any people in the base.

Help:

Interface is mostly written in Russian, and program features
are using some specific Russian language constructions,
like cases, so adapting it in English would be a tedious task.
This is why it is only available in Russian.

Files:

Archive with the source code (rar)