You are not logged in.

P_nk_e-P_e

Zuhörer

  • "P_nk_e-P_e" started this thread

Posts: 3

Date of registration: Sep 27th 2011

1

Thursday, October 6th 2011, 7:12pm

Hamster Challenge

Hi Leute,
hat noch jemand eine Lösung für die Hamster Challenge(die Flyer flogen gestern beim Grillabend rum)?
Ich habe 1526 schwarze Felder raus und würd gern wissen ob das stimmt.

Gruß
Simon

barbo

Zuhörer

Posts: 3

Date of registration: Oct 20th 2008

2

Friday, October 7th 2011, 2:58pm

Hi Leute,
hat noch jemand eine Lösung für die Hamster Challenge(die Flyer flogen gestern beim Grillabend rum)?
Ich habe 1526 schwarze Felder raus und würd gern wissen ob das stimmt.

Gruß
Simon
Hallo Simon!

super, dass Du eine Lösung hast (ich sag allerdings nix darüber ob die richtig ist oder nicht ;) ). Hast Du ein Programm dafür geschrieben? Wenn ja, wirf es mal als .txt File auf http://elfi.zew.uni-hannover.de/hamster/ ein :-)
Wir verlosen eine Kiste ClubMate unter den richtigen Einsendungen!! :P

Viele Grüsse!
Arne

This post has been edited 2 times, last edit by "barbo" (Oct 7th 2011, 3:01pm)


  • "Schokoholic" is male

Posts: 2,518

Date of registration: Oct 4th 2006

Location: Hannover

Occupation: Haarspaltung

3

Friday, October 7th 2011, 3:37pm

Veröffentlichst du auch die eingesandten Programme, wenn die Challenge vorbei ist? Da sind sicher ein paar interessante Sachen dabei. :)

P_nk_e-P_e

Zuhörer

  • "P_nk_e-P_e" started this thread

Posts: 3

Date of registration: Sep 27th 2011

4

Sunday, October 9th 2011, 3:07pm

ich hab leider in java geschrieben, das war ja laut Flyer nicht erwünscht ;)

nope

Praktikant

Posts: 31

Date of registration: Aug 27th 2010

5

Tuesday, October 25th 2011, 12:33am

Jemand hat mir erzählt, dass er diesen Hamster mal für kurze Zeit beobachten konnte und der soll ungefähr so gelaufen sein:


(am besten in irfanview gezoomt anschauen)
achja, läuft nur fast 11minuten, aber kann sagen, dass zum schluss eine überraschung kommt :)

Das Script erzeugt eine Textdatei aktueller Position+Farbe in jeder Zeile und gibt Felddimension wieder, also alles was ihr zum Erzeugen der Gif benötigt(war anstrengend... sind auhc nur 13k frames.. habe das mit gifsicle nur so umständlich lösen können, dass der aufwand zum mergen zum schluss gefühlt exponentiell stieg... -.-)
Hier der Code:
[php]<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
define("TOP",0);
define("RIGHT",1);
define("BOTTOM",2);
define("LEFT",3);
define("X",0);
define("Y",1);

function mod($x,$y) {
return ($x>=0) ? $x%$y : $x + ceil(abs($x)/$y)*$y;
}

function po($pos) {
print "(".$pos[X].",".$pos[Y].")";
}

class Field {
var $black=array();
var $blackCount=0;

function setBlack($pos) {
if(!$this->isBlack($pos)) $this->blackCount++;
$this->black[$pos[X]][$pos[Y]]=true;
//print "Set ".po($pos)." black\n";

}

function setWhite($pos) {
if($this->isBlack($pos)) $this->blackCount--;
$this->black[$pos[X]][$pos[Y]]=false;
//print "Set ".po($pos)." white\n";
}

function isBlack($pos) {
return $this->black[$pos[X]][$pos[Y]];
}

function blacks() {
return $this->blackCount;
}

function fieldDim() {
$possibleX = array_keys($this->black);
$dim['minX'] = min($possibleX);
$dim['maxX'] = max($possibleX);
$dim['minY']=0;
$dim['maxY']=0;

foreach($possibleX as $x) {
$possibleY = array_keys($this->black[$x]);
$tmpMinY=min($possibleY);
$tmpMaxY=max($possibleY);
if($tmpMinY<$dim['minY']) {
$dim['minY']=$tmpMinY;
}
if($tmpMaxY>$dim['maxY']) {
$dim['maxY']=$tmpMaxY;
}
}

return $dim;
}
}

class Hamster {
var $dir;
var $pos;
var $log;

function Hamster() {
$this->dir = RIGHT;
$this->pos = array(0,0);
$this->log = fopen("positions.txt","a+");
}

function turnCW() {
$this->dir = mod(($this->dir + 1) , 4);
}

function turnCCW() {
$this->dir = mod(($this->dir - 1) , 4);
}

function getPos() {
return $this->pos;
}

function move() {
switch($this->dir) {
case TOP:
$this->pos[Y]--;
break;
case RIGHT:
$this->pos[X]++;
break;
case BOTTOM:
$this->pos[Y]++;
break;
case LEFT:
$this->pos[X]--;
break;
}
}

function debug() {
switch($this->dir) {
case TOP:
$direction="top";
break;
case RIGHT:
$direction="right";
break;
case BOTTOM:
$direction="bottom";
break;
case LEFT:
$direction="left";
break;
}

$color = $GLOBALS['f']->isBlack($this->pos) ? "black" : "white";
$col = $GLOBALS['f']->isBlack($this->pos) ? "b" : "w";
fwrite($this->log,$this->pos[X].",".$this->pos[Y].",".$col."\n");
print "Pos: (".$this->pos[X].",".$this->pos[Y].")\nDir: ".$direction."\nField: ".$color."\n\n";
}
}

function f($b) {
if($b) print "true\n";
else print "false\n";
}


$f=new Field();
$h=new Hamster();



for($i=0;$i<15000;$i++) {
$h->debug();
if($f->isBlack($h->getPos())) {
//Turn field white, turn ccw
$f->setWhite($h->getPos());
$h->turnCCW();
} else {
//Turn field black, turn cw
$f->setBlack($h->getPos());
$h->turnCW();
}
$h->move();
}

print "Blacks: " . $f->blacks()."\n";

print_r ($f->fieldDim());
?>[/php]

This post has been edited 2 times, last edit by "nope" (Oct 25th 2011, 12:38am)


barbo

Zuhörer

Posts: 3

Date of registration: Oct 20th 2008

6

Thursday, November 3rd 2011, 5:55pm

Hamster Challenge - Auflösung

Moin zusammen!

für die Hamster Challenge war ja am 24.10. Einsendeschluß.

Wir bedanken uns sehr für Eure Einsendungen!!

Sofern wir uns bei den schwarzen Feldern nicht selbst verrechnet haben( ;) ), sind es genau 1298 schwarze Felder, die der Hamster nach 15.000 Zyklen hinterlassen hat.

Es hat eine Weile gedauert, die Skripte zu sichten.

Wir haben insgesamt fünf richtige Lösungen und es waren alle sehr gute Skripte!
Ein Teilnehmer hat das Hamsterprogramm sogar in nur einer kurzen PHP Zeile untergebracht, Respekt!

Leider haben aber auch zwei Teilnehmer das gleiche Skript eingereicht und wurden deswegen beide disqualifiziert :(

Unter den richtigen Einsendungen hat das Los entschieden.

Der Gewinner ist Thorsten mit seiner Lösung in Python!
Eine Kiste Club Mate steht für Dich in der elsa bereit. 8)

Wir werden die Teilnehmer aber auch noch einzeln anschreiben.

Viele Grüsse!
Arne