HAMURABI.BAS

July 27, 2010

The game strategy implemented below is to always use exactly enough grain to feed all the people, selling land as needed to achieve that objective, and to always plant as many acres as possible; but don’t sell more land than necessary, as the rats will have less to eat if your silos are nearly empty. In the last round, buy enough land to assure at least ten acres per person; it is better to err on the side of too much land rather than too little, as the incoming steward will be able to sell land if needed.

> (hamurabi)
                                HAMURABI
               CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY

TRY YOUR HAND AT GOVERNING ANCIENT SUMERIA
FOR A TEN-YEAR TERM OF OFFICE.

HAMURABI:  I BEG TO REPORT TO YOU,
IN YEAR 1, 0 PEOPLE STARVED, 5 CAME TO THE CITY,
POPULATION IS NOW 100
THE CITY OWNS 1000 ACRES.
YOU HARVESTED 3 BUSHELS PER ACRE.
RATS ATE 200 BUSHELS.
YOU NOW HAVE 2800 BUSHELS IN STORE.

LAND IS TRADING AT 17 BUSHELS PER ACRE.
HOW MANY ACRES DO YOU WISH TO BUY? 0
HOW MANY ACRES DO YOU WISH TO SELL? 0

HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE? 2000

HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED? 1000

HAMURABI:  I BEG TO REPORT TO YOU,
IN YEAR 2, 0 PEOPLE STARVED, 3 CAME TO THE CITY,
POPULATION IS NOW 103
THE CITY OWNS 1000 ACRES.
YOU HARVESTED 4 BUSHELS PER ACRE.
RATS ATE 0 BUSHELS.
YOU NOW HAVE 4300 BUSHELS IN STORE.

LAND IS TRADING AT 26 BUSHELS PER ACRE.
HOW MANY ACRES DO YOU WISH TO BUY? 0
HOW MANY ACRES DO YOU WISH TO SELL? 0

HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE? 2060

HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED? 1000

HAMURABI:  I BEG TO REPORT TO YOU,
IN YEAR 3, 0 PEOPLE STARVED, 3 CAME TO THE CITY,
POPULATION IS NOW 106
THE CITY OWNS 1000 ACRES.
YOU HARVESTED 2 BUSHELS PER ACRE.
RATS ATE 0 BUSHELS.
YOU NOW HAVE 3740 BUSHELS IN STORE.

LAND IS TRADING AT 25 BUSHELS PER ACRE.
HOW MANY ACRES DO YOU WISH TO BUY? 0
HOW MANY ACRES DO YOU WISH TO SELL? 0

HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE? 2120

HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED? 1000

HAMURABI:  I BEG TO REPORT TO YOU,
IN YEAR 4, 0 PEOPLE STARVED, 3 CAME TO THE CITY,
A HORRIBLE PLAGUE STRUCK!  HALF THE PEOPLE DIED.
POPULATION IS NOW 54
THE CITY OWNS 1000 ACRES.
YOU HARVESTED 2 BUSHELS PER ACRE.
RATS ATE 0 BUSHELS.
YOU NOW HAVE 3120 BUSHELS IN STORE.

LAND IS TRADING AT 25 BUSHELS PER ACRE.
HOW MANY ACRES DO YOU WISH TO BUY? 0
HOW MANY ACRES DO YOU WISH TO SELL? 0

HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE? 1080

HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED? 1000
BUT YOU HAVE ONLY 54 PEOPLE TO TEND THE FIELDS.  NOW THEN,

HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED? 540

HAMURABI:  I BEG TO REPORT TO YOU,
IN YEAR 5, 0 PEOPLE STARVED, 9 CAME TO THE CITY,
POPULATION IS NOW 63
THE CITY OWNS 1000 ACRES.
YOU HARVESTED 1 BUSHELS PER ACRE.
RATS ATE 0 BUSHELS.
YOU NOW HAVE 2310 BUSHELS IN STORE.

LAND IS TRADING AT 20 BUSHELS PER ACRE.
HOW MANY ACRES DO YOU WISH TO BUY? 0
HOW MANY ACRES DO YOU WISH TO SELL? 0

HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE? 1260

HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED? 630

HAMURABI:  I BEG TO REPORT TO YOU,
IN YEAR 6, 0 PEOPLE STARVED, 4 CAME TO THE CITY,
POPULATION IS NOW 67
THE CITY OWNS 1000 ACRES.
YOU HARVESTED 2 BUSHELS PER ACRE.
RATS ATE 0 BUSHELS.
YOU NOW HAVE 1995 BUSHELS IN STORE.

LAND IS TRADING AT 25 BUSHELS PER ACRE.
HOW MANY ACRES DO YOU WISH TO BUY? 0
HOW MANY ACRES DO YOU WISH TO SELL? 0

HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE? 1340

HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED? 670

HAMURABI:  I BEG TO REPORT TO YOU,
IN YEAR 7, 0 PEOPLE STARVED, 8 CAME TO THE CITY,
POPULATION IS NOW 75
THE CITY OWNS 1000 ACRES.
YOU HARVESTED 5 BUSHELS PER ACRE.
RATS ATE 0 BUSHELS.
YOU NOW HAVE 3670 BUSHELS IN STORE.

LAND IS TRADING AT 21 BUSHELS PER ACRE.
HOW MANY ACRES DO YOU WISH TO BUY? 0
HOW MANY ACRES DO YOU WISH TO SELL? 0

HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE? 1500

HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED? 750

HAMURABI:  I BEG TO REPORT TO YOU,
IN YEAR 8, 0 PEOPLE STARVED, 10 CAME TO THE CITY,
A HORRIBLE PLAGUE STRUCK!  HALF THE PEOPLE DIED.
POPULATION IS NOW 42
THE CITY OWNS 1000 ACRES.
YOU HARVESTED 4 BUSHELS PER ACRE.
RATS ATE 897 BUSHELS.
YOU NOW HAVE 3898 BUSHELS IN STORE.

LAND IS TRADING AT 17 BUSHELS PER ACRE.
HOW MANY ACRES DO YOU WISH TO BUY? 0
HOW MANY ACRES DO YOU WISH TO SELL? 0

HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE? 840

HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED? 420

HAMURABI:  I BEG TO REPORT TO YOU,
IN YEAR 9, 0 PEOPLE STARVED, 6 CAME TO THE CITY,
POPULATION IS NOW 48
THE CITY OWNS 1000 ACRES.
YOU HARVESTED 5 BUSHELS PER ACRE.
RATS ATE 1424 BUSHELS.
YOU NOW HAVE 3524 BUSHELS IN STORE.

LAND IS TRADING AT 25 BUSHELS PER ACRE.
HOW MANY ACRES DO YOU WISH TO BUY? 0
HOW MANY ACRES DO YOU WISH TO SELL? 0

HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE? 960

HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED? 480

HAMURABI:  I BEG TO REPORT TO YOU,
IN YEAR 10, 0 PEOPLE STARVED, 5 CAME TO THE CITY,
A HORRIBLE PLAGUE STRUCK!  HALF THE PEOPLE DIED.
POPULATION IS NOW 26
THE CITY OWNS 1000 ACRES.
YOU HARVESTED 3 BUSHELS PER ACRE.
RATS ATE 581 BUSHELS.
YOU NOW HAVE 3183 BUSHELS IN STORE.

LAND IS TRADING AT 24 BUSHELS PER ACRE.
HOW MANY ACRES DO YOU WISH TO BUY? 0
HOW MANY ACRES DO YOU WISH TO SELL? 0

HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE? 520

HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED? 260

HAMURABI:  I BEG TO REPORT TO YOU,
IN YEAR 11, 0 PEOPLE STARVED, 18 CAME TO THE CITY,
POPULATION IS NOW 44
THE CITY OWNS 1000 ACRES.
YOU HARVESTED 1 BUSHELS PER ACRE.
RATS ATE 633 BUSHELS.
YOU NOW HAVE 2160 BUSHELS IN STORE.

