|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2000
Città: Roma
Messaggi: 1612
|
[qualsiasi] permutazioni
non so se sia la sezione giusta ma mi trovo a dover scrivere un codicillo per fare quanto segue:
data una matrice rettangolare (per esempio 2x3): A= [ a b c ] [ d e f ] come faccio a ottenere tutte le coppie: ad ae af bd be bf cd ce cf per una matrice con 2x3 è semplice ma con una NxM? qualcuno ha qualche idea?
__________________
peter |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Fai una ricerca per "factoradic" e "combinadic". Li ho usati una volta per insegnare al PC a giocare a scarabeo, prima che mi venisse in mente che la HASBRO avrebbe potuto non essere così contenta se avessi distribuito uno scrabble... Poi ho dimenticato tutto ma non sono difficili da implementare e usare.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
|
dipende anche che regola vuoi seguire per determinare le coppie ...per esempio con una matrice 3x6 le coppie come le vorresti?.... perchè forse ti basta qualche ciclo for annidato
__________________
---------------------------------------------- File reality.sys corrupted, Reboot Universe? Y/N ---------------------------------------------- |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2000
Città: Roma
Messaggi: 1612
|
A=
[ a b c d e f ] [ g h i l m n] [ o p q r s t] vorrei le triplette: ago agp agq agr ags agt aho ahp ahq ahr ahs aht aio aip aiq air ais ait ago agp agq agr ags agt insomma avete capito... l'ultimo gruppo sarà: fno fnp fnq fnr fns fnt se N è il numero di righe e M il num di colonne, il numero di triplette che devono venir fuori è M^N
__________________
peter |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: May 2000
Città: Roma
Messaggi: 1612
|
Quote:
__________________
peter |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12859
|
Giusto per dare un suggerimento, il tutto si dovrebbe poter risolvere con una funzione ricorsiva con dentro un while...
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
|
Quote:
__________________
---------------------------------------------- File reality.sys corrupted, Reboot Universe? Y/N ---------------------------------------------- |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2000
Città: Roma
Messaggi: 1612
|
si, scusate... i vettori che devo tirar fuori hanno la lunghezza pari al numero di righe...
__________________
peter |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: May 2000
Città: Roma
Messaggi: 1612
|
esatto...ci avevo pensato anche io: se la matrice avesse dimensione fissa basterebbero N cicli annidati (N=num righe), ma la dimensione è nota solo a run-time quindi deve esserci una funzione che si chiama da sola....il problema è che non so come.
__________________
peter |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
e comunque che razza di ragionamenti sono? ora é vietato fare concorrenza? a Torvalds doveva venire in mente che la Microsoft non sarebbe stata cosi contenta se lui avesse distribuito un suo sistema operativo? ehm... in effetti forse si, gli doveva venire in mente
|
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
|
Quote:
Codice:
public static void main(String[] args) {
char[][] a = {
{'a','b','c','d','e','f'},
{'g','h','i','l','m','n'},
{'o','p','q','r','s','t'}
};
int righe = 3;
int caratteri = 6;
for(int i=0;i<(int)Math.pow(caratteri,righe);i++) {
int[] v = integerToDecimalArray(decimalToAnotherBase(i,caratteri),righe);
for(int e=0;e<a.length;e++) {
System.out.print(a[e][v[e]]);
}
System.out.println();
}
}
}
private static int decimalToAnotherBase(int v,int b) {
if(v==0)
return 0;
StringBuffer sb = new StringBuffer();
int rest = -1;
while(v!=0) {
rest = v%b;
sb.append(rest);
v = v/b;
}
return Integer.valueOf(sb.reverse().toString());
}
private static int[] integerToDecimalArray(int v,int l) {
String s = String.valueOf(v);
char[] c = s.toCharArray();
int[] array = new int[l];
for(int i=0;i<c.length;i++) {
String aux = new String(""+c[c.length-1-i]);
array[array.length-1-i] = Integer.valueOf(aux);
}
return array;
}
__________________
---------------------------------------------- File reality.sys corrupted, Reboot Universe? Y/N ---------------------------------------------- |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:57.




















