On 01-11-11 16:35, Neil Van Dyke wrote: > Paulo J. Matos wrote at 11/01/2011 10:57 AM: >> Anyone working on a Racket starter package for the Ants Google >> Challenge? http://aichallenge.org/ > > Here's the documentation they point one to for writing your their > starter pack: > https://github.com/aichallenge/aichallenge/wiki/Ants-Starter-Pack-Guide > https://github.com/aichallenge/aichallenge/wiki/Ant-bot-input-output > > It looks easy to implement. > > Also, I think that, as important as having a Racket starter kit > available, is having a contestant team that will use the starter kit to > put in a serious effort. > > A team is a good idea, because you can develop different approaches in > parallel, and then decide which approaches to combine and refine. You > might also be able to use additional people to get generic ``AI'' > libraries working in parallel, separate from their application-specific > use of those libraries. > > More importantly, remember: it is not enough for Racket programmers to > merely win; Java programmers must lose.
Currently it looks like C/C++/Java is all there is at the top... Attached some racket code that implements a do-nothing-bot that passes the minimal test from the tools. Should be simple to convert to a starter-kit. Marijn
#lang racket
;;; multi-dimensional arrays
(require srfi/25)
(define-syntax-rule
(call-with-hash function hash keys ...)
(function (car (hash-ref hash 'keys)) ...))
(define (end-turn port)
(displayln "go" port)
(flush-output port) )
(define (main)
(define setup-data (parse-turn-data (read-turn-data "ready"
(current-input-port))))
(define bot
(call-with-hash create-bot setup-data
turntime
rows cols
turns
viewradius2 attackradius2 spawnradius2
player_seed))
(displayln setup-data (current-error-port))
(end-turn (current-output-port))
(let loop ()
(let ((data (parse-turn-data (read-turn-data "go" (current-input-port)))))
(if (hash-has-key? data 'end)
(begin (end-turn (current-output-port))
(displayln data (current-error-port)))
(begin (end-turn (current-output-port))
(displayln data (current-error-port))
(loop)))))
)
(define (read-turn-data end-string port)
(let loop ((ret '()))
(let ((line (read-line port)))
(if (string=? line end-string)
ret
(loop (cons line ret))))))
(define (parse-turn-data data)
(make-immutable-hash
(map (lambda (datum)
(let ((split-datum (regexp-split " +" datum)))
(cons (string->symbol (car split-datum)) (map string->number (cdr
split-datum)))))
data)))
(define (create-bot turntime rows cols turns viewradius2 attackradius2
spawnradius2 player_seed)
(define terrain (make-array (shape 0 rows 0 cols)))
#t
)
(main)
signature.asc
Description: OpenPGP digital signature
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users

