#!/usr/bin/env python3
'''Program rzuca monetą 1000x10 razy i pokazuje na "histogramie" ilość
wyrzuconych reszek. Program może rysować o 2 gwiazdki za dużo lub za mało
ze względu na błąd przybliżenia'''
import random
import math

#Część programu odpowiedzialna za losowanie i liczenie

i=0
k=0
iloscreszek=0 #zliczanie reszek w każdej z 1000 prób
lista1=[] #lista z wynikami losowań
lista2=[] #lista z ilościami reszek w każdej próbie
while i<1000: #1000 prób
    while k<10: #po 10 rzutów
        losowanko=random.choice(['O','R']) #zmienna przyjmująca wynik ostatniego
                                           #losowania
        lista1.append(losowanko)
        if losowanko=='R':
            iloscreszek+=1 #jeśli wylosowana została reszka, to zapisujemy to
        k+=1
    i+=1
    k=0
    lista2.append(iloscreszek) #zapisujemy ilość reszek w 10 rzutach...
    iloscreszek=0 #...i liczimy reszki od nowa
#Pętla zliczająca każdą ilość wypadniętych reszek:
i=0
k=0
lista3=[0,0,0,0,0,0,0,0,0,0,0] #lista, na której każde kolejne miejsce
                               #to liczba prób (z 1000), w których wypadło
                               #zero reszek, jedna reszka, dwie reszki, ..., dziesięć
while k<=10: #badamy wszystkie 11 możliwości (0-10)
    while i<1000: #badamy wszystkie tysiąc miejsc
        if lista2[i]==k:
            lista3[k]+=1 #gdy sprawdzono zerowe miejsce listy, sprawdzamy kolejne
        i+=1
    k+=1 #Gdy sprawdzono wszystkie zera, sprawdzamy wszystkie jedynki
    i=0
print('Na kolejnych miejscach wyświetla się ilość losowań,\nw których wypadło 0, 1, 2, ..., 10 reszek:')
print(lista3)
k=0
i=0
'''while k<=10:
    print('Procentowy udział',k,'reszek w 1000 prób:',(lista3[k])/10,'%')
    k+=1
k=0'''
#Szukanie zwycięskiego wyniku:
while k<=10:
    if lista3[k]>i: #i to wynik zwycięskiej ilości
        i=lista3[k]
        j=k #j to zwycięska ilość
    k+=1
print('Najczęstsza ilość reszek wypadła',i,'razy.')
print('Najczęstsza ilość to ',j,'.',sep='')
reszeknagwiazdke=round(i/30) #wskaźnik ile reszek to jedna gwiazdka (round
                             #oznacza przybliżenie do wartości całkowitej)
print(reszeknagwiazdke,'wypadnięć danej ilości reszek jest reprezentowane\nprzez jedną gwiazdkę (+/- dwie).')

#Część programu odpowiedzialna za rysowanie

i=0 #i odpowiada za kolejne wiersze
k=0 #k odpowiada za kolejne kolumny
rzad=30
narysujgwiazdke=[0,0,0,0,0,0,0,0,0,0,0] #narysujgwiazdke to zmienna-lista, która
#kontroluje czy rząd wyżej w tej samej kolumnie była już narysowana gwiazdka
#Rysowanie gwiazdek:
while i<30:
    while k<=10:
        if math.fabs(lista3[k]-rzad*reszeknagwiazdke)<=15 or narysujgwiazdke[k]==1:
            #15 to maksymalny błąd przybliżenia wynikający z 30*0.5
           print('*     ',end='')
        else:
            if math.fabs(lista3[k]-(rzad+1)*reszeknagwiazdke)<=15: #jeśli
                #rząd wyżej była gwiazdka, to teraz też ma być
                print('*     ',end='')
                narysujgwiazdke[k]=1
            else:
                print('      ',end='')
        k+=1
    k=0
    i+=1
    rzad-=1
    print()
#Podpisywanie rządków ilościami reszek:
k=0
while k<=10:    
    print(k,'     ',sep='',end='')
    k+=1
#Podpisywanie rządków procentowym udziałem:
print() #Enter
k=0 
while k<=10:
    #Ify wynikają z długości liczb i potrzebnych przerw między kolejnymi
    if lista3[k]<100:
        print((lista3[k])/10,'%  ',sep='',end='')
    if lista3[k]<1000 and lista3[k]>99:
        print((lista3[k])/10,'% ',sep='',end='')
    if lista3[k]==1000:
        print((lista3[k])/10,'%',sep='',end='')
    k+=1



