Chess Engines Algorithms

Γενικά θέματα για τις γλώσσες προγραμματισμού που δεν καλύπτονται από τις άλλες περιοχές της κατηγορίας.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
billiaswhs
Δημοσιεύσεις: 346
Εγγραφή: 11 Νοέμ 2004 00:29
Επικοινωνία:

Chess Engines Algorithms

Δημοσίευση από billiaswhs » 12 Σεπ 2010 23:53

ok νομιζα ότι ήθελες να το φτιάξεις ολόκληρο και το γραφικό περιβάλλον

Άβαταρ μέλους
Kainourios
Ruby Moderator
Δημοσιεύσεις: 504
Εγγραφή: 18 Μάιος 2005 16:20
Τοποθεσία: Κορυδαλλός
Επικοινωνία:

Chess Engines Algorithms

Δημοσίευση από Kainourios » 13 Σεπ 2010 00:10

tommai έγραψε:γιατί να μπλέκω και με php...?? μια μηχανή θα ήθελα να κάνω να τρέχει με το ARENA δεν με νιάζει αυτήν την στιγμή πόσο δυνατή θα είναι η μηχανή αλλα μόνο να τρέχει... ίσως κάποιος να ξέρει κάποια μηχανή open source σε C++ να πάρω κάποια γεύση το τί γίνεται και πώς εφαρμόζεται ο αλγόριθμος πάνω εκεί...???
Αν μπεις στο FICS και δεις τα profiles των μηχανών θα βρεις πολλές open source μηχανές, να μερικές που βρήκα μόλις τώρα στα πολύ γρήγορα:

http://marcelk.net/mscp/
http://www.arasanchess.org/
http://marcelk.net/rookie/
http://umko.sourceforge.net/

Γενικά πολύ ενδιαφέροντα links σε αυτό το post, με πορώσατε! :) Πολύ ωραίο υλικό για διάβασμα.

tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

Chess Engines Algorithms

Δημοσίευση από tommai » 13 Σεπ 2010 00:48

μπορώ να πω και εγώ έχω φάει τρελή πώρωση με αυτά και ευχαριστώ στα παιδιά για τα links και και κάθε βοήθεια που δίνουν...πραγματικά πολύ καλή δουλειά!!! κοιτάζω και τα links σου φίλε Kainourios και επανέρχομαι με νεότερα...

Υ.Γ: είμαι πρόθυμος να αγοράσω και βιβλίο εαν υπάρχει κάτι ανάλογο με Chess Engines σε C++ ......
όποιος ξέρει κάτι ας μας πεί.....

Crocodile23
Δημοσιεύσεις: 2
Εγγραφή: 23 Δεκ 2010 00:56

Chess Engines Algorithms

Δημοσίευση από Crocodile23 » 23 Δεκ 2010 02:38

Kainourios έγραψε:Θα σου πω τι ξέρω σε θεωρητικό επίπεδο σαν σκακιστής που το έχω ψάξει λίγο (και είναι συμπεράσματα δικά μου οπότε ίσως κάπου να είναι λάθος).
Τα περισσοτερα ειναι τραγικα απο οσα λες. Λαθος δηλαδη. :D

Υπάρχουν πολλές μηχανές για σκάκι, αυτές που ξεχωρίζουν σε δυναμικότητα είναι ο fritz, η rybka, ο shredder και ο junior με διαφορές στον τρόπο παιξίματος ανάλογα με το μέτρημα - στρατηγικό τρόπο παιξίματος.
Διαφορα δυναμικοτητας αυτη τη στιγμη στο περιπου απο ενα τουρνουα οπου ο καθενας επαιξε με τον καθενα 60 παιχνιδια:

Κώδικας: Επιλογή όλων

