Cadeias aleatórias

Publicado por Sandro Marcell 20/07/2008

[ Hits: 3.816 ]

Homepage: http://sanmarcell.wordpress.com

Download cadeia.tcl




Simples script em Tcl/Tk que gera cadeias aleatórias em modo gráfico.

  



Esconder código-fonte

#!/usr/bin/wish
#
# Gerando cadeias aleatorias.
# Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Obs.:
# - As cadeias geradas por padrao possuem 13 caracteres;
# - Caso queira alterar esse valor, basta modificar a variavel 'qtd';
# - Caso o usuario nao marque nenhuma das opcoes, as cadeias serao geradas
# utilizando caracteres alfabeticos, numericos, sinais de pontuacao e
# outros simbolos;
# - Para obter ajuda sobre os comandos aqui utilizados, num terminal
# digite: tclhelp

# Codificacao do script:
encoding system iso8859-1

# 'Resetando' valor para a funcao rand():
expr srand([pid])

# Bloco principal:
proc _GeraCadeia_ {} {
   # Quantidade de caracteres na cadeia:
   set qtd 13

   # Lista principal de caracteres:
   set cars {
      a b c d e f g h i j k l m n o p q r s t u v w x y z
      A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
   }

   # Qual tipo de cadeia gerar?
   if {$::marcado == 1} {
      # Cadeia alfabetica:
      lappend cars
      set cor red
   } elseif {$::marcado == 2} {
      # Cadeia alfanumerica:
      lappend cars 0 1 2 3 4 5 6 7 8 9
      set cor blue
   } else {
      # Se nada for marcado, este e o padrao:
      lappend cars 0 1 2 3 4 5 6 7 8 9 ! ? ^ ~ @ # $ % & * - _ + =
      set cor black
   }
   
   # Loop de controle:
   for {set i 0} {$i < $qtd} {incr i} {
      # Gerando numero randomico com base no tamanho de $cars:
      set nrd [expr {int([llength $cars]*rand())}]
      # Buscando $nrd em $cars: 
      append str [lindex $cars $nrd]
      # 'Limpando' $nrd:
      unset nrd
   }

   # Reconfigurando o label '.mostrar -text {}':
   .mostrar configure -text $str -background $cor
}


# Montando 'widgets':
tk_setPalette black
wm title . "[file tail $argv0]"
wm minsize . 280 140
wm maxsize . 280 140

# Botao 'Gerar cadeia':
button .botao -text "Gerar cadeia" -command { _GeraCadeia_ }
pack .botao -side bottom -expand yes 

# Escolhendo o tipo de cadeia a ser gerada:
label .informe -text "Que tipo de cadeia gerar?"
pack .informe -side top -fill x -expand yes

# Mostrando resultado:
label .mostrar -text {} -relief ridge -padx 5 -pady 5 
pack .mostrar -side bottom -fill x -expand yes  

# Opcoes de cadeia:
checkbutton .opcao_1 -text "Alfabética" -onvalue 1 \
-selectcolor red -variable marcado
pack .opcao_1 -side left -expand yes 
checkbutton .opcao_2 -text "Alfanumérica" -onvalue 2 \
-selectcolor blue -variable marcado
pack .opcao_2 -side right -expand yes

# Fechando aplicacao (use F1 ou clique no 'X' da janela!):
bind all <F1> { destroy . ; exit }
# Fim

Scripts recomendados

Visualizador de imagem

Player de musica

Corretagem 0.1 - calcula corretagem padrão de operações da Bovespa

Script em Tcl para descompactar arquivos

O mundo do Polinômio


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts