#!/usr/bin/env python
# -*- coding: utf-8 -*-
#import sys
#param = sys.argv[1:]

"""
Created on Thu May 25 21:46:14 2017

@author: jaques
"""
#para chamar ide python: import mcArea as mc
#Exemplo:
#[e,p]=mc.area(1,100)
def area(raio, it):
    import matplotlib.pyplot as plt
    import random as rd
        
    plt.hold(True)
    plt.ion()
    erro=0
    acertos=0
    #se o raio é 1, varia de -1 até 1, e o intervalo é 2
    intervalo=raio - (-raio);
    for i in range(it):
        xr=-raio+intervalo*rd.random()
        yr=-raio+intervalo*rd.random()
        plt.title('Porcentagem de iterações: '+str(round(i*100/it,4))+'%')        
        if (xr*xr+yr*yr)<=raio*raio: #se acertou na area da circunferencia
            acertos=acertos+1
            plt.plot(xr,yr,'ro')
        else:
            erro=erro+1
            plt.plot(xr,yr,'bo')
        
        plt.xlabel('Estimativa: '+str(round(acertos*4*raio*raio/(i+1),2)))    
        plt.draw()
        plt.pause(0.00005) #permite pausar para mostrar plotagem
        
    #plt.show()    
    porc=acertos/it  #porcentagem de acertos 
    est=(acertos/it)*4*raio*raio
    print('Area: %f' %est)
    return [est,porc]

import sys
#verifica se é chamado como programa, sem usar import
if __name__=='__main__':   #chamado como $ python mcArea.py
    if len(sys.argv)==3:
        [est,porc]=area(argv[1],argv[2])  #chama a função
    else:
        print("\nNumero de parâmetros inválido")
        print('Digite python mcArea.py raio iteracao')

#se fosse chamado com import, __name == "mcArea"

# =============================================================================
# Exemplo:        
# ojacques@I7LinuxMint /media/DadosLinuxWin/IA $ python mcArea.py
# 
# Numero de parâmetros inválido
# Digite python mcArea.py raio iteracao
# =============================================================================

# =============================================================================
# PASSAGEM DE PARÂMETROS VARIÁVEIS
# =============================================================================
#        
# >>> def f(*args):  #args é uma tupla, isso que diz o '*'
# ...     print args
# ... 
# >>> f(10, 'joao', True)
# (10, 'joao', True)
# >>> 
# >>> f('programador', 1000.50)
# ('programador', 1000.50)
# >>> 
# 
# >>> def g(**kwargs): #kwargs é um dicionário, isso que diz o '**' 
# ...     print kwargs
# ...
# >>> g(nota=10, nome='joao', aprovado=True)
# {'aprovado': True, 'nota': 10, 'nome': 'joao'}
# >>> 
# =============================================================================        

# =============================================================================
#  FUNÇÃO round()      
# =============================================================================
# Arredonda pro mais próximo.
# Se empatar, arredonda pro número PAR mais próximo.  
