[java] array vullen met 6 complement getallen

Pagina: 1
Acties:

  • KnEuTeR
  • Registratie: Mei 2000
  • Laatst online: 24-02-2024

KnEuTeR

iedereen heeft een handelsmerk

Topicstarter
ik moet dus een string array vullen met 6 complement getallen, tot 4 characters

hiervoor heb ik het volgende stukje code:

Java:
1
2
3
4
5
6
7
8
9
10
11
        for(int i=0;i<1296;i++){
            for(int j=0;j<6;j++){
                for(int k=0;k<6;k++){
                    for(int l=0;l<6;l++){
                        for(int m=0;m<6;m++){
                            cbg[i] = String.valueOf(j) + String.valueOf(k) + String.valueOf(l) + String.valueOf(m);
                        }
                    }
                }
            }
        }


begrijpelijk komt hieruit dus een array helemaal gevult met 5555 :P

maar ik snap fff helemaal niet meer hoe ik hem gewoon kan laten oplopen 8)7


edit:

betere uitleg:

hij moet dus oplopen van 0000 tot 5555 met per "letter" maximaal tot 5. (dat is dus in 6 complement notatie)

ongeveer zo:

0000
0001
0002
0003
0004
0005
0010
0011
0012
0013
0014
0015
0020
0021
0022

etc

[ Voor 27% gewijzigd door KnEuTeR op 01-12-2003 21:02 ]

Computers ain't that smart, Whatever man built could be taken apart


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:57

Robtimus

me Robtimus no like you

Je array waarden worden elke keer overschreven, totdat alle vars vanaf j 5 zijn. Dan stoppen al die innerloops en wordt i verhoogd. De waarde in het array is dan idd 5555.

Ik weet nog steeds niet precies wat je wilt, maar een nieuw ontwerp lijkt me niet onverstandig.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • py.mosjuh
  • Registratie: Oktober 2002
  • Laatst online: 24-10-2022

py.mosjuh

fikkert.net

het zou inderdaad handig zijn om ook te posten wat je er nou mee wil..

Kites rise highest against the wind - not with it (Winston Churcill)


  • KnEuTeR
  • Registratie: Mei 2000
  • Laatst online: 24-02-2024

KnEuTeR

iedereen heeft een handelsmerk

Topicstarter
ik heb het even beter uitgelegd ;)

Computers ain't that smart, Whatever man built could be taken apart


Verwijderd

NOTE: het is mij duidelijk geworden dat ik een klein redenatie foutje gemaakt heb :D zie de berichten hieronder waarom

er van uitgaande dat ik je begrijp :) lijkt me dat de volgende code zou moeten werken, hoewel ik het niet getest heb.

code:
1
2
3
4
5
6
7
8
9
            for(int j=0;j<6;j++){
                for(int k=0;k<6;k++){
                    for(int l=0;l<6;l++){
                        for(int m=0;m<6;m++){
                            cbg[(j + k + l + m)] = String.valueOf(j) + String.valueOf(k) + String.valueOf(l) + String.valueOf(m);
                        }
                    }
                }
            }

[ Voor 13% gewijzigd door Verwijderd op 01-12-2003 21:35 ]


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 18:52

RayNbow

Kirika <3

KnEuTeR schreef op 01 december 2003 @ 20:37:
...
Java:
1
2
3
4
5
6
7
8
9
10
11
        for(int i=0;i<1296;i++){
            for(int j=0;j<6;j++){
                for(int k=0;k<6;k++){
                    for(int l=0;l<6;l++){
                        for(int m=0;m<6;m++){
                            cbg[i] = String.valueOf(j) + String.valueOf(k) + String.valueOf(l) + String.valueOf(m);
                        }
                    }
                }
            }
        }


...
Je maakt waarschijnlijk een denkfout. Je code produceert in plaats van 1296 getallen (0000 tot 5555) 1296*1296 getallen (0000-5555 1296 keer).

Dit moet de code zijn:
Java:
1
2
3
4
5
6
7
8
9
10
11
// DEZE FOR WEG: for(int i=0;i<1296;i++){
    for(int j=0;j<6;j++){
        for(int k=0;k<6;k++){
            for(int l=0;l<6;l++){ 
                for(int m=0;m<6;m++){ 
                    cbg[m+l*6+k*6*6+j*6*6*6] = String.valueOf(j) + String.valueOf(k) + String.valueOf(l) + String.valueOf(m); 
                } 
            } 
        } 
    } 
// DEZE FOR WEG: }

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Verwijderd

bla bla bla Foutje :+


(eventueel zou je cbg[m + l*10 + k*100 + j*1000] kunnen doen voor een leukere indexxing )

[ Voor 90% gewijzigd door Verwijderd op 01-12-2003 21:36 ]


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 18:52

RayNbow

Kirika <3

Verwijderd schreef op 01 december 2003 @ 21:19:
[...]


hmm zal aan mij liggen maar volgens mij krijg je zo enorme gaten in je array (cbg[m+l*6+k*6*6+j*6*6*6]) en zo ver ik topic starter snap is dit niet de bedoeling. 6 * 6 * 6 * 6 is precies 1296 ( het aantal nummers dat hij voor ogen had te maken (for i < 1296)). Nu gooi alleen maar grote gaten tussen deze getallen...
Niet echt...

1te run... m=l=k=j=0, dus in array element 0 wordt 0000 opgeslagen
2de run... m=1, l=k=j=0, dus in array element 1 wordt 0001 opgeslagen
...
6de run... m=5, l=k=j=0, dus in array element 5 wordt 0005 opgeslagen
7de run... m=0, l=1, k=j=0, dus in array element 6 (= 0 + 1*6 + 0*6*6 + 0*6*6*6) wordt 0010 opgeslagen.
...
1296de run... m=l=k=j=5, dus in array element 1295 (= 5 + 5*6 + 5*6*6 + 5*6*6*6) wordt 5555 opgeslagen

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • SilencerNL
  • Registratie: Juli 2002
  • Laatst online: 09:43