01: Houdini 1.5 x64          979.0/1200   
02: Rybka 4                  902.5/1200   
03: Ivanhoe B49jA x64        893.0/1200   
04: Stockfish 1.9.1 x64      811.0/1200   
05: Critter 0.90 x64         781.5/1200  
06: Komodo 1.3b1 x64         683.0/1200  
07: Naum 4.2 x64             671.0/1200   
08: Gull  1.1  x64           607.0/1200   
09: Deep Fritz 12            583.0/1200  
10: Deep Shredder 12 x64     573.5/1200   
11: Deep Sjeng 2010 w32      555.0/1200   
12: Spark 1.0 x64            543.5/1200   
13: Hiarcs13.1SP             527.5/1200   
14: Protector 1.3.6 r387x64  511.5/1200   
15: Thinker 5.4D Inert x64   486.0/1200   
16: Strelka 2.0 B x64        454.0/1200   
17: Hannibal 1.0 x64         431.0/1200   
18: Deep Onno 1-2-70 x64     417.5/1200   
19: Booot 5.1.0              403.0/1200   
20: Deep Junior 12 x64       402.5/1200   
21: Zappa Mexico II x64      384.0/1200
Οπως φαινεται ανετα το Houdini 1.5 ειναι το δυνατοτερο ολων.
Ναι περναει και την Rybka!! Συνεβη και αυτο μετα απο 5 χρονιας συνεχους κυριαρχιας της Rybka ολο στην κορυφη.

Π.χ. η rybka που αυτή τη στιγμή είναι η πιο δυνατή μηχανή, παίζει πιο στρατηγικά από όλες τις άλλες μηχανές μετρώντας τις λιγότερες κινήσεις ενώ ο junior είναι η πιο brute force μηχανή.
Sorry που το λεω ωμα, αλλα λες χαζομαρες.
Ναι μεν η Rybka παιζει αρκετα στρατηγικα αλλα οχι πιο στρατηγικα απο ολες τις αλλες μηχανες και βεβαια σε καμια περιπτωση το Junior δεν ειναι η πιο brute force μηχανη.


Ο Junior ξεκίνησε ερασιτεχνικά και άρχισε να βρίσκει ματ σε μια, έπειτα ματ σε δύο κλπ. μέχρι που έφτασε εδώ που έφτασε και θεωρείται ο πιο κομπιουτερίστικος τρόπος παιξίματος καθώς μετράει τις περισσότερες κινήσεις από όλες τις άλλες μηχανές (και παίζει πιο τακτικά από όλες).
Οπως ειπα ολο αυτο ειναι τελειως λαθος και απορω απο που εβγαλες αυτα τα συμπερασματα?? :o

Και ισα ισα που το Junior ειναι το λιγοτερο κομπιουτεριστικο προγραμμα!! Παιζει πολλες φορες speculatively δηλαδη κινησεις που ενω δεν εχει υπολογισει οτι ειναι σωστες αλλα τζογαρει/ρισκαρει οτι ειναι. Το Junior 7, to 8 και το 10 αλλα και ολες οι αλλες εκδοσεις ως την 12 που ειμαστε τωρα παιζουν πολυ ελκυστικο σκακι και παρα πολυ επιθετικο σκακι και δεν μπορουσες να καταλαβεις αν ειναι μηχανη ή οχι διοτι εκανε κινησεις ρισκου ετσι ωστε να δημιουργησει επιθεση στον βασιλια. Και αυτο το εκανε δινοντας υλικο για να δημιουργησει την επιθεση, κανοντας θυσιες κλπ. Πολυ επιθετικο ειδος σκακιστικης μηχανης!!

Παλια(πριν 5-6-7 χρονια) ηταν και απο τα 1-2 κορυφαια. Βεβαια πλεον ειναι πολυ πιο αδυναμο οπως μπορει να δει κανεις στην λιστα που εδωσα αφου βρισκεται στην 20η θεση. :(


Ο υπολογιστής στην ουσία αυτό κάνει όπως φαντάζομαι θα ξέρεις αφού έχεις ασχοληθεί, μετράει παρακάτω όλες τις πιθανές κινήσεις με brute force.
Ναι μονο που ουτε τωρα ουτε ποτε δεν επαιζαν ετσι σκακι τα προγραμματα(οι σκακιστικες μηχανες).
Ποτε δεν χρησιμοποιησαν brute force!


Οπότε αν θες να φτιάξεις μια μηχανή, ξεκίνα από το να φτιάχνεις να βρίσκει ματ σε μια για αρχή (ήθελα να το κάνω πτυχιακή κάποτε). Οι παραπάνω μηχανές είναι κλειστού κώδικα, υπάρχει μια πολύ δυνατή ανοιχτού κώδικα, ο Crafty όπου μπορείς να διαβάσεις τον κώδικα του και στη wikipedia λέει επίσης αλγορίθμους και τεχνικές για το τι χρησιμοποιεί.
Αν ξεκινησει με το Crafty ΚΑΗΚΕ!
Ακομα και εμπειροι προγραμματιστες δεν μπορουν να το καταλαβουν πως λειτουργει, πολυ απλα διοτι το Crafty εχει φοβερα πολυπλοκο κωδικα.

Επίσης όλες οι μηχανές χρησιμοποιούν ένα βιβλίο ανοιγμάτων γιατί στην αρχή του παιχνιδιού δε μπορούν να προβλέψουν - καταλάβουν τίποτα και παίζουν ότι να 'ναι, τους φαίνονται όλα ίδια (είναι πολύ χαοτικό το παιχνίδι όσο υπάρχουν πολλά κομμάτια, όσο προχωράει η παρτίδα αρχίζει να ξεκαθαρίζει).
Αυτο ισχυε εως και πριν 3-4 χρονια, με την ελευση της Rybka ομως καθως και των νεων μηχανων οπως Robbolito, Ivanhoe, Houdini, Critter, Stockfish δεν ισχυει πια αυτο και αν δεις παιζουν πολυ λογικα το ανοιγμα απο μονες τους.

Αντίθετα όσο μειώνονται και φτάνουμε στο φινάλε τόσο καλύτερα παίζουν, μάλιστα το παιχνίδι έχει λυθεί για όλες τις πιθανές θέσεις μέχρι 7 κομμάτια αν δεν κάνω λάθος και μπορείς να κατεβάσεις την βάση όπου είναι 4TB. Οπότε όταν υπάρχουν λίγα κομμάτια ο υπολογιστής δε χρειάζεται να υπολογίζει αλλά απλά κοιτά τη βάση και καταλαβαίνει πώς κερδίζει κλπ.
Το παιχνιδι δεν εχει λυθει για ολες τις θεσεις με 7 κομματια ενω εχει λυθει για τα 6.
Για ολα τα 6 κομματια η βαση δεδομενων εχει μεγεθος 1.3 TB.
Για τα 7 ειναι πολυ μεγαλυτερη αν θυμαμαι καλα γυρω στα 35 TB(terabytes)!!

Έχω ένα φίλο που έχει κατεβάσει όλες τις πιθανές θέσεις για 6 κομμάτια και είναι 60GB η βάση (βλέπεις τη διαφορά; Προσθέτεις ένα κομμάτι επιπλέον και από 60GB πάμε στα 4TB, ανεβαίνουμε εκθετικά σε αριθμό θέσεων όσο προσθέτουμε κομμάτια όπου χάνεται η μπάλα κάποια στιγμή).
Οπως ειπα το μεγεθος για ολα τα 6 κομματια ειναι περιπου 1300 GB. Το ξερω καλα γιατι τα εχω σε 4 δισκους.

Όσο για τη σύνδεση της μηχανής με ένα UI, χρησιμοποιείται ένα stadar πρωτόκολλο, αλλά προσωπικά είχα διαβάσει τα specs και δεν το είχα, αν και έχω φτιάξει GUI να παίζεις σκάκι μόνος σου. Υπάρχουν έτοιμα open source UIs πάντως, το arena είναι το γνωστότερο αλλά έχει σταματήσει να αναπτύσσεται πλέον.
Δεν εχει σταματησει. Πριν μια εβδομαδα βγηκε καινουρια εκδοση. Η Arena 2.5 αν θυμαμαι καλα.


Είχε φτιαχτεί ένας άλλος υπερυπολογιστής, η hydra όπου απ' ότι ξέρω ήταν ότι πιο δυνατό υπήρξε ποτέ (την έβαζαν σε τουρνουά και όποτε έχανε, της διπλασίαζαν το hardware, έτσι έφτασε σε ένα σημείο που δεν ξανάχασε, έκανε μόνο ισοπαλίες... εξού και το όνομα hydra, τις έκοβες το ένα κεφάλι και φύτρωναν 2 :)).
Αρχισε να χανει. Απο την Rybka.
Για αυτο και εξαφανιστηκε απο το προσκυνιο.

Γενικά αν ήταν οpen source οι μηχανές θα είχαμε φτάσει σε πολύ καλύτερο επίπεδο σκακιστικών προγραμμάτων, πρόσφατα υπήρξε μια μηχανή που ήταν open source (goldfish νομίζω λέγεται) και έλεγε ότι είχε κάνει με reverse engineering αντιγραφή τη μηχανή της rybka... παίξανε όμως σε ένα τουρνουά και έχασε. Αυτά, σταματάω εδώ γιατί όλο μεγάλα άρθρα γράφω και δεν τα διαβαζει κανείς! Ελπίζω να βοήθησα :)

