mboost-dp1

Kombinere en tal række


Gå til bund
Gravatar #1 - freesoft
10. jan. 2009 17:45
Jeg har en liste med 6 tal, dem vil jeg gerne kende alle mulighederne de 3 af dem kan kombineres på.

Fx: 1 3 5 7 9 = 135, 159, 137 osv...

Det bliver jo hurtigt til mange muligheder, nogle der kender en side eller et program der kan hjælpe med det?

Cain kan jo bruges til at brute-force fx md5 og hvis jeg indtaster talende der siger den keyspace er 125. Men den kan ikke vise mig alle muligheder.

Nej det er ikke noget password cracking jeg er igang med :)
Gravatar #2 - arne_v
10. jan. 2009 17:48
Der er 6!/((6-3)!*3!) muligheder.

Det er 20 ialt.

http://en.wikipedia.org/wiki/Combination
Gravatar #3 - arne_v
10. jan. 2009 17:49
Hvis det samme tal kan genbruges er der:

5^3=125
6^3=216
Gravatar #4 - arne_v
10. jan. 2009 17:50
#2

Hvis rækkefølgen betyder noget og det gør den med passwords, så er der:

6!/(6-3)! = 120 muligheder, men det kalder man permutaioner ikke kombinationer.

http://en.wikipedia.org/wiki/Permutation
Gravatar #5 - freesoft
10. jan. 2009 18:04
De må ikke genbruges kun hvis der er 2 af det samme tal i rækken.
Række følgen betyder noget.

Fx: 0 2 2 5 6 8
Det mindste tal man kan lave må jo være 022 og det største 865.
Der imellem: 025 026 028 052 056 og der op ad...
Gravatar #6 - arne_v
10. jan. 2009 18:08
#5

ikke genbrug & rækkefølge betyder noget => n!/(n-m)! formlen er den du skal bruge
Gravatar #7 - freesoft
10. jan. 2009 18:38
Altså der er 120 muligheder.
Wikipedia linker også til http://www.calctool.org/CALC/math/probability/comb...

Så skal jeg bare finde noget eller selv skrive der kan udskrive alle muligheder.
Fandt http://docstore.mik.ua/orelly/webprog/pcook/ch04_2... men kan ikke få det skrevet om til det jeg skal bruge :-)
Gravatar #8 - freesoft
10. jan. 2009 18:55
http://users.telenet.be/vdmoortel/dirk/Maths/permu... Ser ud til at kommer med noget jeg kan bruge, men der kommer kun 72 muligheder.
Det passer jo også, bruger jo ikke alle 10 tal...
Gravatar #9 - arne_v
10. jan. 2009 22:18

public class Perm {
public static void writePerm(char[] a, String prefix, int ix, int len, boolean[] used) {
if(ix < len) {
for(int i = 0; i < a.length; i++) {
if(!used[i]) {
used[i] = true;
writePerm(a, prefix + a[i], ix + 1, len, used);
used[i] = false;
}
}
} else {
System.out.println(prefix);
}
}
public static void writePerm(char[] a, int len) {
writePerm(a, "", 0, len, new boolean[a.length]);
}
public static void main(String[] args) {
writePerm(new char[] { '0', '2', '2', '5', '6', '8' }, 3);
}
}


udskriver:


022
025
026
028
022
025
026
028
052
052
056
058
062
062
065
068
082
082
085
086
202
205
206
208
220
225
226
228
250
252
256
258
260
262
265
268
280
282
285
286
202
205
206
208
220
225
226
228
250
252
256
258
260
262
265
268
280
282
285
286
502
502
506
508
520
522
526
528
520
522
526
528
560
562
562
568
580
582
582
586
602
602
605
608
620
622
625
628
620
622
625
628
650
652
652
658
680
682
682
685
802
802
805
806
820
822
825
826
820
822
825
826
850
852
852
856
860
862
862
865
Gravatar #10 - vandfarve
10. jan. 2009 22:28
#9 Du er enten ALT for venlig, har ALT for meget fritid eller fiskede bare efter den mest sikre informativ-rating nogensinde.

Jeg er ikke sikker på, hvilke af dem er rigtigt, men jeg gætter på det første...
Gravatar #11 - arne_v
10. jan. 2009 22:36
#10

Jeg har ihvertfald ikke for meget fritid !

Gravatar #12 - arne_v
10. jan. 2009 22:37
#9

Koden antager:
- rækkefølgen betyder noget
- ingen tikbagelægning
- at der er forskel på de to 2 taller således at det er iorden at nogle værdier optræder 2 gange
Gravatar #13 - arne_v
10. jan. 2009 22:43
#12

Hvis der ikke er forskel på de to 2 taller, så er der ganske rigtigt kun 72 muligheder.


public class Perm2 {
public static void writePerm(char[] a, String prefix, int ix, int len, int[] avail) {
if(ix < len) {
for(int i = 0; i < a.length; i++) {
if(avail[i] > 0) {
avail[i]--;
writePerm(a, prefix + a[i], ix + 1, len, avail);
avail[i]++;
}
}
} else {
System.out.println(prefix);
}
}
public static void writePerm(char[] a, int[] avail, int len) {
writePerm(a, "", 0, len, avail);
}
public static void main(String[] args) {
writePerm(new char[] { '0', '2', '5', '6', '8' }, new int[] { 1, 2, 1, 1, 1}, 3);
}
}



022
025
026
028
052
056
058
062
065
068
082
085
086
202
205
206
208
220
225
226
228
250
252
256
258
260
262
265
268
280
282
285
286
502
506
508
520
522
526
528
560
562
568
580
582
586
602
605
608
620
622
625
628
650
652
658
680
682
685
802
805
806
820
822
825
826
850
852
856
860
862
865


Gravatar #14 - freesoft
10. jan. 2009 23:06
Ja i #9 optræder nogle af tallene jo flere gange, så #13 er helt perfekt!
1000 tak for hjælpen!
Gravatar #15 - Mandalae
10. jan. 2009 23:18
Det er dælme lækkert at se at folk hjælper hinanden så indgående :)
Gravatar #16 - Spiderboy
10. jan. 2009 23:24
mandalae (15) skrev:
Det er dælme lækkert at se at folk hjælper hinanden så indgående :)

arne_v er altid meget grundig med sine svar.
Gravatar #17 - XorpiZ
11. jan. 2009 00:20
Ja, det gælder både her og på eksperten.dk.

Stor respekt til ham!
Gravatar #18 - vandfarve
11. jan. 2009 09:47
mandalae (15) skrev:
Det er dælme lækkert at se at folk hjælper hinanden så indgående :)


Jeg er også blevet bailet out et par gange, når jeg har siddet i lort til halsen, så ja, det er fantastisk.

Arne_v er sgu en af de bedre brugere herinde.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login