SilencerNL

No remorse

wat dacht je van:
code:
1
2
3
4
5
6
7
8
9
10
11
    int i = 0;
    for(int j=0;j<6;j++){ 
        for(int k=0;k<6;k++){ 
            for(int l=0;l<6;l++){  
                for(int m=0;m<6;m++){  
                    cbg[i] = String.valueOf(j) + String.valueOf(k) + String.valueOf(l) + String.valueOf(m);  
                    i++;
                }  
            }  
        }  
    }

Don't dream your life, live your dreams!


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 18:52

RayNbow

Kirika <3

Silencer_NL schreef op 01 december 2003 @ 21:29:
wat dacht je van:
[hier stond wat code]
Dat kan natuurlijk ook, scheelt een flink aantal vermenigvuldigingen :)

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Verwijderd

RayNbow schreef op 01 december 2003 @ 21:29:
[...]


Niet echt...

1te run... m=l=k=j=0, dus in array element 0 wordt 0000 opgeslagen
2de run... m=1, l=k=j=0, dus in array element 1 wordt 0001 opgeslagen
...
6de run... m=5, l=k=j=0, dus in array element 5 wordt 0005 opgeslagen
7de run... m=0, l=1, k=j=0, dus in array element 6 (= 0 + 1*6 + 0*6*6 + 0*6*6*6) wordt 0010 opgeslagen.
...
1296de run... m=l=k=j=5, dus in array element 1295 (= 5 + 5*6 + 5*6*6 + 5*6*6*6) wordt 5555 opgeslagen
My bad :) i bow 2 your wisdom _/-\o_

was weer eens te snel in mijn redeneren :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

RayNbow schreef op 01 december 2003 @ 21:32:
[...]


Dat kan natuurlijk ook, scheelt een flink aantal vermenigvuldigingen :)
dat kan ook door de a*x3 + b*x2 + c*x + d te vervangen door:
(((a * x + b) * x + c) * x + d

(Horner's rule)

Maar gewoon een countertje is natuurlijk nog efficienter :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 18:52

RayNbow

Kirika <3

.oisyn schreef op 01 december 2003 @ 21:38:
[...]


dat kan ook door de a*x3 + b*x2 + c*x + d te vervangen door:
(((a * x + b) * x + c) * x + d

(Horner's rule)

[...]
Hmm, maar als we uitgaan dat de Java compiler de factoren 6*6 en 6*6*6 vervangt met 36 en 216... Dan moet je bij beide berekeningen 3 keer vermenigvuldigen en 3 keer optellen, dus maakt het dan wat uit of je (((a * x + b) * x + c) * x + d doet of a*x3 + b*x2 + c*x + d?

* RayNbow denkt eens diep na...

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • KnEuTeR
  • Registratie: Mei 2000
  • Laatst online: 24-02-2024

KnEuTeR

iedereen heeft een handelsmerk

Topicstarter
aha, het komt er dus eigenlijk op neer het allerbuitenste tellertje helemaal naar binnen te halen. tja, ik was er zolang mee aan het klooien dat ik ineens geen oplossing meer zag :P

erg bedankt allemaal :)

Computers ain't that smart, Whatever man built could be taken apart


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

RayNbow schreef op 01 december 2003 @ 21:48:
[...]


Hmm, maar als we uitgaan dat de Java compiler de factoren 6*6 en 6*6*6 vervangt met 36 en 216... Dan moet je bij beide berekeningen 3 keer vermenigvuldigen en 3 keer optellen, dus maakt het dan wat uit of je (((a * x + b) * x + c) * x + d doet of a*x3 + b*x2 + c*x + d?

* RayNbow denkt eens diep na...
klopt, daar heb je helemaal gelijk in. De x in deze is natuurlijk gewoon een constante :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

misschien is het verstandiger om die formule te gebruiken... die is veel gemakkelijker te onderhouden. en daarnaast ook nog een stuk beter lees baar... ik hou niet van dat soort for lus constructies

  • DaCoTa
  • Registratie: April 2002
  • Laatst online: 12:06
Wat een moeilijkdoenerij:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int radix = 6;
int maxlen = 4;

StringBuffer pad = new StringBuffer();
while(pad.length() < maxlen) {
    pad.append("0");
}

String s;

int max = Integer.parseInt("1"+pad, radix);
for(int i = 0; i < max; i++) {
    s = Integer.toString(i, radix);
    System.out.println(pad.substring(s.length())+s);   
}


Of begrijp ik het probleem verkeerd?

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

In navolging van Marik2000's opmerking: ik zou het volgende overzichtelijker vinden:
Java:
1
2
3
4
5
6
7
for (i = 0; i < 1296; i++) {
   a = i / 216;
   b = (i % 216) / 36;
   c = (i % 36) / 6;
   d = (i % 6);
   bg[i] = String.valueOf(1000*a + 100*b + 10*c + d);
}

(hmmm, zo krijg je natuurlijk geen goede strings; moeten vier digits zijn, maar ik geloof ook dat de post hierboven een veel betere oplossing heeft)

[ Voor 23% gewijzigd door Confusion op 02-12-2003 11:27 . Reden: Een sluitende } is wel netjes ]

Wie trösten wir uns, die Mörder aller Mörder?


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

lama 7(8)7 ik zag de radix over het hoofd :Y)

[ Voor 92% gewijzigd door kenneth op 02-12-2003 11:43 ]

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.

Pagina: 1