Ippolit λεγοταν η μηχανη που υποτιθεται προηλθε απο reverse engineering της Rybka 3.
Οσο για open source μηχανες εχουμε παρα πολλες τελευταια και πολυ δυνατες οπως, το Stockfish και το Ivanhoe.

tommai έγραψε:Θα ήθελα να προγραμματίσω μια τέτοια μηχανή ...
ξέρει κάποιος σε τι αλγόριθμους πρέπει να δουλέψω...?
έχω βρει του Shannon type A και B... με brute force και minimax...
ξέρει κανείς να μου πει...? επίσης όποιος έχει κάνει κάτι ανάλογο θα χαρώ πολύ να με βοηθήσει να αρχίσω....:-)
Λοιπον.
Καλο ειναι να ξερεις C ή και C++ γιατι αυτες ειναι οι πιο ευχρηστες γλωσσες για να γραψεις ενα σκακιστικο προγραμμα και γιατι εχουν τα πιο καλα περιβαλλοντα για να δουλεψεις και γιατι ειναι μαλλον οι ταχυτερες και γιατι υπαρχουν πληθωρα σκακιστικων προγραμματων απο πολυ αδυναμα εως πανισχυρα που να ειναι ανοιχτου κωδικα.

Μια σελιδα καταρχην που εχει τα παντα και μπορει να σου λυσει πολλες αποριες ειναι η:
http://chessprogramming.wikispaces.com/

Παμε στην θεωρια τωρα.

Διαβασε λιγα πραγματα για A-B, minimax κλπ:
http://theory.lcs.mit.edu/~plaat/thesis.ps.gz

Μια μικρη αναλυση για απο τι ακριβως αποτελειται μια σκακιστικη μηχανη:
http://www.frayn.net/beowulf/theory.html

Επειτα για μια πιο βαθια βημα-βημα αναλυση του πως να γραψεις ενα ολοκληρωμενο προγραμμα:
http://www.chessbin.com/page/Developmen ... ngine.aspx

Το ιδιο με πανω αλλα λιγοτερο αναλυτικα:
http://www.mizarchessengine.com/columns ... ss-engine/

Λιγα λογια για τα Bitboards(αν επιλεξεις αυτου του ειδους τον τροπο χειρισμου των θεσεων να εχει το προγραμμα σου):
http://www.fzibi.com/cchess/bitboards.htm

ΟΛΑ ΣΕ ΕΝΑ!
Alpha-Beta.
Evaluation Functions.
Evaluations.
A Chess playing computer program.
Adaptive Null-move pruning.
Algorithm better than A-B.
Enhanced Iterative deepening.
Forward pruning analysis.
Proof number search in Chess.
Verified Null-move pruning.
http://www.mediafire.com/?jzedf6ef6dj8k99

Μολις διαβασεις αυτα διαβασε τον κωδικα απο διαφορες απλες μηχανες. Καλυτερα να ξεκινησεις με:

•MicroMax. Ενα πολυ απλο προγραμματακι παρα πολυ αδυναμο, αλλα ο δημιουργος του εξηγει σε 34 σελιδες τις διαφορες λειτουργιες του κωδικα του!!!! Φοβερο για αρχη για να μαθει κανεις τα βασικα.
http://home.hccnet.nl/h.g.muller/max-src2.html

•TSCP. Απο αυτο ξεκιναν οι περισσοτεροι. Απλο κωδικας αν και μερικα σημεια μπερδευουν.
Πολυ αδυναμο.
http://www.tckerrigan.com/Chess/TSCP

•Faile. Μαλλον το καλυτερο για να ξεκινησει κανεις. Απλο και κατανοητο. Πολυ αδυναμο και αυτο.
http://faile.sourceforge.net/download.php

•Olithink. Μια απο τα ιδια με το Faile.
http://home.arcor.de/dreamlike/chess/index.html

