Just nu i M3-nätverket
Jump to content

Hjälp med utveckling av befintlig kod


carl111

Recommended Posts

Hej!

 

Behöver hjälp med följande kod, det är en slumpgenerator som genererar 7 st siffror mellan 1 - 35 och man kan i koden välja mellan vilka totalsummor man vill ha, tex 110 - 130, problemet nu är att den bara genererar 1 "sträng" åt gången varje gång man kör koden, jag vill att den ska generera ALLA kombinationer som finns i en enda lång lista, tex:

26 + 20 + 12 + 30 + 5 + 16 + 17 = 126

2 + 4 + 9 + 18 + 29 + 28 + 33 = 123

30 + 4 + 23 + 21 + 26 + 2 + 11 = 117

17 + 9 + 5 + 29 + 31 + 1 + 23 = 115

Osv...

 

Hoppas på att någon kan hjälpa mig med kompletterande kod och vart jag ska lägga in den i befintlig kod. (jag har även bifogat en zip:ad mapp med kod och allt, den heter projektet.zip)

 

 

Koden:

 

package tal.generator;

import java.util.Random;

public class Generator {
       private int[] talArray;
       public int[] getTalArray() {
               return talArray;
       }
       public Generator() {
               talArray = new int[7];
       }
       public int getSum() {
               return checkSum(talArray.length - 1);
       }
       public void generate(int minTal, int maxTal) {
               Random rnd = new Random(System.currentTimeMillis());
               int sum=0, value = 0;
               for(int i=0; i < talArray.length; i++) {
                       value = maxTal - sum;
                       if(value <= 0) {
                               i=-1;
                               continue;
                       }
                       do {
                               talArray[i] = rnd.nextInt(34) + 1;
                       }while(checkEquals());
                       sum = checkSum(i);
                       if(sum > maxTal) {
                               i=-1;
                               continue;
                       }
                       else if( i == (talArray.length - 1) && sum < minTal) {
                               i = -1;
                               continue;
                       }
               }
       }
       private boolean checkEquals() {
               boolean isTrue = false;
               for(int i=0; i < talArray.length; i++) {
                       for(int j=0; j < i; j++) {
                               if(talArray[i] == talArray[j] && talArray[i] != 0 && i != j) {
                                       isTrue = true;
                                       break;
                               }
                       }
               }
               return isTrue;
       }
       private int checkSum(int value) {
               int sum=0;
               for(int i=0; i <= value; i++) {
                       sum += talArray[i];
               }
               return sum;
       }
}

 

 

Kör den genom detta:

 

package exekvera.mig;

import tal.generator.Generator;

public class Shooter {
public static void main(String[] args) {
               Generator gen = new Generator();
               gen.generate(100, 150);
               int[] myArray = gen.getTalArray();
               for(int i=0; i < myArray.length; i++) {
                       System.out.print(myArray[i]);
                       if(i != (myArray.length - 1)) {
                               System.out.print(" + ");
                       }
               }
               System.out.print(" = " + gen.getSum());
       }
}

 

mvh Henrik

projektet.zip

Link to comment
Share on other sites

Då får nog koden skrivas om helt för då handlar det ju inte längre om några slumptal utan om en regelmässig genomgång av möjliga kombinationer.

Link to comment
Share on other sites

Tyvärr, det kan jag inte.

Är du medveten om hur extremt lång lista du kommer att få? Nu var det ju väldigt länge sedan jag läste matematik men jag tror att det finns tusentals sätt bara att få summan 126.

Link to comment
Share on other sites

Hej!

 

Ok, jag får nog söka på andra forum, verkar vara svårt här, har läst andras trådar oxå, inte bara på "java forumet" folk som behöver hjälp och det är många ggr motvilligt om alls de får hjälp... va det nu kan bero på... tackar för nån typ av svar ändå:)

 

Jo jag är fullt medveten om att det kan bli en väldigt lång lista men det spelar ingen roll, det viktiga är att få det att fungera och få ut korrekt resultat.

 

/mvh Henrik

Link to comment
Share on other sites

Det är nog så att för tillfället är det inte många Java-programmerare som kommer förbi Eforum, tyvärr, och de som kommer förbi har väl inte tid att skriva hela program. Just detta problem kräver en hel del kunskaper om kombinatorik och algoritmer för det också.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...