Language for Chess Position Evaluation (experimental) [closed]

3

Il mio obiettivo è, tramite analisi del modello e statistiche, (oltre alla mobilità e alla posizione del pezzo) costruire un analizzatore di valutazione della posizione degli scacchi (piuttosto che andare semplicemente alla ricerca della forza bruta).

Id piace ascoltare alcuni pensieri in una lingua che sarà interessante / divertente / stimolante da apprendere e ragionare. Idealmente la lingua sarebbe adatta per:

  1. Analisi statistica
  2. Analisi del modello
  3. Native Array and Vector Operations
  4. Funzioni matematiche native

Nota:

  1. Non ho bisogno di una GUI e non posso nemmeno arrivare al punto di un "motore di spostamento" ma semplicemente fermarmi a un motore di valutazione della posizione
  2. Non mi interessa la velocità.
  3. Sono personalmente più a mio agio con Python ma potrei essere interessato a provare qualcos'altro. (anche se sentiti libero di suggerire questo se pensi che sia adatto).
  4. Sono particolarmente curioso di sapere quanto sia adatto un linguaggio funzionale in questo contesto.
posta Diabellical 21.12.2012 - 21:14
fonte

3 risposte

2

Quando ho letto le tue esigenze, ho immediatamente pensato di usare R, come @JimmyHoffa. Inoltre, ho fatto una grande quantità di programmazione in R (e in Python). Penso che R sia ideale per questo tipo di lavoro a causa di:

  • La grande quantità di strumenti statistici facilmente disponibili. Pensa a Princple Component Analysis (PCA), a tutti i tipi di tecniche di ottimizzazione, ecc. E se non è già disponibile ci sono molti, molti più pacchetti disponibili sul CRAN (Comprehensive R Archive Network), ci sono più di 3000 pacchetti lì. Un buon modo per esplorare questi pacchetti tematici (es. Econometria, analisi dei dati spaziali, ecc.) È quello di esaminare le diverse viste delle attività disponibili qui .
  • È open source e disponibile gratuitamente.
  • Una community ampia e attiva che puoi utilizzare per ottenere risposte a domande specifiche. Ad esempio, la mailing list R-help o il tag [r] su StackOverflow.
  • Tutte le strutture dati richieste (float, matrici, matrici, tabelle, ecc.)
  • Una sintassi potente, funzionalmente orientata che si adatta bene alla natura orientata ai dati dell'analisi dei dati. I cicli espliciti for sono raramente necessari (sebbene esistano nella lingua), invece si usano i cicli di stile apply . Ciò significa che si applica una funzione su una struttura dati. Ad esempio, puoi applicare la funzione mean sulle righe di una matrice per ottenere la riga significa:

    apply(matrix, 2, mean) # where 2 is the dimension over which to apply
    

    questo condivide alcune somiglianze con le list comprehensions in python.

  • Facile integrazione di codice C ++, Fortran, ecc. per quando si desidera sostituire una sezione critica delle prestazioni con un codice compilato.
risposta data 22.12.2012 - 10:38
fonte
5

Penso che la portata del tuo problema rientri esattamente nello scopo di R, anche se non ho mai scritto o lavorato con R. Ne ho sentito parlare bene e ti suggerirei caldamente di iniziare a esaminarlo.

link

Provenendo da Python questo sarà un grande cambiamento che sto scommettendo dal momento che è funzionale, ma non so quanto sia puro, quindi potrebbe non essere poi così male se ha buone strutture multi-paradigma.

Se ciò non risulta essere a tuo avviso elegante, suggerirei altre due lingue:

  • Quello che trovo più elegante di qualsiasi che abbia mai visto, Haskell, che è dichiarativo (che suona come quello che chiedi nel modo in cui inquadra il tuo approccio) e buono per l'elaborazione dei dati set.

  • E un altro che facilita la programmazione dichiarativa pur avendo strutture di meta-programmazione che hanno dimostrato di essere inestimabili nella scrittura di sistemi che analizzano le cose con un po 'più di intelligenza, LISP (o Scheme).

risposta data 21.12.2012 - 22:40
fonte
-2

Suggerirei python con numpy e scipy . Dato che hai già dimestichezza con Python, numpy e scipy ti forniscono le funzioni di array e matematica di cui hai bisogno.

    
risposta data 22.12.2012 - 04:29
fonte