•Stockfish! Το 4ο δυνατοτερο προγραμμα αυτη τη στιγμη. Για τελειως προχωρημενους! Απο τα δυνατοτερα προγραμματα που υπαρχουν! Σε ανοιχτο κωδικα και με πολλα σχολια μεσα του για ευκολη κατανοηση των αλγοριθμων του. Αλλα πολυ περιπλοκο για αρχαριους ή μετριους στον προγραμματισμο.
http://www.stockfishchess.com/download/all/

•Ivanhoe!! Το 2ο ή 3ο δυνατοτερο προγραμμα αυτη τη στιγμη. Ο κωδικας του δεν εχει σχολια και ειναι αρκετα πολυπλοκος για να τον κατανοησει καποιος. Θελει μηνες. Για προχωρημενους!!
http://chess.cygnitec.com/engine/ivanho ... 999950k.7z

Και τελος οταν γραψεις την μηχανη θα πρεπει να αποφασισεις πως θα επικοινωνει με τις αλλες μηχανες ή με ανθρωπους για να παιζει.
Μπορεις να φτιαξεις το δικο σου περιβαλλον(GUI) αλλα αυτο ειναι αχρειαστο αφου υπαρχουν τοσα ωραια διαθεσιμα.
Οποτε πρεπει να αποφασισεις σε τι πρωτοκολλο θα φτιαξεις την μηχανη σου. Αυτο ειναι το ευκολο βεβαια. Αν φτιαξεις την μηχανη και μετα αυτο ειναι το πιο απλο μετα.
Υπαρχουν 2 ευρεως διαδεδομενα πρωτοκολλα:

Το Winboard και το UCI. Αυτο που δυστυχως επικρατει τα τελευταια χρονια ειναι το UCI. Μπορεις βεβαια να κανεις την μηχανη σου να υποστηριζει και τα 2. Πολυ απλα. Το κανουν τοσες και τοσες μηχανες.

Πληροφοριες για το πως θα κανεις την μηχανη σου Winboard, θα βρεις εδω:
http://www.gnu.org/software/xboard/engine-intf.html

Ενω πληροφοριες για το πως θα κανεις την μηχανη σου UCI, θα βρεις εδω:
(σημειωτεον οτι τα Houdini,Rybka,Ivanhoe,Stockfish,Shredder,Junior,Critter κλπ κλπ χρησιμοποιουν το UCI πρωτοκολλο).
http://download.shredderchess.com/div/uci.zip

Crocodile23
Δημοσιεύσεις: 2
Εγγραφή: 23 Δεκ 2010 00:56

Chess Engines Algorithms

Δημοσίευση από Crocodile23 » 23 Δεκ 2010 15:01

Να συμπληρωσω:
soteres2002 έγραψε:Des kai Simulated Annealing. Einai algorithmos efious veltistopoiisis pou kanei minimization se mia sinartisi kostous psaxnontas ston xwro katastasewn ton skakieron, kai sou vriskei topika i olika veltistes liseis... Poli klassikos AI algorithmos, vriskei ti lisi se tetarstious xwrous se mono 1-2 seconds!! Mas to evalan kai ws askisi se project texnitis noimosinis sto panepistimio. isws kratisa ton kwdika - an ton vrw tha sou stilw..
Δεν βρισκει καθολου ευκολη εφαρμογη στο γραψιμο σκακιστικων μηχανων.

Kati allo poli kalo pou boreis na dokimaseis einai o A* algorithmos...

Iparxoun kai pio eksidikevmena pragmata pou gia na ta kaneis prepei na psaxeis se bibliographia... San klassikes liseis padws o A* kai i prosomioumeni anwptisi (simulated annealing) einai poli apotelesmatikes....
Και εδω δεν λειτουργει καλα ο Α*. Και απορω που λες οτι ειαι κλασικη λυση. Κανεις δεν τον χρησιμοποιει στο σκακι!! Το Β* το χρησιμοποιησε ο Berliner παλαιοτερα με καποια επιτυχια αλλα αυτο πριν καμια 30αρια χρονια και εχει εγκαταληφθει αφου δεν συμφερει.

Αυτο που κατα κορον(99.99%) χρησιμοποιειται ειναι αλγοριθμοι depth-first. Ο Α* ειναι best-first.

