positions
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 513
gstring
The General String library was inspired by the Icon programming language string manipulation features. more>>
The General String library was inspired by the Icon programming language string manipulation features. This library has a GNU license, i.e. it is free. I encourage you to get acquainted with the GNU license and support it if you agree with it.
Icon has two interesting features that are very useful in string manipulation:
Generators: A construct that can generate a sequence of values, and fails when no more values are available.
This is somewhat similar to Javas Iterator. This General String library supports generators through the IGenerator interface.
Backtracking: An operation can consist of two (or more) generators associated together, e.g. through an operator, if the second generator fails, we backtrack to the first generator and retry the operation again.
Think of a database transaction to help you understand backtracking, although they are different. This General String library supports backtracking through the operator classes in the gstring.operators package.
Next is a simple example to show the elegance of these concepts. Suppose that you want to parse a string to find the indexes of vowels:
GString source = new GString("Hello world"); // String to be parsed
SetChar target = new SetChar("aeiou"); // Vowels
IGenerator g = source.doGenerate().find().generator(target); // a find generator
Variant v; // a variant to hold generated positions
// loop until no more generations
do {
v= g.next(); // get next position
if (g.ok()) // if successful generation then print position
System.out.println(v);
} while (g.ok());
The above example will print:
1
4
7
<<lessIcon has two interesting features that are very useful in string manipulation:
Generators: A construct that can generate a sequence of values, and fails when no more values are available.
This is somewhat similar to Javas Iterator. This General String library supports generators through the IGenerator interface.
Backtracking: An operation can consist of two (or more) generators associated together, e.g. through an operator, if the second generator fails, we backtrack to the first generator and retry the operation again.
Think of a database transaction to help you understand backtracking, although they are different. This General String library supports backtracking through the operator classes in the gstring.operators package.
Next is a simple example to show the elegance of these concepts. Suppose that you want to parse a string to find the indexes of vowels:
GString source = new GString("Hello world"); // String to be parsed
SetChar target = new SetChar("aeiou"); // Vowels
IGenerator g = source.doGenerate().find().generator(target); // a find generator
Variant v; // a variant to hold generated positions
// loop until no more generations
do {
v= g.next(); // get next position
if (g.ok()) // if successful generation then print position
System.out.println(v);
} while (g.ok());
The above example will print:
1
4
7
Download (0.054MB)
Added: 2005-09-27 License: GPL (GNU General Public License) Price:
1488 downloads
PHP::Strings 0.28
PHP::Strings is a Perl module to implement some of PHPs string functions. more>>
PHP::Strings is a Perl module to implement some of PHPs string functions.
SYNOPSIS
use PHP::Strings;
my $slashed = addcslashes( $not_escaped, $charlist );
my $wordcount = str_word_count( $string );
my @words = str_word_count( $string, 1 );
my %positions = str_word_count( $string, 2 );
my $clean = strip_tags( $html, );
my $unslashed = stripcslashes( abfnrxae );
PHP has many functions. This is one of the main problems with PHP.
People do, however, get used to said functions and when they come to a better designed language they get lost because they have to implement some of these somewhat vapid functions themselves.
So I wrote PHP::Strings. It implements most of the strings functions of PHP. Those it doesnt implement it describes how to do in native Perl.
Any function that would be silly to implement has not been and has been marked as such in this documentation. They will still be exportable, but if you attempt to use said function you will get an error telling you to read these docs.
<<lessSYNOPSIS
use PHP::Strings;
my $slashed = addcslashes( $not_escaped, $charlist );
my $wordcount = str_word_count( $string );
my @words = str_word_count( $string, 1 );
my %positions = str_word_count( $string, 2 );
my $clean = strip_tags( $html, );
my $unslashed = stripcslashes( abfnrxae );
PHP has many functions. This is one of the main problems with PHP.
People do, however, get used to said functions and when they come to a better designed language they get lost because they have to implement some of these somewhat vapid functions themselves.
So I wrote PHP::Strings. It implements most of the strings functions of PHP. Those it doesnt implement it describes how to do in native Perl.
Any function that would be silly to implement has not been and has been marked as such in this documentation. They will still be exportable, but if you attempt to use said function you will get an error telling you to read these docs.
Download (0.077MB)
Added: 2007-07-13 License: Perl Artistic License Price:
834 downloads
Games::AlphaBeta::Position 0.4.6
Games::AlphaBeta::Position is a base Position class for use with Games::AlphaBeta. more>>
Games::AlphaBeta::Position is a base Position class for use with Games::AlphaBeta.
SYNOPSIS
package My::GamePos;
use base qw(Games::AlphaBeta::Position);
sub apply { ... }
sub endpos { ... } # optional
sub evaluate { ... }
sub findmoves { ... }
package main;
my $pos = My::GamePos->new;
my $game = Games::AlphaBeta->new($pos);
Games::AlphaBeta::Position is a base class for position-classes that can be used with Games::AlphaBeta. It inherits most of its methods from Games::Sequential::Position; make sure you read its documentation.
This class is provided for convenience. You dont need this class in order to use Games::AlphaBeta. It is, however, also possible to make use of this class on its own.
<<lessSYNOPSIS
package My::GamePos;
use base qw(Games::AlphaBeta::Position);
sub apply { ... }
sub endpos { ... } # optional
sub evaluate { ... }
sub findmoves { ... }
package main;
my $pos = My::GamePos->new;
my $game = Games::AlphaBeta->new($pos);
Games::AlphaBeta::Position is a base class for position-classes that can be used with Games::AlphaBeta. It inherits most of its methods from Games::Sequential::Position; make sure you read its documentation.
This class is provided for convenience. You dont need this class in order to use Games::AlphaBeta. It is, however, also possible to make use of this class on its own.
Download (0.012MB)
Added: 2007-01-03 License: Perl Artistic License Price:
1026 downloads
Games::Sequential::Position 0.4.6
Games::Sequential::Position is a base Position class for use with Games::Sequential. more>>
Games::Sequential::Position is a base Position class for use with Games::Sequential.
SYNOPSIS
package My::GamePos;
use base Games::Sequential::Position;
sub init { ... } # setup initial state
sub apply { ... }
package main;
my $pos = My::GamePos->new;
my $game = Games::Sequential->new($pos);
Games::Sequential::Position is a base class for position-classes that can be used with Games::Sequential. This class is provided for convenience; you dont need this class to use Games::Sequential. It is also possible to use this class on its own.
<<lessSYNOPSIS
package My::GamePos;
use base Games::Sequential::Position;
sub init { ... } # setup initial state
sub apply { ... }
package main;
my $pos = My::GamePos->new;
my $game = Games::Sequential->new($pos);
Games::Sequential::Position is a base class for position-classes that can be used with Games::Sequential. This class is provided for convenience; you dont need this class to use Games::Sequential. It is also possible to use this class on its own.
Download (0.012MB)
Added: 2007-01-03 License: Perl Artistic License Price:
1025 downloads
Coin Strip 1.0
Coin Strip project consists of scripts which play Coin Strip or Welters game against the user. more>>
Coin Strip project consists of scripts which play Coin Strip or Welters game against the user.
Coin Strip is a series of scripts in which the computer plays either Coin Strip or Welters game against the user (See "On Numbers and Games" by John Conway).
The scripts use a recursive algorithm in which the game tree is searched on the fly for sure winners, positions from which the computer cannot lose.
Since the search is CPU intensive, lookup tables have been generated for up to 6 coins on a strip 30 spaces long.
The scripts to generate and play using the lookup tables are provided for the Coin Strip game only.
<<lessCoin Strip is a series of scripts in which the computer plays either Coin Strip or Welters game against the user (See "On Numbers and Games" by John Conway).
The scripts use a recursive algorithm in which the game tree is searched on the fly for sure winners, positions from which the computer cannot lose.
Since the search is CPU intensive, lookup tables have been generated for up to 6 coins on a strip 30 spaces long.
The scripts to generate and play using the lookup tables are provided for the Coin Strip game only.
Download (0.001MB)
Added: 2006-11-01 License: GPL (GNU General Public License) Price:
1088 downloads
PortfolioTracker 0.8
PortfolioTracker helps you track and manage your stock portfolio of Euronext shares in realtime (15 delay). more>>
PortfolioTracker helps you track and manage your stock portfolio of Euronext shares in realtime (15 delay).
Assess your stock positions (price, daychange, gain, gain%, value, weight%) with one command. Portfolio changes are easy maintained in a text file.
Example of generated output:
2006-03-15 16:05
Tick BuyDate # B-Price Price D-1% Value Gain Gain% W%
CA 2006-02-28 25 41.44 43.08 0.68 1077.00 41.00 3.96 10.65
DELB 2002-02-28 18 56.00 58.40 2.55 1051.20 43.20 4.29 10.40
FORB 2006-02-28 30 29.92 29.48 0.03 884.40 -13.20 -1.47 8.75
FP 2006-02-28 5 211.50 215.00 0.75 1075.00 17.50 1.65 10.63
HEIA 2006-02-28 30 31.72 32.07 -0.56 962.10 10.50 1.10 9.51
PHIA 2006-02-28 35 27.33 27.07 2.23 947.45 -9.10 -0.95 9.37
RDSA 2006-02-28 40 25.80 25.77 0.00 1030.80 -1.20 -0.12 10.19
SOLB 2002-02-28 10 92.50 91.10 -0.22 911.00 -14.00 -1.51 9.01
UG 2006-02-28 22 48.95 50.70 1.87 1115.40 38.50 3.58 11.03
CASH 1057.34 10.46
TOTAL 10111.69 111.69 1.12
PortfolioTracker is released in Open Source, it is written in Ruby, and runs on any major platform (windows, linux, mac).
Usage:
Run PortfolioTracker
Execute the ruby script:
ruby portfolioTracker.rb
On some platforms you can execute the script by clicking or double clicking on the file portfolioTracker.rb.
Input file "portfolio.pf"
Describe your stock portfolio in the file "portfolio.pf". The source distribution contains the following example:
1| #[init]
2| start_date: 2006-02-28
3| start_value: 10000.00
4| cash: 1057.34
5| #[positions]
6| # ticker:buy_date:no_of_shares:price_per_share
7| # Carrefour
8| CA : 2006-02-28 : 25 : 41.44
9| # Peugeot
10| UG : 2006-02-28 : 22 : 48.95
11| # Total
12| FP : 2006-02-28 : 5 : 211.50
13| # Philips
14| PHIA : 2006-02-28 : 35 : 27.33
15| # Royal Dutch Shell
16| RDSA : 2006-02-28 : 40 : 25.80
17| # Heineken
18| HEIA : 2006-02-28 : 30 : 31.72
19| # Fortis
20| FORB : 2006-02-28 : 30 : 29.92
21| # Delhaize
22| DELB : 2002-02-28 : 18 : 56.00
23| # Solvay
24| SOLB : 2002-02-28 : 10 : 92.50
<<lessAssess your stock positions (price, daychange, gain, gain%, value, weight%) with one command. Portfolio changes are easy maintained in a text file.
Example of generated output:
2006-03-15 16:05
Tick BuyDate # B-Price Price D-1% Value Gain Gain% W%
CA 2006-02-28 25 41.44 43.08 0.68 1077.00 41.00 3.96 10.65
DELB 2002-02-28 18 56.00 58.40 2.55 1051.20 43.20 4.29 10.40
FORB 2006-02-28 30 29.92 29.48 0.03 884.40 -13.20 -1.47 8.75
FP 2006-02-28 5 211.50 215.00 0.75 1075.00 17.50 1.65 10.63
HEIA 2006-02-28 30 31.72 32.07 -0.56 962.10 10.50 1.10 9.51
PHIA 2006-02-28 35 27.33 27.07 2.23 947.45 -9.10 -0.95 9.37
RDSA 2006-02-28 40 25.80 25.77 0.00 1030.80 -1.20 -0.12 10.19
SOLB 2002-02-28 10 92.50 91.10 -0.22 911.00 -14.00 -1.51 9.01
UG 2006-02-28 22 48.95 50.70 1.87 1115.40 38.50 3.58 11.03
CASH 1057.34 10.46
TOTAL 10111.69 111.69 1.12
PortfolioTracker is released in Open Source, it is written in Ruby, and runs on any major platform (windows, linux, mac).
Usage:
Run PortfolioTracker
Execute the ruby script:
ruby portfolioTracker.rb
On some platforms you can execute the script by clicking or double clicking on the file portfolioTracker.rb.
Input file "portfolio.pf"
Describe your stock portfolio in the file "portfolio.pf". The source distribution contains the following example:
1| #[init]
2| start_date: 2006-02-28
3| start_value: 10000.00
4| cash: 1057.34
5| #[positions]
6| # ticker:buy_date:no_of_shares:price_per_share
7| # Carrefour
8| CA : 2006-02-28 : 25 : 41.44
9| # Peugeot
10| UG : 2006-02-28 : 22 : 48.95
11| # Total
12| FP : 2006-02-28 : 5 : 211.50
13| # Philips
14| PHIA : 2006-02-28 : 35 : 27.33
15| # Royal Dutch Shell
16| RDSA : 2006-02-28 : 40 : 25.80
17| # Heineken
18| HEIA : 2006-02-28 : 30 : 31.72
19| # Fortis
20| FORB : 2006-02-28 : 30 : 29.92
21| # Delhaize
22| DELB : 2002-02-28 : 18 : 56.00
23| # Solvay
24| SOLB : 2002-02-28 : 10 : 92.50
Download (0.008MB)
Added: 2006-03-16 License: BSD License Price:
1318 downloads
Set::IntSpan::Fast 0.0.5
Set::IntSpan::Fast is a Perl module for fast handling of sets containing integer spans. more>>
Set::IntSpan::Fast is a Perl module for fast handling of sets containing integer spans.
SYNOPSIS
use Set::IntSpan::Fast;
my $set = Set::IntSpan::Fast->new();
$set->add(1, 3, 5, 7, 9);
$set->add_range(100, 1_000_000);
print $set->as_string(), "n"; # prints 1,3,5,7,9,100-1000000
The Set::IntSpan module represents sets of integers as a number of inclusive ranges, for example 1-10,19-23,45-48. Because many of its operations involve linear searches of the list of ranges its overall performance tends to be proportional to the number of distinct ranges. This is fine for small sets but suffers compared to other possible set representations (bit vectors, hash keys) when the number of ranges grows large.
This module also represents sets as ranges of values but stores those ranges in order and uses a binary search for many internal operations so that overall performance tends towards O log N where N is the number of ranges.
The internal representation used by this module is extremely simple: a set is represented as a list of integers. Integers in even numbered positions (0, 2, 4 etc) represent the start of a run of numbers while those in odd numbered positions represent the ends of runs. As an example the set (1, 3-7, 9, 11, 12) would be represented internally as (1, 2, 3, 8, 11, 13).
Sets may be infinite - assuming youre prepared to accept that infinity is actually no more than a fairly large integer. Specifically the constants Set::IntSpan::Fast::NEGATIVE_INFINITY and Set::IntSpan::Fast::POSITIVE_INFINITY are defined to be -(2^31-1) and (2^31-2) respectively. To create an infinite set invert an empty one:
my $inf = Set::IntSpan::Fast->new()->complement();
Sets need only be bounded in one direction - for example this is the set of all positive integers (assuming you accept the slightly feeble definition of infinity were using):
my $pos_int = Set::IntSpan::Fast->new();
$pos_int->add_range(1, $pos_int->POSITIVE_INFINITY);
<<lessSYNOPSIS
use Set::IntSpan::Fast;
my $set = Set::IntSpan::Fast->new();
$set->add(1, 3, 5, 7, 9);
$set->add_range(100, 1_000_000);
print $set->as_string(), "n"; # prints 1,3,5,7,9,100-1000000
The Set::IntSpan module represents sets of integers as a number of inclusive ranges, for example 1-10,19-23,45-48. Because many of its operations involve linear searches of the list of ranges its overall performance tends to be proportional to the number of distinct ranges. This is fine for small sets but suffers compared to other possible set representations (bit vectors, hash keys) when the number of ranges grows large.
This module also represents sets as ranges of values but stores those ranges in order and uses a binary search for many internal operations so that overall performance tends towards O log N where N is the number of ranges.
The internal representation used by this module is extremely simple: a set is represented as a list of integers. Integers in even numbered positions (0, 2, 4 etc) represent the start of a run of numbers while those in odd numbered positions represent the ends of runs. As an example the set (1, 3-7, 9, 11, 12) would be represented internally as (1, 2, 3, 8, 11, 13).
Sets may be infinite - assuming youre prepared to accept that infinity is actually no more than a fairly large integer. Specifically the constants Set::IntSpan::Fast::NEGATIVE_INFINITY and Set::IntSpan::Fast::POSITIVE_INFINITY are defined to be -(2^31-1) and (2^31-2) respectively. To create an infinite set invert an empty one:
my $inf = Set::IntSpan::Fast->new()->complement();
Sets need only be bounded in one direction - for example this is the set of all positive integers (assuming you accept the slightly feeble definition of infinity were using):
my $pos_int = Set::IntSpan::Fast->new();
$pos_int->add_range(1, $pos_int->POSITIVE_INFINITY);
Download (0.10MB)
Added: 2007-01-24 License: Perl Artistic License Price:
1003 downloads
iceWing 0.9
iceWing is an Integrated Communication Environment Which Is Not Gesten. more>>
iceWing is an Integrated Communication Environment Which Is Not Gesten (this is a reference to an older program, the predecessor of iceWing) is a graphical plugin shell. It is optimized for, but not limited to, image processing and vision system development.
Predefined or self-written plugins operate hierarchically on data provided by other plugins and can also generate new data-streams. An important predefined plugin is the grabbing plugin, which can read images from the disk in various image formats, videos from the disk, from grabber-hardware, e.g. V4L2-devices or FireWire, and also from external, network wide processes.
Besides plugin management, iceWing also supports comfortable rendering of any data in any number of windows. All interactions with the windows, like panning, zooming, introspection, or saving, are handled by iceWing.
Additionally, a comfortable user interface creation is provided, where the complete handling of the interface elements is taken over by iceWing. This includes saving and loading of all widget settings and all window settings and positions at any time.
<<lessPredefined or self-written plugins operate hierarchically on data provided by other plugins and can also generate new data-streams. An important predefined plugin is the grabbing plugin, which can read images from the disk in various image formats, videos from the disk, from grabber-hardware, e.g. V4L2-devices or FireWire, and also from external, network wide processes.
Besides plugin management, iceWing also supports comfortable rendering of any data in any number of windows. All interactions with the windows, like panning, zooming, introspection, or saving, are handled by iceWing.
Additionally, a comfortable user interface creation is provided, where the complete handling of the interface elements is taken over by iceWing. This includes saving and loading of all widget settings and all window settings and positions at any time.
Download (2.0MB)
Added: 2006-05-31 License: GPL (GNU General Public License) Price:
1241 downloads
3D Pong 0.5
3D Pong project is a simple Xlib vector-based ping-pong game. more>>
3D Pong project is a simple Xlib vector-based ping-pong game.
3D Pong is is a very small and fast ping-pong or handball game for one or two players. It uses simple 3D vector graphics in Xlib.
Multiple views are possible, and red/blue separation is available for users with 3D movie glasses.
Main features:
Game Play:
- 1 player against the computer
- 1 player in "handball" mode
- 2 players, networked
- User-defined gravity level
- With or without a deflective "net"
Display Modes:
- Red/Blue split mode for true 3D using 3D glasses!!!
- Six viewing positions:
- First Person POV from behind your paddle
- "Bleacher" view from the side of the game arenta.
- Above view.
- Freely rotatable mode (using the mouse)
- A dizzying "follow the ball" mode
- Follow the paddle mode
<<less3D Pong is is a very small and fast ping-pong or handball game for one or two players. It uses simple 3D vector graphics in Xlib.
Multiple views are possible, and red/blue separation is available for users with 3D movie glasses.
Main features:
Game Play:
- 1 player against the computer
- 1 player in "handball" mode
- 2 players, networked
- User-defined gravity level
- With or without a deflective "net"
Display Modes:
- Red/Blue split mode for true 3D using 3D glasses!!!
- Six viewing positions:
- First Person POV from behind your paddle
- "Bleacher" view from the side of the game arenta.
- Above view.
- Freely rotatable mode (using the mouse)
- A dizzying "follow the ball" mode
- Follow the paddle mode
Download (0.036MB)
Added: 2006-11-10 License: GPL (GNU General Public License) Price:
1090 downloads
GoooooPS 0.1
GoooooPS is a Java MIDlet that displays a position obtained from a GPS receiver on a Google Map Tile. more>>
GoooooPS is a Java MIDlet that displays a position obtained from a GPS receiver on a Google Map Tile.
<<less Download (0.013MB)
Added: 2006-07-20 License: GPL (GNU General Public License) Price:
1191 downloads
Shatranj 1.11
Shatranj is an bitboard-based, Open-Source, interactive chess programming module. more>>
Shatranj is an bitboard-based, Open-Source, interactive chess programming module which allows manipulation of chess positions and experimentation with search algorithms and evaluation techniques. Shatranjs goal is to write a toolkit to aid in implementing Shannon Type B chess programs.
As such, execution speed becomes less important then code clarity and expressive power of the implementation language. Having been written in an interpreted language, this module allows the chess programmer to manipulate bitboards in a natural, interactive manner much like signal processing toolkits allow communication engineers to manipulate vectors of sounds samples in MATLAB.
The module currenly implements a simple recursive minimax search with alphabeta pruning, iterative deepening, uses short algebraic notation, handles repetition check, and the 50 move rule. Features lacking are quiescent checks, transition tables, negascout and MTD searching.
The chess programming toolkit is available in the form of a Python module called shatranj.py. You will also likely need the opening book as well as some of the pre-built hash tables that are used throughout the module (these will be recalculated if the module cannot find the data file).
Place all three file in the same directory and simply run python on the python module ("python shatranj.py"). As far as requirements, all that is needed is a recent version of the interpreted, high level language called Python (anything after version 2.3 should work fine). If you would like a little bit of a speed boost, shatranj looks for the module Psyco and will use it if it is installed.
Until more documentation becomes available, here is a short sample session:
[Sam-Tannous-Computer:~/shatranj] stannous% python
>>> from shatranj import *
...reading startup data
...total time to read data 0.0774528980255
...found opening book shatranj-book.bin with 37848 positions
>>> position = Position("r1bqk2r/pppp1ppp/2n5/5N2/2B1n3/8/PPP1QPPP/R1B1K2R")
>>> all_pieces = position.piece_bb["b_occupied"] | position.piece_bb["w_occupied"]
>>> other_pieces = position.piece_bb["b_occupied"]
>>> from_square = c4
>>> wtm = 1
>>> mask = position.pinned(from_square,wtm)
>>> ne_pieces = diag_mask_ne[from_square] & all_pieces
>>> nw_pieces = diag_mask_nw[from_square] & all_pieces
>>> moves = ((diag_attacks_ne[from_square][ne_pieces] & other_pieces) |
... (diag_attacks_ne[from_square][ne_pieces] & ~all_pieces) |
... (diag_attacks_nw[from_square][nw_pieces] & other_pieces) |
... (diag_attacks_nw[from_square][nw_pieces] & ~all_pieces)) & mask
>>>
>>> moves
1275777090846720L
>>>
>>> tobase(moves,2)
100100010000101000000000000010100000000000000000000
>>> display(moves)
+---+---+---+---+---+---+---+---+
8 | | . | | . | | . | | . |
+---+---+---+---+---+---+---+---+
7 | . | | . | | . | 1 | . | |
+---+---+---+---+---+---+---+---+
6 | 1 | . | | . | 1 | . | | . |
+---+---+---+---+---+---+---+---+
5 | . | 1 | . | 1 | . | | . | |
+---+---+---+---+---+---+---+---+
4 | | . | | . | | . | | . |
+---+---+---+---+---+---+---+---+
3 | . | 1 | . | 1 | . | | . | |
+---+---+---+---+---+---+---+---+
2 | | . | | . | | . | | . |
+---+---+---+---+---+---+---+---+
1 | . | | . | | . | | . | |
+---+---+---+---+---+---+---+---+
a b c d e f g h
>>> position.show_moves(1)
[Rg1, O-O, f3, a3, Rb1, f4, Ba6,
Bh6, Bd3, Qg4, Qe3, Ne7, Be6, Nxg7,
Qxe4, Ne3, b4, Nh4, b3, Be3, Bg5,
g3, Kf1, Rf1, Nh6, a4, Ng3, Qh5,
Kd1, h4, h3, c3, Bxf7, Nd6, Bb5,
Nd4, Qf3, g4, Qf1, Bb3, Qd1, Qd3,
Qd2, Bd5, Bd2, Bf4]
>>>
>>> # now play a game!
>>> play()
Shatranj version 1.10
g: switch sides m: show legal moves
n: new game l: list game record
d: display board b: show book moves
sd: change search depth (2-16) default=5
q: quit
Shatranj: d
+---+---+---+---+---+---+---+---+
8 | r | n | b | q | k | b | n | r |
+---+---+---+---+---+---+---+---+
7 | p | p | p | p | p | p | p | p |
+---+---+---+---+---+---+---+---+
6 | | . | | . | | . | | . |
+---+---+---+---+---+---+---+---+
5 | . | | . | | . | | . | |
+---+---+---+---+---+---+---+---+
4 | | . | | . | | . | | . |
+---+---+---+---+---+---+---+---+
3 | . | | . | | . | | . | |
+---+---+---+---+---+---+---+---+
2 | P | P | P | P | P | P | P | P |
+---+---+---+---+---+---+---+---+
1 | R | N | B | Q | K | B | N | R |
+---+---+---+---+---+---+---+---+
a b c d e f g h
Shatranj:
<<lessAs such, execution speed becomes less important then code clarity and expressive power of the implementation language. Having been written in an interpreted language, this module allows the chess programmer to manipulate bitboards in a natural, interactive manner much like signal processing toolkits allow communication engineers to manipulate vectors of sounds samples in MATLAB.
The module currenly implements a simple recursive minimax search with alphabeta pruning, iterative deepening, uses short algebraic notation, handles repetition check, and the 50 move rule. Features lacking are quiescent checks, transition tables, negascout and MTD searching.
The chess programming toolkit is available in the form of a Python module called shatranj.py. You will also likely need the opening book as well as some of the pre-built hash tables that are used throughout the module (these will be recalculated if the module cannot find the data file).
Place all three file in the same directory and simply run python on the python module ("python shatranj.py"). As far as requirements, all that is needed is a recent version of the interpreted, high level language called Python (anything after version 2.3 should work fine). If you would like a little bit of a speed boost, shatranj looks for the module Psyco and will use it if it is installed.
Until more documentation becomes available, here is a short sample session:
[Sam-Tannous-Computer:~/shatranj] stannous% python
>>> from shatranj import *
...reading startup data
...total time to read data 0.0774528980255
...found opening book shatranj-book.bin with 37848 positions
>>> position = Position("r1bqk2r/pppp1ppp/2n5/5N2/2B1n3/8/PPP1QPPP/R1B1K2R")
>>> all_pieces = position.piece_bb["b_occupied"] | position.piece_bb["w_occupied"]
>>> other_pieces = position.piece_bb["b_occupied"]
>>> from_square = c4
>>> wtm = 1
>>> mask = position.pinned(from_square,wtm)
>>> ne_pieces = diag_mask_ne[from_square] & all_pieces
>>> nw_pieces = diag_mask_nw[from_square] & all_pieces
>>> moves = ((diag_attacks_ne[from_square][ne_pieces] & other_pieces) |
... (diag_attacks_ne[from_square][ne_pieces] & ~all_pieces) |
... (diag_attacks_nw[from_square][nw_pieces] & other_pieces) |
... (diag_attacks_nw[from_square][nw_pieces] & ~all_pieces)) & mask
>>>
>>> moves
1275777090846720L
>>>
>>> tobase(moves,2)
100100010000101000000000000010100000000000000000000
>>> display(moves)
+---+---+---+---+---+---+---+---+
8 | | . | | . | | . | | . |
+---+---+---+---+---+---+---+---+
7 | . | | . | | . | 1 | . | |
+---+---+---+---+---+---+---+---+
6 | 1 | . | | . | 1 | . | | . |
+---+---+---+---+---+---+---+---+
5 | . | 1 | . | 1 | . | | . | |
+---+---+---+---+---+---+---+---+
4 | | . | | . | | . | | . |
+---+---+---+---+---+---+---+---+
3 | . | 1 | . | 1 | . | | . | |
+---+---+---+---+---+---+---+---+
2 | | . | | . | | . | | . |
+---+---+---+---+---+---+---+---+
1 | . | | . | | . | | . | |
+---+---+---+---+---+---+---+---+
a b c d e f g h
>>> position.show_moves(1)
[Rg1, O-O, f3, a3, Rb1, f4, Ba6,
Bh6, Bd3, Qg4, Qe3, Ne7, Be6, Nxg7,
Qxe4, Ne3, b4, Nh4, b3, Be3, Bg5,
g3, Kf1, Rf1, Nh6, a4, Ng3, Qh5,
Kd1, h4, h3, c3, Bxf7, Nd6, Bb5,
Nd4, Qf3, g4, Qf1, Bb3, Qd1, Qd3,
Qd2, Bd5, Bd2, Bf4]
>>>
>>> # now play a game!
>>> play()
Shatranj version 1.10
g: switch sides m: show legal moves
n: new game l: list game record
d: display board b: show book moves
sd: change search depth (2-16) default=5
q: quit
Shatranj: d
+---+---+---+---+---+---+---+---+
8 | r | n | b | q | k | b | n | r |
+---+---+---+---+---+---+---+---+
7 | p | p | p | p | p | p | p | p |
+---+---+---+---+---+---+---+---+
6 | | . | | . | | . | | . |
+---+---+---+---+---+---+---+---+
5 | . | | . | | . | | . | |
+---+---+---+---+---+---+---+---+
4 | | . | | . | | . | | . |
+---+---+---+---+---+---+---+---+
3 | . | | . | | . | | . | |
+---+---+---+---+---+---+---+---+
2 | P | P | P | P | P | P | P | P |
+---+---+---+---+---+---+---+---+
1 | R | N | B | Q | K | B | N | R |
+---+---+---+---+---+---+---+---+
a b c d e f g h
Shatranj:
Download (0.16MB)
Added: 2007-04-30 License: GPL (GNU General Public License) Price:
554 downloads
WavSplit 1.2.1
WavSplit splits large WAV files at given time positions. more>>
WavSplit splits large WAV files at given time positions. To find out split positions you can use any WAV player or editor with a time display.
After unpacking the tarball type these commands:
make && make install
to start the compilation process and copy the program to /usr/local/bin,
and the man pages to /usr/share/man/man1.
(If you dont have a root account, simply issue "make" and copy the tool
manually to the desired location)
You can alter the destinations by editing the variables BIN and MAN in
the Makefile.
Note for all 64-bit systems: when your `long-type vars are 64 bit, .wav
headers are not read/written correctly (=bug). If you replace every `long
with an `int (or other 32-bit type), everything should be fine.
To run WavSplit, issue the command
wavsplit WAV-FILE mm:ss [mm:ss] [mm:ss]...
Enhancements:
- Fixed a bug that frames should be >=0.0 (not >0.0 as originally)
- Updated the man page to include tracktimes options.
- Added MAN path to the makefile, and copied man pages there
<<lessAfter unpacking the tarball type these commands:
make && make install
to start the compilation process and copy the program to /usr/local/bin,
and the man pages to /usr/share/man/man1.
(If you dont have a root account, simply issue "make" and copy the tool
manually to the desired location)
You can alter the destinations by editing the variables BIN and MAN in
the Makefile.
Note for all 64-bit systems: when your `long-type vars are 64 bit, .wav
headers are not read/written correctly (=bug). If you replace every `long
with an `int (or other 32-bit type), everything should be fine.
To run WavSplit, issue the command
wavsplit WAV-FILE mm:ss [mm:ss] [mm:ss]...
Enhancements:
- Fixed a bug that frames should be >=0.0 (not >0.0 as originally)
- Updated the man page to include tracktimes options.
- Added MAN path to the makefile, and copied man pages there
Download (0.031MB)
Added: 2006-07-24 License: GPL (GNU General Public License) Price:
683 downloads
Geneious 3.0.6
Geneious greatly speeds up and simplifies research in molecular biology and biochemistry. more>>
Geneious project is a unique, easy to use software system that greatly speeds up and simplifies research in molecular biology and biochemistry.
Currently the great majority of researchers time is taken up with comparatively repetitive drudgery: sifting through publicly available sequence and publication databases, downloading gene sequences and then massaging the data through a series of file formats and difficult-to-use specialist programs.
This whole process is usually repeated numerous times during a research project as requirements change or new data comes to hand.
As a result, after publication researchers find their work out-dates rapidly as new data become available.
Geneious has been developed with a view to changing all that by making data management, organization and filtering easy, rapid and automatic.
Main features:
- A local database to store sequences and publications
- Storage of abstracts and bibliographic information
- Direct links to Google scholar
- Storage of sequence data
- User-defined notes
- Rapid sequence similarity searching within your local database
- Direct access to NCBI, EBI databases
- A unique ability to refine and filter information on the fly as it downloads
- Ability to automate searches so that the data relevant to your research is constantly kept up-to-date
- A graphical viewer of sequence annotations such as genes, motifs and primer positions
- A multiple alignment viewer
- Very simple user-friendly interface
- Easy and fast to download, at no cost
Enhancements:
- Support for multiple concurrent licenses was streamlined.
<<lessCurrently the great majority of researchers time is taken up with comparatively repetitive drudgery: sifting through publicly available sequence and publication databases, downloading gene sequences and then massaging the data through a series of file formats and difficult-to-use specialist programs.
This whole process is usually repeated numerous times during a research project as requirements change or new data comes to hand.
As a result, after publication researchers find their work out-dates rapidly as new data become available.
Geneious has been developed with a view to changing all that by making data management, organization and filtering easy, rapid and automatic.
Main features:
- A local database to store sequences and publications
- Storage of abstracts and bibliographic information
- Direct links to Google scholar
- Storage of sequence data
- User-defined notes
- Rapid sequence similarity searching within your local database
- Direct access to NCBI, EBI databases
- A unique ability to refine and filter information on the fly as it downloads
- Ability to automate searches so that the data relevant to your research is constantly kept up-to-date
- A graphical viewer of sequence annotations such as genes, motifs and primer positions
- A multiple alignment viewer
- Very simple user-friendly interface
- Easy and fast to download, at no cost
Enhancements:
- Support for multiple concurrent licenses was streamlined.
Download (23.5MB)
Added: 2007-07-18 License: Free for non-commercial use Price:
850 downloads
TooDooList 0.5
TooDooList is a simple TODO list theme for superkaramba. more>>
TooDooList is a simple TODO list theme for superkaramba.
Known bugs:
- diacritics is not working
- sometimes two tasks are deleted, I dont know why, I am searching for the solution (and for the reason of this)
!!! IMPORTANT !!!
You have to have Superkaramba version 0.37 or newer for this theme to work !!!
!!! IMPORTANT !!!
When upgrading to a newer version, always delete the directory ~/.TooDoo before the first run of the theme
!!! Modifying skins
When this theme is launched for the first time, it copies the default skins to the directory "~/.TooDoo" and creates the file "~/TooDoo/TooDoo_list.txt" for storing data. If you want to create your own theme, you have to:
1. modify the images in the directory ~/.TooDoo/default (or old)
2. modify the config file ~/.TooDoo/default/skinConf.py (this file contains constants for sizes and positions of the images and labels of the skin)
3. restart the TooDoo theme (you no longer need to resart whole superkaramba) to view the result
If anything goes wrong, delete the directory ~/.TooDoo and everything should be okay
I would also like to thank Shanodyn for ceating the default design... THANKS A LOT !!!
<<lessKnown bugs:
- diacritics is not working
- sometimes two tasks are deleted, I dont know why, I am searching for the solution (and for the reason of this)
!!! IMPORTANT !!!
You have to have Superkaramba version 0.37 or newer for this theme to work !!!
!!! IMPORTANT !!!
When upgrading to a newer version, always delete the directory ~/.TooDoo before the first run of the theme
!!! Modifying skins
When this theme is launched for the first time, it copies the default skins to the directory "~/.TooDoo" and creates the file "~/TooDoo/TooDoo_list.txt" for storing data. If you want to create your own theme, you have to:
1. modify the images in the directory ~/.TooDoo/default (or old)
2. modify the config file ~/.TooDoo/default/skinConf.py (this file contains constants for sizes and positions of the images and labels of the skin)
3. restart the TooDoo theme (you no longer need to resart whole superkaramba) to view the result
If anything goes wrong, delete the directory ~/.TooDoo and everything should be okay
I would also like to thank Shanodyn for ceating the default design... THANKS A LOT !!!
Download (0.047MB)
Added: 2006-07-27 License: GPL (GNU General Public License) Price:
1186 downloads
MLton 20051202
MLton is a whole-program optimizing Standard ML compiler. more>>
MLton is a whole-program optimizing Standard ML compiler. MLton project generates standalone executables with excellent runtime performance, supports the full SML 97 language, and has a complete basis library.
It also has a fast C FFI, source-level time and allocation profiling, and many useful libraries.
Supports the full SML 97 language as given in The Definition of Standard ML (Revised).
- If there is a program that is valid according to The Definition that is rejected by MLton, or a program that is invalid according to the Definition that is accepted by MLton, it is a bug. For a list of known bugs, see UnresolvedBugs.
A complete implementation of the Basis Library.
- MLtons implementation matches latest Basis Library specification, and includes a complete implementation of all the required modules, as well as many of the optional modules.
Generates standalone executables.
- No additional code or libraries are necessary in order to run an executable, except for the standard shared libraries. MLton can also generate statically linked executables.
Compiles large programs.
- MLton is sufficiently efficient and robust that it can compile large programs, including itself (over 140K lines). The distributed version of MLton was compiled by MLton.
Support for large amounts of memory (up to 4G).
Array lengths up to 231 - 1, the largest possible twos-complement 32 bit integer.
Support for large files, using 64-bit file positions.
Enhancements:
- MLton is now released under the BSD license, not the GPL.
- There is substantially improved documentation based on the MLton wiki. x86/MinGW and HPPA/Linux are supported.
- There are improvements to the FFI, ML Basis annotations, and new libraries: the ckit and SML/NJ library.
<<lessIt also has a fast C FFI, source-level time and allocation profiling, and many useful libraries.
Supports the full SML 97 language as given in The Definition of Standard ML (Revised).
- If there is a program that is valid according to The Definition that is rejected by MLton, or a program that is invalid according to the Definition that is accepted by MLton, it is a bug. For a list of known bugs, see UnresolvedBugs.
A complete implementation of the Basis Library.
- MLtons implementation matches latest Basis Library specification, and includes a complete implementation of all the required modules, as well as many of the optional modules.
Generates standalone executables.
- No additional code or libraries are necessary in order to run an executable, except for the standard shared libraries. MLton can also generate statically linked executables.
Compiles large programs.
- MLton is sufficiently efficient and robust that it can compile large programs, including itself (over 140K lines). The distributed version of MLton was compiled by MLton.
Support for large amounts of memory (up to 4G).
Array lengths up to 231 - 1, the largest possible twos-complement 32 bit integer.
Support for large files, using 64-bit file positions.
Enhancements:
- MLton is now released under the BSD license, not the GPL.
- There is substantially improved documentation based on the MLton wiki. x86/MinGW and HPPA/Linux are supported.
- There are improvements to the FFI, ML Basis annotations, and new libraries: the ckit and SML/NJ library.
Download (4.1MB)
Added: 2005-12-07 License: BSD License Price:
1416 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above positions search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed