2023W-EFFPROG

Magic Hexagon.
Log | Files | Refs | README

commit bd0e227c7e3059e4c71a9aa6ca824673a8d4d4a6
parent 3c8040f2d15fd247c66f0715591e961cf3dd2ad5
Author: Johannes Felzmann <64841415+johannesfelzmann@users.noreply.github.com>
Date:   Sun,  7 Jan 2024 15:40:11 +0100

Merge pull request #9 from markhun/sum-optimizations

Sum optimizations
Diffstat:
Mmagichex/src/magichex.c | 16++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/magichex/src/magichex.c b/magichex/src/magichex.c @@ -79,10 +79,10 @@ CHANGE_IDENTIFIER sethi(HexagonEntry *hexagonEntry, long x) { assert(hexagonEntry->id != PLACEHOLDER_ENTRY_ID); if (x < hexagonEntry->hi) { hexagonEntry->hi = x; - if (hexagonEntry->lo <= hexagonEntry->hi) - return CHANGED; + if (hexagonEntry->lo > hexagonEntry->hi) + return NOSOLUTION; else - return NOCHANGE; + return CHANGED; } return NOCHANGE; } @@ -91,10 +91,10 @@ CHANGE_IDENTIFIER setlo(HexagonEntry *hexagonEntry, long x) { assert(hexagonEntry->id != PLACEHOLDER_ENTRY_ID); if (x > hexagonEntry->lo) { hexagonEntry->lo = x; - if (hexagonEntry->lo <= hexagonEntry->hi) - return CHANGED; - else + if (hexagonEntry->lo > hexagonEntry->hi) return NOSOLUTION; + else + return CHANGED; } return NOCHANGE; } @@ -134,6 +134,10 @@ CHANGE_IDENTIFIER sum(HexagonEntry hexagon[], unsigned long nv, unsigned long st hi -= hexagonEntry_p->lo; lo -= hexagonEntry_p->hi; } + + if(hi < lo){ + return NOSOLUTION; + } /* hi is the upper bound of sum-sum(hexagon), lo the lower bound */ for (i=0, hexagonEntry_p=hexagon; i<nv; i++, hexagonEntry_p+=stride) { CHANGE_IDENTIFIER f = sethi(hexagonEntry_p,hi+hexagonEntry_p->lo); /* readd hexagonEntry_p->lo to get an upper bound of hexagonEntry_p */