Hallo,
gibt es nur die eine Ausgangsstellung?
Wie könnte man denn simpel Varianten erstellen?
Einfach die Plätze innerhalb der einen Lösung tauschen/permutieren denn Addition ist kommutativ.
Einfacher ist es, das für alle 8 stelligen zahlen berechnen. Start bei 11111111 und teste alle 8 Stelligen Zahlen ohne Ziffer 0
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78:
| {$IFDEF FPC} {$MODE DELPHI} {$IFEND} const Base = 10; maxDigitCnt = 8; type tDgtSum = record dgts : array[0..maxDigitCnt-1] of Uint32; dgtValue: LongInt; dgtSum : LongInt; end;
function IncDgtSum(var ds:tDgtSum):boolean; var i : NativeInt; Begin i := High(ds.dgts); inc(ds.dgtValue); repeat IF ds.dgts[i] < Base-1 then Begin inc(ds.dgts[i]); inc(ds.dgtSum); BREAK; end else Begin ds.dgts[i] := 0; dec(ds.dgtSum,Base-1); end; dec(i); until i < Low(ds.dgts); result := i < Low(ds.dgts) end;
var ds :tDgtSum; i,cnt : NativeInt; check : boolean; Begin cnt := 0; With ds do begin For i := 0 to maxDigitCnt-1 do dgts[i] := 1; dgtValue := 11111111; dgtSum := 8; end;
repeat IF IncDgtSum(ds) then BREAK; with ds do Begin if DgtSum = 32 then Begin For i := High(dgts) downto 0 do Begin check := dgts[i] = 0; if check then Break; end; IF Not(check) then Begin inc(cnt); if (cnt <10) OR ( cnt > 1313271-9) then writeln(cnt:8,dgtValue:10); end; end; end; until false; writeln(cnt); end. |
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| sh-5.0#./untitled 1 11111999 2 11112899 3 11112989 4 11112998 5 11113799 6 11113889 7 11113898 8 11113979 9 11113988 .... 1313263 99721211 1313264 99722111 1313265 99731111 1313266 99811112 1313267 99811121 1313268 99811211 1313269 99812111 1313270 99821111 1313271 99911111 <= siehe 1 rückwärts 1313271
real 0m0,362s |
Variieren der Anordnung im 4x4 Feld, das müsste ja eine stark begrenzte Anzahl sein mit ausklammern von Drehung und Spiegelung, kann man ja als Startfeld ein Feld aus dem oberen linken 2x2 Feld wählen.
Das an der erste Feld anschliessende Feld hat 1x 2 Richtung 2x 3 Richtungen und 1x 4 Richtungen zur Verfügung.Dann sind es maximal immer 3 gibt also kleiner als 3⁸ Möglichkeiten also < 6561
Da ist noch was machbar
Gruß Horst
Moderiert von Th69: Code-Tags hinzugefügt