IN YOUR 10-YEAR TERM OF OFFICE, 0 PERCENT OF THE
POPULATION STARVED PER YEAR ON AVERAGE, I.E., A TOTAL OF
0 PEOPLE DIED!!
YOU STARTED WITH 10 ACRES PER PERSON AND ENDED WITH 22 ACRES PER PERSON.

A FANTASTIC PEFORMANCE!!!  CHARLEMAGNE, DISRAELI, AND
JEFFERSON COMBINED COULD NOT HAVE DONE BETTER

SO LONG FOR NOW.

Advertisement

Pages: 1 2 3 4

15 Responses to “HAMURABI.BAS”

  1. TravisH82 said

    Here’s my rendition in Java. I’m really new to it so your thoughts on how I can improve my code are appreciated

  2. TravisH82 said

    oh… Sorry.. here’s the link: http://pastebin.com/j32JaSEw

  3. alexander said

    One more rendition, in lua: http://codepad.org/pc8FSfnQ

    It seems that average size of population in optimal game should be somewhere between 380 and 390 (if we remove restriction on the game duration).

  4. alexander said

    Hm… How INT and RND are work in the basic? Is INT(5*RND(1)) uniformy distributed in {0, 1, .., 4}?

  5. TravisH82 said

    Wish you were allowed to edit your posts here.. or maybe you can and I don’t know how.. anyways. I think I figured out how to embed the code in the comments here…

  6. Rörd said

    > Hm… How INT and RND are work in the basic? Is INT(5*RND(1)) uniformy distributed in {0, 1, .., 4}?

    IIRC yes. INT will truncate a floating point number (cut off everything behind the point), and RND returns a floating point number between 0 (including) and 1 (excluding).
    (The argument to RND will be used as new seed, when negative; create a new seed, when zero; and use the existing seed, when positive.)

  7. Rörd said

    So here’s my reimplementation in Common Lisp: http://lisp.pastebin.com/wnUkj52V

    I started with using tagbody/go for the control flow, but I had replaced all uses of these before I arrived at a working version.

  8. Rörd said

    Sorry, there was a problem with the paste. The URL is now: http://lisp.pastebin.com/r1gL4zYT

  9. John said

    I wrote a version in Factor and blogged about it:

    http://re-factor.blogspot.com/2010/08/hamurabi.html

    The implementation can be seen here:

    http://paste.factorcode.org/paste?id=1833

  10. […] HAMURABI.BAS « Programming Praxis Your task is to reimplement HAMURABI.BAS in a more modern computer language. Don’t peek at the solution unless you want to deprive yourself of the sheer joy of working out the spaghetti code and figuring out what the variables really stand for. When you are finished, you are welcome to read or run a suggested solution, or to post your own solution or discuss the exercise in the comments below. (tags: dev compsci programming todo) […]

  11. gold said

    http://wiki.tcl.tk/26775,
    Loaded an etcl version of Hamurabi with
    either a small console demo version or
    a larger etcl canvas version.
    I’m calling it Game kingdom of Strategy
    gold

  12. Keith said

    Wow, this is an old thread. I was thinking about the early days of home computing, and remembered playing Hamurabi in school and a web search brought me here. TravisH82’s java code ( http://pastebin.com/j32JaSEw) is not bad, but never resets death back to zero. I noticed that if 29 people starved, even if I fed everybody in the subsequent turn I still had 29 deaths again.

    This corrects the problem:

    if (population > fullPeople) {
      deaths = population - fullPeople;
      if (deaths > .45 * population)
        epicFail(1);
      percentDied = ((year - 1) * percentDied + deaths * 100 / population) / year;
      population = fullPeople;
      totalDeaths += deaths;
    } else { deaths = 0;
    }
    

    There also seems to be a problem with calculating sowable land in turn 1. I can start with 2800 bushels, buy 10 acres 18 each, give 2000 bushels in food and still sow 1010 acres when I ought to have been limited to 620.

  13. Keith said

    OK, I understand now… each bushel suffices to sow two acres of land.

  14. Oleg said

    I worked it out on Visual BaSICK. Now I only need to translate ancient english words to civilised languade. All that MORISTOWNs, GOVERNINGs, ACRESsss…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: