Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 629 odgovora
  • 107.964 pregleda

Najnovija ↓

Re: Zadaci za wannabe pythoniste 16.12.2019. u 10:31 · pre 83 meseca #41
Citat:
sneguljko:
brano malo si zabrazdio, to je aritmetička sredina a ne traženi broj.


Ma sad vidim ne znas koji je od a, b, c pa moras da racunas ;)
Re: Zadaci za wannabe pythoniste 16.12.2019. u 11:10 · pre 83 meseca #44
Code:
Sneguljko:
Rešio sam problem na identičan način :) Idemo nešto teže. 




Idemo

Štampanje tabele


Napiši funkciju printTabela() koja uzima listu lista stringova i prikazuje je na ekranu, tako da je svaka kolona pravilno poravnata udesno. Pretpostavićemo da svaka od unutrašnjih lista ima isti broj stringova. Na primer, vrednosti mogu ovako da izgledaju:

podaciTabela = [[‘Panta’, ‘Branimir’, ‘Sneguljko’, ‘a1234567’]
[‘python’, ‘haskell’, ‘turbo pascal’, ‘cbasic’]
[‘profi nivo’, ‘srednji nivo’, ‘osnovni nivo’, ‘nema nivo’]


Tvoja printTabela funkcija treba da isprinta sledeće:



Hint: Tvoj kod treba prvo da nađe koji je najduži string u svakoj od unutrašnjih lista, tako da bi kolona bila dovoljno široka da taj string stane u nju. Tu maksimalnu širinu svake kolone možeš da sačuvaš kao listu integera. printTabela() funkcija može da počne sa kolShir = [0] * len(podaciTabela), što će napraviti listu koja sadrži isti broj 0 vrednosti koliko ima i unutrašnjih lista u podaciTabela. Na taj način kolShir može da širinu najdužeg stringa smesti u podaciTabela[1] i tako dalje. Potom možeš da nađeš najveću vrednost u kolShir listi, kako bi utvrdio koji integer za širinu treba da proslediš rjust() string metodu.

Ajd sad...
Re: Zadaci za wannabe pythoniste 16.12.2019. u 12:00 · pre 83 meseca #45
Evo u haskell-u, jer moze krace u pythonu ;)?

Code:

import qualified Data.Text as T
import Data.List 

main = do
    let podaciTabela = [["Panta", "Branimir", "Sneguljko", "a1234567"],
                    ["python", "haskell", "turbo pascal", "cbasic"],
                    ["profi nivo", "srednji nivo", "osnovni nivo", "nema nivo"]]
    let maxlen :: Int 
        maxlen = foldl (\m x->max m $ maximum $ map length x) 0 podaciTabela
    mapM_ (\x -> do mapM_ (\x->putStr $ (T.unpack $ T.justifyRight maxlen ' ' $ T.pack x) ++ " ") x
                    putStrLn "") $ transpose podaciTabela


Code:

~/examples/haskell >>> ./tabela                                                                                                                                                                                              
       Panta       python   profi nivo 
    Branimir      haskell srednji nivo 
   Sneguljko turbo pascal osnovni nivo 
    a1234567       cbasic    nema nivo 
Re: Zadaci za wannabe pythoniste 16.12.2019. u 21:03 · pre 83 meseca #50
Ako nekoga interesuje kako da se reši moj zadatak (euler.net zaadatak 205), postaviću ovde jedno moguće rešenje.
Ko još uvek želi da pokuša da ga reši, neeka preskoči ovaj post

Code:

#frequency of posible sums for 4 and 6 dices games
dice4sum = 36*[0]
dice6sum = 36*[0]

for d1 in range (1,5):
  for d2 in range (1,5):
    for d3 in range (1,5):
      for d4 in range (1,5):
        for d5 in range (1,5):
          for d6 in range (1,5):
            for d7 in range (1,5):
              for d8 in range (1,5):
                for d9 in range (1,5):
                  s = d1+d2+d3+d4+d5+d6+d7+d8+d9
                  dice4sum[s-1] += 1

for d1 in range (1,7):
  for d2 in range (1,7):
    for d3 in range (1,7):
      for d4 in range (1,7):
        for d5 in range (1,7):
          for d6 in range (1,7):
            s = d1+d2+d3+d4+d5+d6
            dice6sum[s-1] += 1

partsum = 0

#win probability for 4 dices player is:
#frequency of outcome n when 6 dices player has outcome lese then n
#divided by product of both total outcomes
for i in range (1,36):
  #calculate running sum of 6 dices games
  dice6sum[i] += dice6sum[i-1]
  #number of outcomes when player with 4 dices wins
  partsum += dice4sum[i]*dice6sum[i-1]

#print(dice4sum)
#print(dice6sum)
#print(partsum)

print(round(partsum/(4**9*6**6),7))
Re: Zadaci za wannabe pythoniste 16.12.2019. u 21:27 · pre 83 meseca #51
Citat:
Branimir Maksimovic:
Evo u haskell-u, jer moze krace u pythonu ;)?

