Top Coder SRM strategies

Posted in Common on January 20th, 2012 by Theodore Biryukov – Comments Off

It’s just a copy of this thread.

XPS Viewer Portable Version for Windows XP

Posted in Common on November 4th, 2010 by Theodore Biryukov – Comments Off

A good advice from  blog.rubypdf.com

I tried to install Microsoft XML Paper Specification Essentials Pack(aka XPSEP or XPS Essentials Pack) many times on my PC, but failed, after searching, I got the answer. Then I thought how about just copy the necessary file on a fresh PC to run the XPSEP, after tested, it works. So I share it here for the friends who do not want to install XPSEP or failed to install XPSEP.

Download it now,
XPS Viewer EP-portable(2.19M)

XPS_Viewer_EP-portable(2.19M) – mirror

P.S.

If you just want to view XPS, you can use IE plug-in after install Windows XP SP3, but it is very slow, and once you set your Firefox as default browser, you have to try to browser xps document with IE to open it.

Oct 20, 2009

If you do not want to install .NET Framework 3.0, I recommend you A Free Win32 Native Code version XPS Viewer or try java-axp, java version XPS Viewer(free and open source)

Selection of the weapon or a comparison of different programming languages.

Posted in Sport programming & programming competitions on April 16th, 2010 by Theodore Biryukov – 212 Comments

The purpose of this article: To shed some light and to summarize all the discussions about programming languages. It touches more sphere of sport programming. But I try to make the remarks more and more clear and right from time to time during my evolution and evolution of programming languages. Today is the 18th of April 2010.

Pascal (imperative, structured)

Pro: very simple and strict language – easy for beginners – it’s easy to write and debug code.

Contra: no standard libraries (in comparison with C++ and Java ones).

C++ (multi-paradigm: procedural, object-oriented, generic)

Pro: STL (standard templates’ library) – many standard data types and algorithms. Great “freedom” – you can write the same things in many ways. Good performance of compiled sources. C++ is widely supported nowadays.

Contra: No BigInteger and BigDecimal (which are available in Java and C# libraries). Chance of different errors, which are caused by incomprehension between compiler and coder. You can find many discussions about them, but it’s not the problem of the language. But because of this great freedom it can be sometimes difficult to read the code or to debug it.

Java (object-oriented, structured, imperative)

Pro: more strict syntax than in C++ – it’s easier to read the code – fast and easy debugging. Notifications about errors and unused code. Plenty of libraries. Garbage collector. New features in the latest version of java (eg.: variations of cycle for).

Contra: Slower performance of programs(3 or 4 times slower than C or C++), longer (uniformly long) source code, but coding (typing of code) is fast because of auto-completion.

Opinion of Petr: I think Java/C# (I don’t see much difference between them except speed) are best suited for programming contests, since it’s so much harder to make a mistake and so much easier to find and fix a mistake in a Java program than in a C/C++ program.

Much more strict type checking (implicit casts from long long to int and from int to bool??), out-of-range checking, code flow checking (allowing to read from uninitialized variables? why would a language allow that?), fantastic IDE which finds a lot of other mistakes for you, fantastically convenient debugging, more explicit syntax (a language with less power actually leads you to writing more readable programs), more explicit error messages (and the errors are always reproducible!) – to name a few advantages, but I’ve probably missed some more.

I think that writing correct programs and fixing them quickly when they’re not correct far outweigh the disadvantages mentioned above (slower execution, longer programs). Even a 2x slowdown is almost never important in programming competitions, while a WA always is :) And I believe that most of the time at a programming contest is spent in thinking (including the thinking you do _while_ writing code), not in writing code, so the length of the program (or the typing speed, for that matter) is irrelevant.

And I believe the availability of various libraries is also not that important. So if I were to choose between C++ and Pascal, I’d choose Pascal because of the same argument (much more strict checking of everything).

C# (multi-paradigm: structured, imperative, object-oriented, event-driven, functional)

Pro: Faster than Java. The latest version of C# default libraries includes classes and algorithms for long arithmetic as well as in Java, but in C# you can use them as basic types (in Python it’s also so): c=a+b, etc. Linq.

Contra: The latest version of .NET is still not available at most of programming competitions.
VB (object-oriented and event-driven, procedural, component-based)
Difference from C#: Programming language is Visual Basic and not C#.

Opinion of alliumnsk: VB.NET is just C# with syntax inherited from VB to ease porting of VB apps. So there is no reason to even think about VB.NET.

Python (multi-paradigm: object-oriented, imperative, functional, reflective)

Opinion of _ph_:

Pro: Python – language of wide function. Man can write almost all types of programs in Python, except real-time programs. Python is unofficial language #3 in Google.

Python is well right for solving of easy-medium tasks thanks to short syntax and built-in means:

· built-in long arithmetic (integer and decimal as well)

· built-in list (aka vector<>), set, dict, tuple (aka struct)

· regular expressions (re)

· function sorted() for any sequences

· nice string operations

· nice constructers of lists

· functions sum(), max(), min() wich can work with lists etc.

Contra: From point of programming competitions:

· slow performance of programs (6x slower than С++) and especially slow input-output (you can’t read 10^6 of numbers in 1 sec without special tricks)

· not enough good IDEs (I know only one good – PyDev for Eclipse)

PHP and other languages.

I don’t see any sense to use them at competitions. If I’m wrong – tell me.

Conclusion:

It is best to learn and practice as much languages as possible, to collect the knowledge, to know the nuances, but it’s not so easy and isn’t always possible. We are humans and we can’t change our nature, but we can try to make it better. Each language has its own pros and contras and you can choose one of them to solve different problems more efficient.

