Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Espansione "stringhe degenerate"

    Ciao a tutti. Stavo cercando un metodo elegante (funzione ASP vbscript) per espandere "stringhe degenerate". Cerco di spiegarmi meglio. Un esempio di stringa degenerata potrebbe essere: ACG(GT)TGA(ATC)ACAC. Vorrei scrivere una funzione che la espanda in:
    ACGGTGAAACAC
    ACGGTGATACAC
    ACGGTGACACAC
    ACGTTGAAACAC
    ACGTTGATACAC
    ACGTTGACACAC

    La funzione, preso in ingresso ACG(GT)TGA(ATC)ACAC, dovrebbe ritornare un array con le 6 possibilità viste sopra
    Qualcuno mi può dare una mano?


    Thx

    PS: Avete riconosciuto il tipo di "stringhe"? ;-)

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    codice:
    <%
    degenerate "ACG(GT)TGA(ATC)ACAC"
    
    sub degenerate(t)
    	ps = instr(t,"(")
    	if ps=0 then
    		response.write t & "
    "
    	else
    		pd = instr(t,")")
    		ts = left(t,ps-1)
    		tc = mid(t,ps+1,pd-ps-1)
    		td = mid(t,pd+1)
    		for i=1 to len(tc)
    			degenerate ts & mid(tc,i,1) & td
    		next
    	end if
    end sub
    %>
    ovviamente si puo' usare anche per sviluppare le schedine...

    degenerate "1x2(2x)11x(1x2)1x22(1x)"

    Per trasformarla in funzione che restituisce un array puoi provarci tu... altrimenti siamo sempre qui

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Perfetto! Era proprio quello che cercavo!!! Vedo che è una funzione recursiva, se non erro. Sai per caso indicarmi dove posso apprendere di più su tali funzioni, visto che mi risultano ancora un pò ostiche?

    Ho leggermente modificato la tua funzione affinchè costruisca l' array. La riporto qui di seguito:

    <%
    Dim MyLst
    degenerate("ACG(GT)TGA(ATC)AC(AT)C")
    degArr = Split(MyLst,",")
    For each El in degArr
    Response.write El & "
    "
    Next

    sub degenerate(t)
    ps = instr(t,"(")
    if ps=0 then
    MyLst = MyLst & t & ","
    else
    pd = instr(t,")")
    ts = left(t,ps-1)
    tc = mid(t,ps+1,pd-ps-1)
    td = mid(t,pd+1)
    for i=1 to len(tc)
    degenerate ts & mid(tc,i,1) & td
    next
    end if
    end sub
    %>
    Grazie infinite ancora!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.