Fórum Ubuntu Linux - PT
Suporte Técnico => Programação e Scripts => Tópico iniciado por: _Luks em 24 de Agosto de 2006, 13:28
-
Ae galera!
Vamos compartilhar os nossos "codes" aqui nesse tópico!
Vale qualquer linuguagem, o tanto que funcione no linux.
Pra começar, postarei um script feito em python. Esse script simula uma votação.
#!/usr/bin/python
# -*- coding: utf-8 -*-
#votos.py - por lucas nogueira (luksnogueira@gmail.com)
import os
from random import choice
#unix commands
unix=os.system
#clear
unix("clear")
#candidatos
candidatos=[]
cnask=[]
print 'Votacao Script 1.6'
print 'Quantos candidadtos você quer?'
nc=input()
k=0
while k <= (nc-1): # gera o name ask
op='c'+str(k)+' = raw_input("Qual o nome do candidato '+str(k)+'?")'
exec op
msg='name=c'+str(k)
exec msg
candidatos.append(name)
k+=1
unix('clear')
def start(candidatos):
unix('clear')
control=input('Deseja quantos eleitores (fora voce ?) ')
w=open('./votos.txt','a')
k=0 #variavel controladora do looping
while k < control:
k=k+1
i=choice(candidatos)
w.write(i)
w.write('\n')
#seu voto
print 'Em qual candidato voce vota ?'
i=0
for k in candidatos:
msg='cdname = c'+str(i)
exec msg
print '%i) %s' %(i,k)
i+=1
your=input()
try:
voto=candidatos[your]
w.write(voto)
except:
print 'não consegui armazenar o voto'
unix('clear')
print 'votacao terminada!!!\n '
print 'Aperte enter para ir para a CONTAGEM DE VOTOS'
raw_input()
w.close()
contar(candidatos)
def contar(candidatos):
unix('clear')
f=open('./votos.txt','r')
vots=f.read() #le o texto
texto=vots.split() #transforma o texto em uma lista
y=0
for x in candidatos:
msg='cv'+str(y)+' = texto.count("'+str(x)+'")'
exec msg
cand='vc=cv'+str(y)
exec cand
print 'Candidato %s obteve %i votos \n' %(x,vc)
print 'Aperte enter para ir para o MENU'
raw_input()
unix('rm ./votos.txt') #deleta o dumpfile do voto
menu()
def menu():
unix('clear')
unix('echo -ne "\a"')
print 'Votacao Script 1.6 \n'
print 'Esse script simula uma votacao'
print 'a) Iniciar nova votacao'
print 'b) Sair'
ans=raw_input()
if ans == 'a':
start(candidatos)
elif ans == 'b':
print 'bye!'
exit
else:
menu()
exit
menu() #starta o programa
-
Eu fiz um resolvedor de Sudokus. Por enquanto ele só resolve os mais simples.
Ele foi feito em python, e para usá-lo:
python programa arquivo_com_sudoku
Os arquivos com sudoku são em modo texto. Um exemplo:
3,8,0,4,0,2,0,0,9
0,0,4,9,0,0,0,0,0
0,1,9,7,0,0,2,0,5
1,0,2,8,6,3,7,0,4
0,0,6,0,0,0,9,0,0
8,0,5,1,9,4,3,0,6
5,0,8,0,0,1,4,9,0
0,0,0,0,0,7,1,0,0
7,0,0,6,0,9,0,3,2
from sys import argv
from time import sleep
def inicia_matriz(file):
matriz = [[int(j) for j in i.split(',')] for i in file]
return matriz
def imprime_matriz (matriz):
print 'Resolvido!!!\n'
for i in matriz:
print ' '.join([str(j) for j in i])
print
def cria_conjunto_quadrante (matriz,x,y):
quad = []
for i in xrange((x/3)*3,(x/3+1)*3):
for j in xrange((y/3)*3,(y/3+1)*3):
if matriz[i][j] != 0:
quad.append(matriz[i][j])
return quad
def resolve (matriz):
#Criando um conjunto com valores de 1 a 9
sequencia = set(range(1,10))
for x,i in enumerate(matriz):
for y,j in enumerate(i):
# Se o elemento já existe não faz nada
if j == 0:
#cria um conjunto com todos os elementos da linha
linha = set(i)
linha.remove(0)
#cria um conjunto com todos os elementos da coluna
coluna = set([c[y] for c in matriz if c[y] != 0])
quad = cria_conjunto_quadrante(matriz,x,y)
try:
#Aqui é criado um conjunto com os elementos do quadrante
quad = set(quad)
#Diferença de conjuntos
temp = list(sequencia - (linha | coluna | quad))
#Verifica se a diferença é maior que 1. Se for ainda não o resultado
if len(temp) > 1:
continue
matriz[x][y]= temp[-1]
except:
matriz[x][y] = 0
def completo (matriz):
#Verifica se está completo.
for i in matriz:
#Caso exista um zero não esta completo
if 0 in i:
return False
return True
def main():
file = open (argv[-1])
matriz = inicia_matriz(file)
file.close()
while not completo(matriz):
resolve(matriz)
imprime_matriz(matriz)
main()
-
essa função é para testar se o número é primo
def testa_primo(numero):
c=2
while c<numero:
if numero % c == 0:
break
else:
c+=1
if c==numero:
return True
else:
return False
e esse pequeno programa é para listar todos os numeros primos até o numero natural X:
numero=input('Gerar números primos até que número?')
x=3
while x<=numero:
c=2
while c < x:
if x % c == 0:
break
else:
c+=1
if c==x:
print x
x+=1
-
um algoritimo matemático muito interessante:
para todo X={X € R | x > 0 } o valor final sempre será 1!
def f(x):
print x
while x != 1:
if x%2!=0:
x=3*x+1
else:
x=x/2
print x
if __name__ == '__main__' :
x=raw_input('diga o valor da variavel')
f(float(x))