You must decide for yourself what you prefer: freedom and flexibility or simplicity of coding-reading-debugging-maintaining; what speed do you need and so on.

I hope this tutorial helped you to understand and systematize all these languages for yourself.

Additional and used information:

Links:
Lisp as an Alternative to Java: http://norvig.com/java-lisp.html
Choosing the weapon discussion: http://codeforces.ru/blog/entry/254

C# – why is it not mono? : http://codeforces.ru/blog/entry/229

A bit about C# and Linq: http://codeforces.ru/blog/entry/245

Definitions:
Pascal: http://en.wikipedia.org/wiki/Pascal_(programming_language)
C++: http://en.wikipedia.org/wiki/C%2B%2B
Java: http://en.wikipedia.org/wiki/Java_(programming_language)
C#: http://en.wikipedia.org/wiki/C_Sharp_(programming_language)
Visual Basic: http://en.wikipedia.org/wiki/Visual_Basic
Python: http://en.wikipedia.org/wiki/Python_(programming_language)
Tags: java, c++, vb, c#, pascal, python, the best language, programming languages.
Thanks to: MikeMirzayanov, Petr, alliumnsk, OSt, dAFTc0d3r, _ph_, Peteris, ktuan, SkidanovAlex, Nerevar, dev_il, valergrad and to everybody who has taken part in discussion.

Top Coder schedule – Google Calendar

Posted in Sport programming & programming competitions on April 3rd, 2010 by Theodore Biryukov – 137 Comments

I deleted my calendar because I’ve found a better solution.
Darnley wrote a script wich parse Top Coder’s schedule and export it into Google calendar. Now script works correctly. I hope it wont change. :)
Thanks, Darnley.
read more »

Useful links for programmers

Posted in Sport programming & programming competitions on April 3rd, 2010 by Theodore Biryukov – 42 Comments

Here I will collect useful, in my opinion, and interesting links for programmers: links to educational resources, competition sites, online contests, literature and advices on training, blogs of other programmers, archives and solves of problems.

Mass printing… How to print locked pdf file.

Posted in Different cases on April 3rd, 2010 by Theodore Biryukov – 1 Comment

Sometimes we have a problem: we have a pdf file with restricted printing. E.g.: we have made this file, have pushed the restrictions, but we’ve forgotten the password…
What can we do if we need to print it?
I use linux, now – almost the latest ubuntu (9.04). But the number of version is not the matter.
So. I have an option, how to solve our problem:
pdftoppm copy.pdf copy.ppm  //each sheet of the pdf file will be saved in apart ppm file
convert *.ppm one.pdf  //people guess that it works fine to unite many images in one pdf file, but I don't know exactly. If it works than it will use very much operative memory.
for file in *.ppm; do ppmtojpeg $file > ${file/.ppm/.jpg}; rm $file; done  //we want to convert all ppm files to jpg files
ls -d *.ppm | sed 's/\(.*\).ppm$/mv "&" "\1.jpg"/' | sh  //we need to change the extensions of the files
convert *.jpg > one.pdf  //you can also try it to unite your images in one pdf but I give no guarantees it works.

Really you can stop, when you have ppm files, if you can print them correctly/if you can store them, because they are much larger than such of jpg.
So you can print your locked pdf files.
I’ve done it on my laptop under Linux Mint 7 (Ubuntu 9.04).
Function convert comes in package ImageMagick.

Today. Bi- or more lingual blog.

Posted in Common on April 3rd, 2010 by Theodore Biryukov – 2 Comments

Today I’ve decided to separate my blog in two parts: in English and in Russian.
I’ve decided to do it only after some challanges. I have no time to write a good blog or some additions for any blog-posting cms. And now my time is really limited because of many factors. So. I’ve made two blogs on blogger. And I’ve no problems more.
Here I’ll write information about new and interesting products, tendentions and technologies, about old but always interesting algorithms… All about programming.
And also about my evolution and thoughts about all in this world.
If you think that quality of google translate is enough for you, than you can read my blog in many other languages.

Current Developing Status

Posted in Alpha - the source of letters, Development on December 17th, 2009 by Theodore Biryukov – 178 Comments

I am a russian man. So I can make this program best in russian and to teach Russian. Now I am choosing the right methode and style of giving information. So, now my work is more linguistical, pedagogical and psychological. Because this project is for children and this is the main part of it, to do something interesting and impressive.
Currently I have:
Way of saving the information: structure of folders and xml-files.
Structure of base system and functions.
2 ways or 2 kinds of the realisation: with QT libraries for desktop use or with PHP and/or JavaScript + XML.
Many information about teaching reading.

And so, now it’s not the problem of realisation but the problem of right idea, methode and style of giving information.
I’ll try to solve it as fast as possible.

Google Chrome Beta for linux

Posted in News and reviews on December 9th, 2009 by Theodore Biryukov – 185 Comments

Google Chrome Beta for linux is now available to download!
First impression is brilliant. Package file for Ubuntu/Debian is 12mb and after download it installs in a second. Execution time is very fast! And first you can import configurations, bookmarks, history from any other browser (for me it’s Firefox). Ok. This is very good. No crashes. For example, Google Picasa crashes every minute and it’s impossible now to use it in linux. For beta version this is too much.

Now more detailed view: read more »

Structure of folders

Posted in Development on November 25th, 2009 by Theodore Biryukov – 2 Comments

Structure of folders: read more »