Και βασικα ολοι(σχεδον εκτος απο καποιες δοκιμαστικες μηχανες που ειναι πολυ αδυναμες αδυναμες) χρησιμοποιουν καποια τροποποιηση της Αlpha-Beta!
Συνηθως χρησιμοποιουν κυριως Principal Variation Search(PVS) ή ακομα και Negascout αλλα ποτε μονη της την MTD-f. Παρολο που υπαρχουν μιξεις αναμεσα σε αυτους τους τροπους με μερικα προγραμματα να χρησιμοποιουν PVS με λιγο ή και πολυ απο MTD-f.

Αλλα ο σκελετος των σημερινων προγραμματων για το search τους ειναι η Alpha-Beta.
Η οποια ειναι παντα συνοδευομενη απο "Iterative deepening", "Transposition tables",
"Aspiration windows", "Null-move" και "Quiescence search".

Μετα προσθετεις και αλλες τεχνικες για βελτιωση της δυναμης στην search τους οπως διαφορες τενικες pruning ή reductions, οπως Null-move(αυτη ετσι και αλλιως πρεπει να την εχεις αφου σε οποιοδηποτε προγραμμα βοηθαει), multicut, probcut, razoring, delta-pruning, AEL-pruning, futility pruning, history-pruning, LMR, FHR, null-move-reductions, κλπ κλπ.

►Τα προγραμματα βασικα αντλουν την δυναμη τους απο 2 κυρια πραγματα. Ο σχεδιασμος τους δηλαδη χρειαζεται 2 βασικα πραγματα:
-Search.
-Evaluation.

Για την search ειπα πιο πανω τις τεχνικες που χρησιμοποιουνται.
Για την evaluation τα πραγματα ειναι πιο ασαφη. Η evaluation βασικα ειναι η "εξυπναδα" που εχουν. Τι κανει η evaluation?

Επειδη η search δεν μπορει να ψαξει ολες τις κινησεις μπροστα για να δει που θα οδηγηθει μια κινηση, φτανει σε καποιο βαθος πχ 20 κινησεις μπροστα. Εκει λοιπον βρισκει μια θεση η οποια ομως δεν ειναι (συνηθως/99.999%) η τελικη, δηλαδη ματ, ή ισοπαλια, οποτε η search ειναι ανημπορη να πει αν ειναι καλη θεση ή οχι, οποτε να ξερει αν η κινηση που οδηγησε σε αυτη την θεση ειναι καλη ή οχι. Εκει αναλαμβανει η evaluation και δινει εναν αριθμο στην θεση. Πχ με μια τελειως απλοικη evaluation μετρας το υλικο που υπαρχει και θετεις πχ βασιλισσα=9, πυργος=5, αξιωματικος=3, ιππος=3, πιονι=1 και το ιδιο και για τον αντιπαλο με αρνητικο προσημο, οποτε βγαζεις οτι η eval() για αυτη την θεση ειναι +1.2. Για μια αλλη θεση +0.5 και ετσι η search κανει τις συγκρισεις και μεσω της alpha-beta διαδικασιας που εχει επιλεγει, επιλεγει και την καλυτερη αρχικη κινηση ωστε να οδηγηθει στο υψηλοτερο τελικο σκορ.

tommai
Δημοσιεύσεις: 73
Εγγραφή: 18 Ιαν 2008 03:46

Chess Engines Algorithms

Δημοσίευση από tommai » 18 Ιουν 2012 14:59

Crocodile23 έγραψε:
φίλε μου απίστευτο το ολοκληρομένο post σου αλλά μήπως μπορείς να ξανα ανεβάσεις το mediafire link σου γιατί είναι down ?

humongo
Δημοσιεύσεις: 1
Εγγραφή: 20 Οκτ 2012 22:40

Chess Engines Algorithms

Δημοσίευση από humongo » 20 Οκτ 2012 23:21

Πέρα από το micromax του Muller συστήνω ανεπιφύλακτα τις μινιμαλιστικές μηχανές του Toledo.

Πραγματικά αριστουργήματα coding στην C!

Επίσης έχουν αρκετά δυνατό ΕΛΟΤ (~2200-2300). Σε obfuscated μορφή πρόκειται για προγράμματα των 1000-1500 bytes.

http://en.wikipedia.org/wiki/Toledo_Nanochess

Απάντηση

Επιστροφή στο “γλώσσες προγραμματισμού - γενικά”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες