Ciao ragazzi ho un piccolo problemino...
devo creare il dominio di una funzione booleana..
io ho per esempio 4 variabili... devo memorizzare in un array le 2^n possibili combinazioni
0001
0010
0011
ecc....
come posso fare?
Ciao ragazzi ho un piccolo problemino...
devo creare il dominio di una funzione booleana..
io ho per esempio 4 variabili... devo memorizzare in un array le 2^n possibili combinazioni
0001
0010
0011
ecc....
come posso fare?
Le domande relative al linguaggio Java vanno ora inserite nell'apposito forum dedicato.
Sposto la discussione.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
chiedo scusa...![]()
Se il tuo obiettivo è in pratica avere tutti i numeri in binario (ad esempio oer n = 4) da 0000 a 1111, si potrebbe fare così:
1) fai partire un ciclo for(int i = 0; i < Math.pow(2, n); i++)
2) a ogni iterazione, puoi ottenere a partire dal numero i la sua rappresentazione come stringa binaria con Integer.toBinaryString(i)
3) quando devi utilizzare la stringa come array di cifre binarie, per ottenere l'i-esima cifra basta sottrarre 48 (corrispondente a "0") all'i-esimo elemento della stringa
Almeno spero...
![]()
Svegliati, Neo. Matrix ti possiede...
ma così ottiene tutte le combinazioni?
Ciao.![]()
Spero di aver capito bene quello che serviva...questo codice dovrebbe stampare tutte le combinazioni di 0 e 1 a seconda del numero che metti in "n" (numero delle colonne). :master:
Scusa il nome delle variabili non molto esplicativi ma ho buttato già sta cosa velocemente...se vuoi qualche spiegazione chiedi pure.codice:public class Prova { final static int cost = 2; public static void main(String[] args) { int n = 4; int m, k, s; m = exp(cost,n); int[][] comb = new int[m][n]; for (int j=1; j<=n; j++){ k = m/exp(2,j); s = 1; for (int i=1; i<=m; i++){ if (s%2!=0){ comb[i-1][j-1] = 0; if (i%k==0){ s++; } } else{ comb[i-1][j-1] = 1; if (i%k==0){ s++; } } } } for (int i=0; i<m; i++){ System.out.println(); for (int j=0; j<n; j++) System.out.print(comb[i][j] + " "); } } private static int exp(int m, int n){ int z = m; for (int i=2; i<=n; i++) z = z * 2; return z; } }![]()
Ciao.![]()