Code:

import qualified Data.Text as T
import Data.List 

main = do
    let podaciTabela = [["Panta", "Branimir", "Sneguljko", "a1234567"],
                    ["python", "haskell", "turbo pascal", "cbasic"],
                    ["profi nivo", "srednji nivo", "osnovni nivo", "nema nivo"]]
    let maxlen :: Int 
        maxlen = foldl (\m x->max m $ maximum $ map length x) 0 podaciTabela
    mapM_ (\x -> do mapM_ (\x->putStr $ (T.unpack $ T.justifyRight maxlen ' ' $ T.pack x) ++ " ") x
                    putStrLn "") $ transpose podaciTabela


Code:

~/examples/haskell >>> ./tabela                                                                                                                                                                                              
       Panta       python   profi nivo 
    Branimir      haskell srednji nivo 
   Sneguljko turbo pascal osnovni nivo 
    a1234567       cbasic    nema nivo 


Ajde da probam sa dve linije Python koda:
Code:
for row in zip(*podaciTabela):
    print(' '.join(s.rjust(len(max(map(lambda x: x[1], podaciTabela)))) for s in row))
     
       Panta       python   profi nivo
    Branimir      haskell srednji nivo
   Sneguljko turbo pascal osnovni nivo
    a1234567       cbasic    nema nivo
Re: Zadaci za wannabe pythoniste 17.12.2019. u 03:54 · pre 83 meseca #53
Panto, hajde objasni taj kod. Sve si smućkao u jedan red, ko palačinku kad zaviješ. Protresi to malo :)

Sad gledam, lambda je no-name privremena funkcija, ali šta ti je ovo [1] pored x, koji deo podaciTabela to obuhvata? Liči mi na index kod liste, ali zašto baš 1? Ovako mi izgleda kao da mapira samo drugi član u svakoj listi. Jel to zato što odokativno vidiš da je "turbo pascal" najduži string, pa ne proveravaš ostale članove liste?

Ostalo ovako razumem:
map mu kaže da funkciju primeni na svaki član liste podaciTabela. I funkcija ide kroz drugi član svake liste.
max vraća najveću vrednost u iteratoru (ako mu je to pravi srpski prevod?), dakle, najduži string.
len daje broj karaktera tog najdužeg stringa.
rjust poravnava udesno za toliko koliko je dužina + onaj jedan spejs ' ' na početku. Ali šta ti je ovaj s? Verovatno frljoka varijabla, koja se pojavljuje i na kraju i preko row povezuje ime funkcije u prvom redu sa njenim statement u drugom.
join valjda dodaje taj jedan spejs svakom članu iteratora, tj. svakom članu tabele.

zip pravi tuple spajajući prve, druge, treće itd. članove različitih iteratora.

Ovako kad razložim mi je ponešto i jasno. Ali nema šanse da to ovako sklopim :)



Re: Zadaci za wannabe pythoniste 17.12.2019. u 04:21 · pre 83 meseca #54
"ali zašto baš 1?"

Zato sto je u toj koloni najveca duzina, sto nije resenje zadatka. Trazi se maksimalna duzina svih ne samo jedne kolone.
Re: Zadaci za wannabe pythoniste 17.12.2019. u 08:57 · pre 83 meseca
izmenjeno 1 put, poslednji put sneguljko 17.12.2019. u 09:59
  1. sneguljko17.12.2019. u 09:59zapis iz teksta poruke
#56
vi ste krejzi, meni mozak ne radi tako napredno. Mora da ste napredni.

------------------

Jel može sad neko da kaže, šta mi treba da se program hello world izvrši u prozoru a ne u terminalu. Jel komplikovano?
Re: Zadaci za wannabe pythoniste 17.12.2019. u 10:27 · pre 83 meseca #57
Kakvom terminalu?
Pa koristiš neki interpreter, ne terminal. Jednostavno je.

Sa instalacijom pythona valjda ide i IDLE interpreter ili shell. U njemu kucaš komande i u njemu se i izvršavaju.




Naravno kad je više linija, lakše je ukucati sve u običnom text fajlu. Za to ideš u IDLE meniju gore File > New (ili ctrl + N)
i otvoriš prazan fajl, kucaš (ako znaš šta) i u meniju Run > Run Module (ili F5) pokreneš program u IDLE i vidiš koju ti grešku javlja :)

Možeš i da instaliraš neki drugi interpreter. Vrlo je jednostavan ovaj
Mož da probaš online ili gore link za Download, pa instaliraš. I onda... pesma :)

Srećno!




Re: Zadaci za wannabe pythoniste 17.12.2019. u 10:56 · pre 83 meseca #58
ja sam na linuxu, sve ide preko terminala. Mislio sam eto da nacrtam jedan krug :) Kako ćeš tu kad je loša rezolucija.

---

vidi ovoooo :)

Code:

import turtle

t = turtle.Turtle()
t.circle(50)
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme