BogoSort
Publicado por Renan Birck Pinheiro (última atualização em 27/11/2011)
[ Hits: 5.434 ]
Homepage: http://renanbirck.rocks
Implementação do BogoSort em Python, que permite visualizar a "pontuação" de cada tentativa de "ordenação" do vetor. Fiz para testar a matplotlib.
http://pt.wikipedia.org/wiki/Bogosort
#!/usr/bin/python2.7 # -*- coding: utf-8 -*- # (cc) Copyleft 2011 Renan Birck # renan.ee.ufsm @ (serviço de e-mail do google) from random import shuffle, sample from sys import argv, exit from matplotlib import pyplot as plt from matplotlib import rc from scipy import mean, std from operator import mul qualities = [] i = 0; def measureSolutionQuality(seq): """ Mede a qualidade da solução se comparada com o vetor original. """ score = 0 for z in enumerate(seq): score += reduce(mul,z) return score def bogosort(seq): """ BogoSort em si """ global i while not all(x <= y for x, y in zip(seq, seq[1:])): shuffle(seq) #print "Iteration %d, quality is %d. " % (i,measureSolutionQuality(seq)), seq qualities.append(measureSolutionQuality(seq)) i += 1 return seq if len(argv) == 1: n = 10 else: n = int(argv[1]) if n>1000: exit("Tu tá tirando uma com a minha cara, né?") data = sample(range(1000),n) goodSol = measureSolutionQuality(sorted(data)) print "A qualidade da melhor solução é %d." % goodSol sorted = bogosort(data) print "Precisei de %d iterações para fazer o BogoSort dela." % i print "Qualidade min/max/média/desvpad: %f, %f, %f, %f" % (min(qualities),max(qualities),mean(qualities),std(qualities)) # Plotar o diagrama plt.plot(range(len(qualities)),qualities,'ro') rc('text', usetex=True) # Para usar acentos com a matplotlib plt.xlabel('Itera\c c\~ao') plt.ylabel('Qualidade') plt.title("BogoSort: itera\c c\~ao x qualidade") plt.show()
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Jogos baixados na Central de Aplicativos mas que não abrem (1)
debian com wayland, configuracao de teclado. Mudou Tudo! [RESOLVIDO] (1)
Iinstalar o Scanner Kodak i940 no Linux Mint 19/20? (3)
Pastas da raiz foram para a área de trabalho [RESOLVIDO] (11)