http://qs1969.pair.com?node_id=1553
mitd's user image
User since: Dec 30, 1999 at 08:39 UTC (24 years ago)
Last here: Oct 31, 2017 at 21:33 UTC (6 years ago)
Experience: 3503
Level:Curate (13)
Writeups: 165
Location:Clearview Twp, ON, CDN
Best Girl: Laurie
Gene Pool Count: 7
URL Made in the Dark
User's localtime: Mar 29, 2024 at 09:54 -04
Scratchpad: View
For this user:Search nodes
Watch for posts by this user

These guys were really nice to me until I told them they weren't at Hooters.

Old fart coder, John MacDonald handed me the the Pink Camel book in 1991, bought my own have had a hump every since.

AI Competition -- 'The Learning Machine Challenge'
Sample Player

#!/usr/bin/perl -w # rnd_player.pl - a random, game independent, challenge player # # This player can be used as an example for a rather generalized playe +r. # The player's logic is quite simple: it response to a request to play +, # it emits a single symbol which is picked in random from the alphabet # received from the game organizer (judge). The player logic ignores # the score it receives during the game and contains with generating # random moved until it is told by the organizer that the game is over # The program also ignores any symbols it receives, which might be rel +ated # to the moves of other game participants. # # usage: invoke though a judge/game program. for debug, simple invoke +with # command line arguments # ## MitD 08/10/2001 - ported from tcl -> perl # use strict; use Carp; my $Version = "1.0"; my $Me = "MitD"; # ## we keep our game symbols in a global # my $DEBUG = 0;en my @symbols = (); my $score = 0; $|++; println ('@command info MitDRnd'); println( '# Made in the Dark'); println( '# Artificial Intelligence NV Challenge'); println ('# Player'); println( '# Copyright Peter G. Marshall'); println( '# This is free software; you can redistribute it'); println ('# and/or modify it under the same terms as Perl itself.'); while (<STDIN>) { chomp; process_line($_); } # ## input channel processor # sub chan_input { my $sym = shift; } # ## score channel processor # sub chan_score { my $arg = shift; $score += $arg; } # ## command channel processor # sub chan_command { my ($verb, $args) = split(/ /,$_[0]); if (defined($args)) { eval "command_$verb(\"$args\")"; croak "chan_command with args eval failed: $@\n" if ($@); } else { eval "command_$verb()"; croak "process no args \@ eval failed: $@\n" if ($@); } } # ## process exit command # sub command_exit { exit; } # ## process symbol command # sub command_symbol { my $sym = shift; push(@symbols, $sym); debug ( "SYM: " . join(' ',@symbols) . "\n"); } # ## process new game command # sub command_new { debug ("command new done"); @symbols = (); } # ## process play command # sub command_play { my $sym = $symbols[rand scalar(@symbols)]; println ("\@output $sym"); } sub process_line { my $line = shift; debug ("PL: $line"); # ignore empty lines or lines that begin with # (commennts); return if ( length($line) == 0 or ($line =~ /^#/) ); if ( index($line,'@') == -1) { eval "chan_input(\"$line\")"; croak "process no \@ eval failed: $@\n" if ($@); } else { $line = substr($line,1); my ($channel, $args) = split(/ /,$line,2); eval "&chan_$channel(\"$args\")"; croak "process with \@ eval failed: $@\n" if ($@); } } sub println { print shift() . "\n"; } sub debug { print STDERR $_[0],"\n" if $DEBUG; }