Creazione di combinazione di parole

di il
12 risposte

Creazione di combinazione di parole

Ciao a tutti, sono un autodidatta di Python e stavo provando a fare un'esercizio per la combinazione di parole in modo da creare frasi con parole random.

Esempio: Ho n parole in input e tramite il mio programma in python dovrei creare la maggior parte di combinazione possibili fatte di 12 parole, disposte in maniera random (non è necessario che creino una frase di senso compiuto).

Per esempio, parole in input: abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
"access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
"action","actor","actress","actual","adapt","add","addict","address","adjust","admit",

tipo frase: abandon, ability, able, about, above, absorb, absurd, abuse, access, accident, account.
abandon, able, ability....
...... x 12 volte


Potete aiutarmi a creare questo programma, dato che sono ancora un principiante per python (o C# se ritenete + facile) ...
Sto provando in questi giorni a crearlo ma sto trovando alcune difficoltà nella scrittura.
Inoltre sarei grato ache se mi rivelate se già conoscete un software che svolge questa operazione.

Grazie mille per il vostro aiuto.

12 Risposte

  • Re: Creazione di combinazione di parole

    Dexterifiation ha scritto:


    Ciao a tutti, sono un autodidatta di Python e stavo provando a fare un'esercizio per la combinazione di parole in modo da creare frasi con parole random. [...]
    Potete aiutarmi a creare questo programma, dato che sono ancora un principiante per python (o C# se ritenete + facile) ...
    Sto provando in questi giorni a crearlo ma sto trovando alcune difficoltà nella scrittura.
    Ti daremmo una mano se spiegassi di preciso quello che non riesci a fare.
  • Re: Creazione di combinazione di parole

    Allora ti spiego in dettaglio….
    Il mio obiettivo è quello di creare un programma in python che svolga queste funzioni:

    1. prende una lista di parole in ingresso (circa 2200 parole). Generalmente queste parole vengono create random da un'app, ma li posso anche copiare e inserire in una lista o in un file txt da utilizzare ome input
    Es . Lista = [“address","adjust","admit"..]

    2. creo una combinazione di parole tra quelle messe in input, in modo da formare righe di 12 parole.
    Es. Lista1 = [address","adjust","admit"]
    Lista2 = [address",admit","adjust","]
    Lista 3 =[ admit",", adjust","] …..
    …..
    Lista n-esima combinazione (generalmente le combinazioni dovrebbero essere n! / ((n-12)! 12!)= 2200! / (2200-12)!*12!), se non mi ricordo male)

    3. ottengo come output questa matrice con 12 colonne (lunghezza (frase) =12 parole ), e con 2200! / (2200-12)!*12! Righe

    E’ un programma difficile ?, io sto provando a realizzarlo ma non avendo grande esperienza in python sto riscontrando alcune diffcicoltà.
    Grazie per l'aiuto.
  • Re: Creazione di combinazione di parole

    Dexterifiation ha scritto:


    combinazione (generalmente le combinazioni dovrebbero essere n! / ((n-12)! 12!)= 2200! / (2200-12)!*12!), se non mi ricordo male)
    Quindi hai N = [2200! / (2200-12)!] / 12!

    Sicuramente N è maggiore di M = 2189^12 / 12!

    Hai idea di quanto grande sia M? Prova a farlo con la calcolatrice
  • Re: Creazione di combinazione di parole

    M = 2,5270403398110255×1031

    Infatti nell'output non voglio tutte le possibili combinazioni tra le 12 parole (N), ma tutte le possibili combinazioni che formano righe di 12 parole (M)
  • Re: Creazione di combinazione di parole

    Studiati meglio i concetti statistici.
    In ogni caso i numeri sono chiari. Non puoi farlo
  • Re: Creazione di combinazione di parole

    Ok, ma alcuni miei amici programmatori mi hanno riferito che è possibile farlo e non è difficilissimo (programma di 16 righe).
    Io sto partendo dal caso + semplice: riporto tutti i passaggi che sto facendo o che mi potreste aiutare a costruire tramite python

    1. Prendo in input una lista di 6 parole (nell’esempio ho inserito lettere ma l’ho inserite per rendere l’esempio il + semplice possibile)
    Es. lista = ["a", "b", "c", "d", "e", "f"]

    2. Creo tutte le possibili combinazioni in righe di 4 parole:
    Lista output :
    1: a b c d
    2: a b c e
    3: a b c f
    4: a b d e
    5: a b d f
    6: a c d f
    7: b c d f

    PS: La lista è fatta velocemente quindi potrebbero mancare delle righe

    Io sto provando a iniziare da questo tipo di programma, e mi potete dare un suggerimento sulla struttura in python che deve avere questo programma (devo usare una classe o basta una semplice funzione?)
  • Re: Creazione di combinazione di parole

    Dato che ho anche una leggera conoscenza di C# avevo inizialmente provato a relaizzare tale codice in C#.
    Però anche in questa modalità rilevo qualche errore che non mi dà la combinazione corretta.
    CoDice realizzato in C#:
    using System.Windows.Forms;
     
    namespace MescolaParole
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                string[] parole = { "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
                                    "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
                                    "action","actor","actress","actual","adapt","add","addict","address","adjust","admit" };
                string frase = "";
             
                for (int ciclo1 = 0; ciclo1 < parole.Length; ciclo1++)
                {
                    frase = parole[ciclo1 ] + ", ";
                    for (int ciclo2 = 0; ciclo2 < parole.Length; ciclo2++)
                    {
                         if (ciclo1 != ciclo2) frase += parole[ciclo2] + ", ";
                    }
                    listBox1.Items.Add(frase);
                }
            }
        }
    }
    
    Mi potete dire dove ho sbagliato in questo codice (per chi conosce il lingiaggio C#) ? E sicuramente non mi dà il risultato sperato ma è già un'inizio...
    Ed inoltre è possibile replicare questo esempio in Python???
  • Re: Creazione di combinazione di parole

    Dexterifiation ha scritto:


    Mi potete dire dove ho sbagliato in questo codice (per chi conosce il lingiaggio C#) ? E sicuramente non mi dà il risultato sperato ma è già un'inizio...
    Ed inoltre è possibile replicare questo esempio in Python???
    Finché non spieghi quali sono gli errori (non abbiamo sempre il tempo di testare il codice altrui), e finché non pubblichi il codice che hai scritto (si parlava di Python, proseguiamo in Python), sarà ben difficile fornirti qualche tipo di aiuto, che non sia fare il programma al posto tuo (ma la "pappa pronta" non è ben vista da queste parti).

    Per le altre considerazioni, ti sono già state fornite delle risposte.
  • Re: Creazione di combinazione di parole

    Prova in python
    Parole = ["abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse"]
    NewLista = []
    
    frase1 = []
    i = 0
    while i < len (Parole):
      frase1= Parole [i] + ","
      j=0
      while j< len (Parole):
        if i != j:
          frase1 += Parole [j] + ","
    
    NewLista.append (frase1)
    print (NewLista)
    
    
    Non mi dà alcun risultato ....
  • Re: Creazione di combinazione di parole

    Dexterifiation ha scritto:


    Ok, ma alcuni miei amici programmatori mi hanno riferito che è possibile farlo e non è difficilissimo (programma di 16 righe).
    Io sto partendo dal caso + semplice: riporto tutti i passaggi che sto facendo o che mi potreste aiutare a costruire tramite python

    1. Prendo in input una lista di 6 parole (nell’esempio ho inserito lettere ma l’ho inserite per rendere l’esempio il + semplice possibile)
    Es. lista = ["a", "b", "c", "d", "e", "f"]

    2. Creo tutte le possibili combinazioni in righe di 4 parole:
    Lista output :
    1: a b c d
    2: a b c e
    3: a b c f
    4: a b d e
    5: a b d f
    6: a c d f
    7: b c d f

    PS: La lista è fatta velocemente quindi potrebbero mancare delle righe

    Io sto provando a iniziare da questo tipo di programma, e mi potete dare un suggerimento sulla struttura in python che deve avere questo programma (devo usare una classe o basta una semplice funzione?)
    Se vuoi queste combinazioni sono due righe di codice
    
    
    from itertools import combinations 
    
    print(list(combinations(['a','b','c','d','e','f'],4))) 
    
    
    Se invece vuoi le combinazioni di prima, la cosa è impossibile, che ti piaccia oppure no
  • Re: Creazione di combinazione di parole

    Invece sai se è possibile con altri linguagi di programmazione? tipo il codice che ho fatto in C#, secondo voi, è corretto ?????
    O conoscete un software già precreato (anche a pagamento) che svolge questa operazione ????
    Scusate se lo sto chiedendo nella sezione "Python", ma non avendo trovato nessun programma per tale scopo, ho provato a crearlo con il linguaggio di programmazione imparato + recentemente.
  • Re: Creazione di combinazione di parole

    Ma scusa, quanti anni hai? 10^31 è più del numero di atomi presenti nel tuo corpo. Può mai farcela un computer a darti una matrice con quel numero di righe?
Devi accedere o registrarti per scrivere nel forum
12 risposte