• The Pico Core, CORESIZE == 3!

    From John Metcalf@21:1/5 to All on Tue Jun 21 16:02:41 2022
    Here's something I tried out of curiosity - I ran a round-robin of all
    576 possible "mov.i" warriors in a super-tiny core, CORESIZE 3! There
    are two warriors which are unbeatable, they always score >= their
    opponent in a one-on-one match. The highlights (if you can call them
    that) are listed below:

    # %W %L %T Warrior Score D Notes --------------------------------------------------------------
    1 54.6 17.8 27.6 mov.i > 1, @ 1 191.36 8 highest %W
    2 53.0 19.2 27.9 mov.i } 1, * 1 186.72 2
    3 45.4 7.3 47.3 mov.i } 1, } 1 183.46 6
    4 44.7 9.3 46.0 mov.i > 1, > 1 180.12 18
    5 43.3 6.6 50.0 mov.i < 0, $ 1 179.99 7
    6 42.0 8.9 49.1 mov.i { 0, $ 1 175.00 7
    7 52.6 30.6 16.8 mov.i > 1, { 2 174.70 75 lowest %T
    8 52.6 30.5 17.0 mov.i @ 1, { 2 174.65 76
    9 42.2 10.0 47.8 mov.i $ 2, $ 1 174.48 10
    10 51.9 29.4 18.7 mov.i * 1, { 2 174.44 87
    11 51.8 30.0 18.1 mov.i @ 1, < 2 173.61 83
    12 40.8 8.2 51.0 mov.i $ 2, { 0 173.35 3
    13 40.6 8.6 50.9 mov.i { 0, { 0 172.61 0 lowest D
    14 42.5 13.0 44.5 mov.i } 2, $ 1 171.96 16
    15 51.2 31.0 17.8 mov.i } 1, { 2 171.31 82
    16 51.3 31.3 17.4 mov.i > 1, < 2 171.27 73
    17 48.9 26.7 24.4 mov.i @ 2, { 2 171.01 47
    18 48.6 26.5 24.9 mov.i > 2, { 2 170.75 39
    19 48.7 27.0 24.3 mov.i } 2, < 2 170.53 59
    20 39.5 9.5 50.9 mov.i < 0, < 0 169.53 0 lowest D


    259 17.7 5.9 76.3 mov.i } 0, } 1 129.47 76 lowest %L
    521 3.6 5.9 90.5 mov.i $ 0, { 0 101.26 135 lowest %L
    524 3.3 5.9 90.8 mov.i # 0, { 0 100.65 137 lowest %L
    537 1.9 6.3 91.8 mov.i # 0, < 0 97.57 143 highest %T / lowest %W
    576 10.6 48.1 41.3 mov.i < 1, $ 2 73.05 491 highest %L / highest D

    The D column is the number of opponents which score higher than the
    warrior in a one-on-one.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From inversed@21:1/5 to All on Wed Jun 22 08:04:02 2022
    That's not pico, that's femto! I wonder how far the full enumeration approach can be pushed. The total number of distinct warriors is (64 M S^2)^L, where M is the number of different instructions, S is core size, and L is the warrior length. The biggest
    problem is that round-robin tournament requires a quadratic number of matches. However, if we were to use a Swiss tournament instead, the number of participating warriors could be much higher (n Log n matches in total). Even though a Swiss tournament won'
    t produce a complete crosstable, I think it might be the best option. Running a tournament with M = 3 (mov.i, spl, djn.f), L = 2, S = 8 should be easily possible (47'775'744 warriors).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Metcalf@21:1/5 to inversed on Fri Jun 24 15:56:29 2022
    On Wed, 22 Jun 2022 08:04:02 -0700, inversed wrote:

    That's not pico, that's femto!

    I considered femto, but it's possible to go smaller :-)

    Here are the results from a round-robin of all 1536 "mod" warriors in
    CORESIZE 2 - highlights listed below:

    Rank Name %W %L %T Score --------------------------------------------
    1 mod.a # 1, } 0 90 9 0 8327 highest %W / lowest %L
    2 mod.b # 0, # 1 89 11 0 8217
    3 mod.a # 1, # 0 89 11 0 8187
    4 mod.ab # 1, } 0 88 11 0 8149
    5 mod.a # 1, { 0 88 12 0 8142
    6 mod.b * 0, # 1 88 12 1 8100
    7 mod.a # 1, @ 0 88 12 0 8077
    8 mod.ab # 1, { 0 87 12 0 8053
    9 mod.b $ 0, # 1 87 12 1 8036
    10 mod.a # 1, $ 0 87 13 0 8031
    11 mod.b # 0, { 1 85 15 0 7787
    12 mod.b * 0, { 1 84 15 0 7781
    13 mod.b * 0, * 1 84 15 1 7740
    14 mod.b $ 0, * 1 84 15 1 7731
    15 mod.b $ 0, { 1 84 16 0 7721
    16 mod.b * 0, > 1 83 14 3 7717
    17 mod.b $ 0, > 1 83 14 3 7715
    18 mod.b # 0, > 1 83 14 3 7712
    19 mod.b # 0, * 1 83 15 2 7685
    20 mod.b * 0, < 1 83 17 0 7614

    299 mod.ba # 1, * 1 57 31 12 5641 highest %T

    1536 mod.ab $ 0, * 1 34 66 0 3135 lowest %W / highest %L

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Skybuck Flying@21:1/5 to All on Fri Jun 24 20:03:27 2022
    My main question would be:

    Why is mov 0, 1 (the imp) not winning all cases or at least a lot of them ?

    Since most moves will die after one turn.

    Some of the moves may be anti imp killers, though this does not explain high win rates of some of maybe it does.

    I'd be interested to know which of these mov instructions actually wins or ties against an imp for starters.

    Some moves will be lucky placed in front of the other warrior so it doesn't immediately die, so this chance is probably 50% in the core-size = 3 scenerio.

    I will try my own simulator with some of your warriors and see what it does... first I will have to get pmars working on this laptop to be able to compile warriors
    or I can just put in the binary code... hmmm unfortunately cannot code directly in binary hehe/instructions hmm seriously limitation of my simulator/editor hmmm...
    oh well should not take long to add pmars to path variable and such.

    Bye for now,
    Skybuck.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Skybuck Flying@21:1/5 to All on Fri Jun 24 19:54:57 2022
    CoreWin only allows coresize = 16 as minimum.

    So most likely you are using Pmars. I do believe Pmars treats the warriors unfairly based on order in list. Warrior1 is better treated than Warrior 2 based on place in list, Warrior1 is allowed to strike first.

    Not sure if this is skewing your results.

    Another issue could be it's placement code.

    Try some things to verify your results:

    1. Disable random placement.
    2. Place warriors at same positions for different experiments:

    See if positions make a difference in results, (maybe average over all positions):

    W1 at 0, W2 at 1
    W1 at 0, W2 at 2
    W1 at 1, W2 at 0
    W1 at 1. W2 at 2
    W1 at 2, W2 at 0
    W1 at 2, W2 at 1

    See if order of warriors make a difference.

    W2 at 0, W1 at 1
    W2 at 0, W1 at 2
    W2 at 1, W1 at 0
    W2 at 1. W1 at 2
    W2 at 2, W1 at 0
    W2 at 2, W1 at 1

    Bye for now,
    Skybuck.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Skybuck Flying@21:1/5 to All on Fri Jun 24 20:17:55 2022
    Both windows versions don't work on windows 7 x64 after downloading with firefox and extracting:

    http://www.koth.org/pmars/

    Incompatible version error message.

    No wonder almost nobody plays this game without a working windows version ! HAHA.

    Anyway probably not much point in installing this/getting this working because I think my simulator did not change settings but I will continue trying.

    Time to try my own build of pmars if I can find it from my webdrive for kicks.

    Found it by using my ftp client, google has no recollection, well just one but on ziggo webdrive which was destroyed long ago, so posting link once again:

    http://skybuck.org/Corewars/PMARSW95/

    and general redcode stuff:

    http://skybuck.org/Corewars/

    Bye for now,
    Skybuck.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Skybuck Flying@21:1/5 to All on Fri Jun 24 20:21:26 2022
    Ok at least I verified my version/build of PMarsW95 is working haha.

    Problem is my simulator is unfinished with connecting gui to capabilities of code... hmmm...

    Well since I am a bit interested in this experiment, maybe tomorrow I work on my simulator some more to make it possible to change the default settings.

    See you later for now ! ;)

    Bye,
    Skybuck =D

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Metcalf@21:1/5 to Skybuck Flying on Sat Jun 25 18:41:19 2022
    On Fri, 24 Jun 2022 19:54:57 -0700, Skybuck Flying wrote:

    CoreWin only allows coresize = 16 as minimum.

    So most likely you are using Pmars. I do believe Pmars treats the
    warriors unfairly based on order in list. Warrior1 is better treated
    than Warrior 2 based on place in list, Warrior1 is allowed to strike
    first.

    Minimum coresize = 16 seems sensible.

    I used pMARS -P to run all permutations of the battles - all positions
    with Warrior1 executing first, then all positions with Warrior2 executing first. It should be fair :-)

    John

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Metcalf@21:1/5 to Skybuck Flying on Sat Jun 25 19:17:21 2022
    On Fri, 24 Jun 2022 20:17:55 -0700, Skybuck Flying wrote:

    Both windows versions don't work on windows 7 x64 after downloading with firefox and extracting:

    http://www.koth.org/pmars/

    Incompatible version error message.

    Joonas's SDL pMARS binary works fine on Windows 7, 10 and 11:

    * https://corewar.co.uk/pihlaja/pmars-sdl/index.htm

    I've also compiled a 0.9.2 binary with patches for the eval bug and
    read / write limits. I'll upload it as soon as I've updated the docs.

    John

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)