ciao paoloard
http://www.riolab.org
Sia data una serie di numeri, supponiamo i primi 10 numeri naturali (da 1 a
10), e un numero che costituisce la somma di alcuni di questi (supponiamo
12).
Si vuole sapere quante sono le combinazioni di somma che soddisfano il
risultato nonché i numeri che compongono ogni combinazione.
Sono ammesse colonne d'appoggio.
Come al solito vince 5 punti chi risponde per primo alle due domande. La
soluzione con formula in unica cella sarà preferita alle soluzioni con
colonne d'appoggio anche se pervenuta in tempo successivo.
Vince 3 punti chi imposta la soluzione più breve come somma delle formule
delle due risposte.
Bye.
paoloard
Paolo è importante sapere quanti possono essere i numeri ... quel
supponiamo non mi garba molto ... in verità nemmeno quel 10 :-) ...
però ti chiedo di dire quanti devono essere precisamente.
ciao
grazie
r
perchè con 10 è troooooppo facile :-)
r
per 12 sono 13 giusto?
1 2 4 5
3 4 5
1 2 3 6
2 4 6
1 5 6
2 3 7
1 4 7
5 7
1 3 8
4 8
1 2 9
3 9
2 10
:-)
r
:-)
r
--------------------------------------------------
sì. Però il supponiamo è solo una base per definire il problema, mi sembrava
ovvio che la soluzione dovesse essere di carattere generale.
Partiamo da 10, però se per te è troppo facile, metti numero numeri= n.
Ciao Paolo
scusa paolo, mentre ci pensavo mi sono venuti dei dubbi ...
1) sulla formula breve sarebbe più semplice giocare su una singola
formula (magari la formula che conta le combinazioni che soddisfano la
somma) ... perchè per il resto delle colonne di appoggio sono
ovviamente necessarie e poi dventiamo matti a vedere quale soluzione è
più corta
2) dici che vuoi sapere i numeri di ogni combinazione ... ma in che
modo? bisogna fare in qualche modo un concatena oppure basta una
tabella dove le celle sono valorizzate oppure no ... nell'esempio io
pensavo a una tabella di 10 colonne per 13 righe (tante quante sono
appunto le combinazioni) così da evitare inutili formuloni coi
concatenamenti
3) i dieci numeri sono in a1:a10 in b1 la somma da ottenere va bene?
ciao
r
no in linea di massima è adattabile facilmente ...
diciamo quindi che in A1:An ci sono i numeri che devono costituire la
somma ... numeri diversi tra loro
in B1 la somma
il problema è solo l'output ... perchè per fare vedere quali sono i
numeri è necessario trascinare la formula in basso e a destra per un
numero variabile di celle ...
ve beh ci penso e vedo come viene meglio
ciao
r
p.s.
molto utile al problema è la soluzione del quesito di plinius sui
binari ... ricordate?
per il conteggio:
=SOMMA(--(MATR.PRODOTTO(RESTO(INT(RIF.RIGA($A$1:$A$1023)/2^(10-
RIF.COLONNA($A:$J)));2);rng)=B1))
da confermare con ctrl+maiusc+invio
per visualizzare tutte le possibili somme:
=SE(RESTO(INT(RIF.RIGA($A$1:$A$1023)/2^(10-RIF.COLONNA($A:$J)));
2);INDICE(rng;RIF.COLONNA($A:$J));"")
da confermare con ctrl+maiusc+invio dopo aver scritto la formula in
una cella e selezionato un intervallo sufficientemente ampio (1023
righe + 10 colonne)
basta poi in una colonna a destra fare la somma dei valori sulla riga
e vedere se corrisponde al valore in B1
saluti
r
p.s.
ovviamente sarebbe generalizzabile ma risulta già molto lenta così ...
quindi eviterei
altra soluzione più snella e comoda:
in c1
=PICCOLO(SE(MATR.PRODOTTO(RESTO(INT(RIF.RIGA($A$1:$A$1023)/2^(10-
RIF.COLONNA($A:$J)));2);rng)=$B$1;RIF.RIGA($A$1:$A
$1023);"");RIF.RIGA(A1))
confermare con ctrl+maiusc+invio e trascinare in basso
in D1:
=SE(RESTO(INT(C1/2^(10-RIF.COLONNA(A:J)));
2);INDICE(rng;RIF.COLONNA(A:J)))
selezionare poi D1:m1 e confermare con trl+maiusc+invio
poi trascinre in basso
ovviamente rng definisce l'intervallo A1:A10
in B1 il valore della somma
saluti
r
senza appoggio:
=SE(RESTO(INT(PICCOLO(SE(MATR.PRODOTTO(RESTO(INT(RIF.RIGA($A$1:$A
$1023)/2^(10-RIF.COLONNA($A:$J)));2);rng)=$B$2;RIF.RIGA($A$1:$A
$1023);"");RIF.RIGA(A1))/2^(10-RIF.COLONNA(A:J)));
2);INDICE(rng;RIF.COLONNA(A:J));"")
da confermare con ctrl+maiusc+invio
trascinare poi in basso e a destra
predispongo un file ...
la formula è senza dubbio migliorabile ...
però per accorciarla vanno bene i riferimenti?
a1:a10 i valori
b1 la somma
ok?
r
Ciao, puoi predisporre on-line del file di esempio?
Ciao.
lo trovate qui:
https://sites.google.com/site/e90e50/documento-plinius/quizzone-di-excel/quesiti
il file (excel 2007) si chiama "Quesito 20 soluzione"
r
Grazie, lo provo subito.
Ciao.
cut
scusa paolo, mentre ci pensavo mi sono venuti dei dubbi ...
1) sulla formula breve sarebbe più semplice giocare su una singola
formula (magari la formula che conta le combinazioni che soddisfano la
somma) ... perchè per il resto delle colonne di appoggio sono
ovviamente necessarie e poi dventiamo matti a vedere quale soluzione è
più corta
Questo può anche andare bene, però se usi un nome la lunghezza della formula
è ovviamente comprensiva di ciò che sta dietro al nome.
2) dici che vuoi sapere i numeri di ogni combinazione ... ma in che
modo? bisogna fare in qualche modo un concatena oppure basta una
tabella dove le celle sono valorizzate oppure no ... nell'esempio io
pensavo a una tabella di 10 colonne per 13 righe (tante quante sono
appunto le combinazioni) così da evitare inutili formuloni coi
concatenamenti
Ok
3) i dieci numeri sono in a1:a10 in b1 la somma da ottenere va bene?
Ok
-----------------------------------------------------------------
Mi sembra che ti sei già risposto da solo nei post successivi. Dato che non
avevo dato precise indicazioni al riguardo credo che ognuno può utilizzare
la soluzione che crede più opportuna. L'importante è il risultato, che
peraltro vedo che hai già ottenuto. Vado a controllare.
ciao paoloard
http://www.riolab.org
ok?
-----------------------------------
Ok. D'altronde era l'ipotesi iniziale :-)
Bravo Roby, i 5 punti sono senz'altro tuoi come tuo il prossimo quesito.
Per i 3 aspettiamo ancora .................. chissà che.....
ciao paoloard
http://www.riolab.org
per lo sviluppo:
=SE(RESTO(INT(GRANDE(SE(MATR.PRODOTTO(RESTO(INT(RIF.RIGA($1:$1023)/
2^(RIF.COLONNA($A:$J)-1));2);rng)=$B
$1;RIF.RIGA($1:$1023));RIF.RIGA(A1))/2^(RIF.COLONNA(A1)-1));
2);INDICE(rng;RIF.COLONNA(A1));"")
saluti
r
scusate ... tolgo rng e metto il riferimento:
=SOMMA(--(MATR.PRODOTTO(RESTO(INT(RIF.RIGA(A1:A1023)/
2^(RIF.COLONNA(A:J)-1));2);A1:A10)=B1))
da confermare con ctrl+maiusc+invio
=SE(RESTO(INT(GRANDE(SE(MATR.PRODOTTO(RESTO(INT(RIF.RIGA($1:$1023)/
2^(RIF.COLONNA($A:$J)-1));2);$A$1:$A$10)=$B
$1;RIF.RIGA($1:$1023));RIF.RIGA(A1))/2^(RIF.COLONNA(A1)-1));
2);INDICE($A$1:$A$10;RIF.COLONNA(A1));"")
da confermare con ctrl+maiusc+invio e trascinare a destra e in basso
r
cut
scusate ... tolgo rng e metto il riferimento:
=SOMMA(--(MATR.PRODOTTO(RESTO(INT(RIF.RIGA(A1:A1023)/
2^(RIF.COLONNA(A:J)-1));2);A1:A10)=B1))
da confermare con ctrl+maiusc+invio
=SE(RESTO(INT(GRANDE(SE(MATR.PRODOTTO(RESTO(INT(RIF.RIGA($1:$1023)/
2^(RIF.COLONNA($A:$J)-1));2);$A$1:$A$10)=$B
$1;RIF.RIGA($1:$1023));RIF.RIGA(A1))/2^(RIF.COLONNA(A1)-1));
2);INDICE($A$1:$A$10;RIF.COLONNA(A1));"")
da confermare con ctrl+maiusc+invio e trascinare a destra e in basso
r
----------------------------------------------------------------
Come avrai capito a questa soluzione io non ci sarei arrivato neanche con
l'aiuto di Frate Indovino.
E tu dici trooooppo facile!
Il quesito l'ho posto, perch� trovato sul Forum di Excel.
Perci� ti chiedo di risolvere ulteriormente, ovviamente extra quesito.
L'ipotesi dei dieci numeri funziona alla grande, per� se ne metto meno non
pi�. Devo riempire i posti mancanti con degli zeri, ma in questo modo
ottengo le ripetizioni delle combinazioni quando sono inferiori
all'intervallo delle formule.
Come fare per ottenere i risultati su di un insieme di numeri variabile?
Grazie.
ciao paoloard
http://www.riolab.org
giusto per curiosità puoi postare il link
personalizzare la formula con un numero variabile di addendi non è
difficile però il rischio è di appesantire e rallentare molto il
calcolo ... ti preparo un file
ciao
r
---------------------------------------------------------------------
Ciao paoloard
qui:
https://sites.google.com/site/e90e50/documento-plinius/quizzone-di-excel/quesiti
trovi il file excel 2007:
Quesito 20 soluzione_generalizzato.xlsx
fai sapere se può andare.
ciao
r
che poi è:
=SE(RESTO(INT(GRANDE(SE(MATR.PRODOTTO(RESTO(INT(RIF.RIGA($A
$1:INDICE($A:$A;2^RIGHE(rng)-1))/2^(RIF.COLONNA($A
$1:INDICE($1:$1;;RIGHE(rng)))-1));2);rng)=$B$1;RIF.RIGA($A$1:INDICE($A:
$A;2^RIGHE(rng)-1)));RIF.RIGA(A1))/2^(RIF.COLONNA(A1)-1));
2);INDICE(rng;RIF.COLONNA(A1));"")
dove rng è un nome che definisce in modo dinamico l'intervallo degli
addendi
va confermata con ctrl+maiusc+invio e trascinata in basso e a destra
ciao
r
ciao.
due domande.
1) provo a inserire la formula (in 2003):
=SE(RESTO(INT(GRANDE(SE(MATR.PRODOTTO(RESTO(INT(RIF.RIGA($1:$1023)/
2^(RIF.COLONNA($A:$J)-1));2);$A$1:$A$10)=$B
$1;RIF.RIGA($1:$1023));RIF.RIGA(A1))/2^(RIF.COLONNA(A1)-1));
2);INDICE($A$1:$A$10;RIF.COLONNA(A1));"")
ma mi compare una finestra di errore e mi evidenzia il primo RIF.RIGA
come se ci fosse un errore di scrittura.
2) perchè il riferimento fino a 1023?
perchè e' 1k?
potrebbe essere di meno?
grazie.
andrea
no nessun errore di scrittura, il problema è che non l'avevo provata
con excel 2003 ...
con il 2007 funziona, mentre nella versione precedente si vede che c'è
troppe nidificazioni.
per risolvere fai così:
definisci un nome "arr" così:
=MATR.PRODOTTO(RESTO(INT(RIF.RIGA($1:$1023)/2^(RIF.COLONNA($A:$J)-1));
2);$A$1:$A$10)
poi modifichi la formula così:
=SE(RESTO(INT(GRANDE(SE(arr=$B$1;RIF.RIGA($1:$1023));RIF.RIGA(A1))/
2^(RIF.COLONNA(A1)-1));2);INDICE($A$1:$A$10;RIF.COLONNA(A1));"")
da confermare con ctrl+maiusc+invio e trascini a destra e in basso ...
è il primo caso che mi capita dove il 2007 fa qualcosa meglio del
2003 :-)
> 2) perchè il riferimento fino a 1023?
2^10-1 ... in sostanza cosa fa la formula? hai 10 valori che bisogna
prendere in tutte le possibili combinazioni ... quindi creo una
matrice di tutti i possibili valori binari partendo da 1 (0000000001)
fino a 2^10-1 (1111111111) ... per ogni riga della matrice viene
eseguito il prodotto con i 10 numeri (in base alla posizione) e viene
fatta la somma (è ciò che fa matr.prodotto) se i numeri sono dall'1 al
10 ...per la prima riga 0000000001 si avrà:
0x1+ 0x2 + 0x3 + 0x4 + 0x5 + 0x6 + 0x7 + 0x8 + 0x9 + 1x10=10
per l'ultima 1111111111:
1x1+ 1x2 + 1x3 + 1x4 + 1x5 +1x6 +1x7 +1x8 + 1x9 + 1x10=57
ora questa operazione viene eseguita per ogni possibile combinazione
di 0 e 1 relativamente a 10 posizioni (infatti usi una numerazione
progressiva in base 2) che poi equivale a trovare tutte le possibili
disposizioni di lunghezza 10 (k) di 2 elementi (n) ...
se la somma è = al valore di B1 allora tengo la riga della matrice che
ha generato la sequenza ... altrimenti nulla ... ho così un vettore
che restituisce i numeri delle righe alternati a zeri ... su tale
vettore scegli il grande ennesimo ... che servirà per riconvertirlo in
binario e recuperare con indice il valore corrispondente alle
posizioni degli 1
> perchè e' 1k?
cos'è 1k?
> potrebbe essere di meno?
meno di 1023? ... no se i valori sono 10 è proprio 1023 in quanto
comunque devi provare tutte le disposizioni ... più in generale
saranno 2^numero di addendi ... guarda la formula generalizzata
> grazie.
prego :-)
sperando d'aver chiarito ...
> andrea
r
hai chiarito perfettamente grazie.
(1k era 1 kilo cioè 1024)
andrea
Scusa, ma le varie formule, in quale cella vanno inserite nel tuo
documento di esempio?
Ciao.
Ottimo lavoro r!
Complimenti!
E. :-)
------------------------------------
eh eh, ha fatto tutto da solo. :-)
Man bassa di punti, risposta + breve, 5+3
ciao paoloard
http://www.riolab.org
eih! andateci piano ... il grosso era già stato fatto nel quesito
12 ... il quizzone insegna :-)
poi va bene per i 5 punti ... ma la breve possibile che non si possa
limare un po'?
saluti
r
p.s. per previ
le formule sono già nei due file quesito 20 soluzione e soluzione
generalizzata (nel quale puoi aggiungere o togliere valori in colonna
A e ovviamente modificare il valore della somma
Grazie, ho scaricato il file, ma non ho capito lo scopo del quesito 20.
Qual è la funzione di tutto ciò?
Ciao.
--------------------------------------------------------------
Scusa Previ, ma... hai letto bene l'antefatto?
ciao paoloard
http://www.riolab.org
On 4 Giu, 13:44, "paoloard" <xxp...@alice.it> wrote:
> "plinius" ha scritto nel
> messaggionews:435fa626-1bbe-43dc...@glegroupsg2000goo.googlegroups.com...
>
> Ottimo lavoro r!
> Complimenti!
> E. :-)
> ------------------------------------
>
> eh eh, ha fatto tutto da solo. :-)
> Man bassa di punti, risposta + breve, 5+3
>
> ciao paoloardhttp://www.riolab.org
eih! andateci piano ... il grosso era già stato fatto nel quesito
12 ... il quizzone insegna :-)
poi va bene per i 5 punti ... ma la breve possibile che non si possa
limare un po'?
saluti
r
---------------------------------------------------------------
ciao Roby, ho messo qui la generalizzazione delle tue formule:
http://cid-119877c26b75dcc7.office.live.com/view.aspx/Pubblica/Combinazioni.xlsx
puoi controllare se va bene?
ciao paoloard
http://www.riolab.org
non mi sembra che funzioni ... nel foglio 1 hai le formule per
l'intervallo a1:a10 e nel foglio 2 non vedo i risultati oltre ad avere
una cella che restituisce un errore.
avevo già proposto il file Quesito 20 soluzione_generalizzato.xlsx a
questo indirizzo:
https://sites.google.com/site/e90e50/documento-plinius/quizzone-di-excel/quesiti
in quel file puoi aggiungere in colonna A i valori e modificare la
somma da ottenere ... l'hai visto quel file?
ciao
r
avevo già proposto il file Quesito 20 soluzione_generalizzato.xlsx a
questo indirizzo:
https://sites.google.com/site/e90e50/documento-plinius/quizzone-di-excel/quesiti
in quel file puoi aggiungere in colonna A i valori e modificare la
somma da ottenere ... l'hai visto quel file?
----------------------------------------------
non l'ho visto perché solo adesso vedo il link. Vado e ti dico.
Grazie
ciao paoloard
http://www.riolab.org
Ci ho scritto un articolo ...
https://sites.google.com/site/e90e50fx/home/recuperare-gli-addendi-che-costituiscono-la-somma
ciao
r
On 31 Mag, 19:21, "paoloard" <xxp...@alice.it> wrote:
> Nei prossimi giorni non avrň molto tempo.
> Pubblicherň il prossimo quiz venerdě 3/6 ore 12:00.
>
> ciao paoloardhttp://www.riolab.org
Ci ho scritto un articolo ...
https://sites.google.com/site/e90e50fx/home/recuperare-gli-addendi-che-costituiscono-la-somma
ciao
r
---------------------------------------------------
Bello Roby, complimenti.
ciao paoloard
http://www.riolab.org
ho notato che ultimamente google deve avere qualche problema nella sincronizzazione dei server ... utilizzando il nuovo google group vedo tutti gli interventi ma con il solito percorso invece molti non sono visibili.
ciao
r
interessante articolo ben spiegato anche per matrici-incompetenti come
me.
per google group ho notato che se ordini per risposta alle volte non
mostra dei messaggi mentre li fa vedere se ordini per data
ciao.
andrea
Ciao paoloard, adesso con gli esempi completati e scaricati dal sito, ho
capito come funziona il quiz 20.
Ciao e grazie.