GRY-Online.pl --> Archiwum Forum

"Nieprzypadkowy" generator znaków - algorytm.

11.06.2008
15:11
[1]

Grzesiek [ www na-skroty pl ]

"Nieprzypadkowy" generator znaków - algorytm.

Otóż chciałbym uzyskać taki generator jak na

Mianowicie, użytkownik wprowadza "a", klika i otrzymuje "b". Tak do "z".

Przy "z" wraca i zaczyna od "aa", następnie "ab", "ac" ... "az", następnie "ba", itd.

Tylko za cholerę nie mogę sobie "rozkminić" algorytmu :/


Na razie mam to:

Dim txt As String = TextBox1.Text

If txt.Length = 1 Then 'jeśli jeden znak
Dim old As Integer = Asc(txt(txt.Length - 1))
Dim newtxt As String
If old = 122 Then 'jeśli Z
newtxt = Chr(97) & Chr(97)
Else
newtxt = Chr(old + 1)
End If
Response.Write(newtxt)
Else 'jeśli więcej znaków
Dim old As Integer = Asc(txt(txt.Length - 1))
Dim newtxt As String
If old = 122 Then 'jeśli ostatni Z, usuń dwa ostatnie, inkrementu przedostatni, dodaj a
Dim start As Integer = Asc(txt(txt.Length - 2))
txt = txt.Remove(txt.Length - 2)
newtxt = txt & Chr(start + 1) & Chr(97)
Response.Write(newtxt)
Else
newtxt = txt.Remove(txt.Length - 1) & Chr(old + 1)
Response.Write(newtxt)
End If

End If

I śmiga dobrze, póki ciąg nie przybiera postaci "zz", wtedy sypie się i mamy klamerkę ( ‹ ) i a.

Może jest na to jakiś prostszy sposób?

11.06.2008
15:59
[2]

MOD [ Generaďż˝ ]

Blad musi byc tutaj, moja analiza ponizej,ale nie znam tego jezyka, rozumiem ze dziala to tak
dla przypadku txt=zz
Dim start As Integer = Asc(txt(txt.Length - 2)) // bierzesz ostatni znak z ciagu "zz" czyli masz z
txt = txt.Remove(txt.Length - 2) //kasujesz dwa znaki czyli masz text=""
newtxt = txt & Chr(start + 1) & Chr(97) newtxt=""+(z+1) +a
czyli dostaniesz cos takiego ^a

Powinno byc tak
Jesli dlugosc ciagu wieksza niz 1
musisz zrobic warunek jesli ostatni znak ciagu = z to dodaj nowy znak
czyli
txt=txt & chr(97)
else (ta czesc masz dobrze)
txt=txt(wszystko oprocz przedostatniego znaku) +txt(ostatni znak+1)
uzywajac Twojego sposobu
txt=txt.Remove(txt.Length - 1)
txt=txt & chr(old+1)
Po zz powinienes uzyskac zza.

11.06.2008
16:26
[3]

MOD [ Generaďż˝ ]

Jesli po zz chcesz uzyskac
aaa
to algorytm powinien tak wygladac
Jezeli ostatni znak=z
sprawdz czy ciag nie sklada sie z samych znakow zzz

jak to sprawdzic
a=dlugosc ciagu txt;
txt="";
newtxt=""
licznik=0
licznikznakowrownychz=0;
dopoki licznik nie jest rowny liczbie znakow ciagu txt

if ASC(txt.Length - a-licznik) = z

licznikznakowrownychz=licznikznakowrownychz+1;

licznik=licznik+1;




jesli ciag sklada sie tylko z literek z(licznikznakowrowncyhz=a) to
txt=txt & chr(97)
jesli nie to
txt=txt.Remove(txt.Length - 1)
txt=txt & chr(old+1)

© 2000-2026 GRY-OnLine S.A.