Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353

    Perl - somma tra possibili elementi di un array

    Il linguaggio è Perl, ma in generale, solo l' algoritmo
    Avendo un array con un insieme di elementi e un intero s,
    come si può trovare tutte le possibili ennuple che generano quel numero?
    Ad esempio
    A=[1,2,3,4,5]
    s=5
    può essere 5 volte 1
    3+2
    4+1
    5
    come si può fare?
    Grazie in anticipo

  2. #2
    Limitandosi alla somma? Le permutazioni della stessa sequenza sono da considerarsi equivalenti?
    Ultima modifica di MItaly; 26-12-2013 a 01:43
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    codice:
    a = [5,4,3,2,1]
    
    find n c t
     |sum c == n = [c]
     |sum c > n  = []
     | t == []   = []
     |otherwise  = concat [find n (head t:c) t, find n c (tail t)]
    
    
    main = print $ find 5 [] a
    Questo è l'algoritmo in Haskell.
    Note aggiuntive: volendo trovare tutte le combinazioni contenenti un 2 basterebbe passare come secondo parametro [2]

    Se non riesci a capire o non sei pratico con Haskell chiedi pure.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353
    le permutazioni hanno lo stesso peso,
    è sufficiente trovarle

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Uh, ho capito male...
    codice:
    a = [5,4,3,2,1]
    
    find n c t
     |sum c == n = [c]
     |sum c > n  = []
     | t == []   = []
     |otherwise  = concat [find n (head t:c) (tail t), find n c (tail t)]
    
    
    main = print $ find 5 [] a
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353
    rispondevo all' altro utente che ha risposto

  7. #7
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da CodiceProg Visualizza il messaggio
    rispondevo all' altro utente che ha risposto
    Hai chiesto " o in generale l'algoritmo" e quello è uno dei possibili...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353
    funziona se si vuole ottenere la somma dello stesso elemento ripetuto?
    ad esempio s=36
    A=[12,24,10] oltre che a 24+12 anche 12+12+12 andrebbe bene

  9. #9
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da CodiceProg Visualizza il messaggio
    funziona se si vuole ottenere la somma dello stesso elemento ripetuto?
    ad esempio s=36
    A=[12,24,10] oltre che a 24+12 anche 12+12+12 andrebbe bene
    Allora prendi quello del mio primo post...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.