Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 18. 06. 2008 20:47

Lucky11
Příspěvky: 70
Reputace:   
 

definice funce

Ahojda potřebovala bych pomoct s timto příkladem-Haskell

data Armada = Vojak | Velitel [Armada]

vojenska sila armady sa urci jako soucet sil vsech clenu armady,
pricemz kazdy Vojak ma silu 1 a kazdy Velitel ma silu 3

  a) uvedte hodnotu typu Armada, ktera predstavuje armadu o sile 6
  b) definujete funkci silaArmady (vcetne jej typu), ktera pro hodnotu
     typu Armada urci vojenskou silu podle vyse uvedenych pravidel


Předem dík za pomoct...

Offline

 

#2 19. 06. 2008 00:07

Kondr
Veterán
Místo: Linz, Österreich
Příspěvky: 4247
Škola: FI MU 2013
Pozice: Vývojář, JKU
Reputace:   38 
 

Re: definice funce

Ha, konečně nějaký Haskellista :)
a) buď
Velitel (Velitel [])
nebo
Velitel [Vojak, Vojak, Vojak]

b)silaArmady::Armada ->Int
silaArmady Vojak=1
silaArmady (Velitel [])=3
silaArmady (Velitel x:y)=silaArmady(x)+silaArmady(Velitel y)


BRKOS - matematický korespondenční seminář pro střední školy

Offline

 

#3 19. 06. 2008 12:42

Lucky11
Příspěvky: 70
Reputace:   
 

Re: definice funce

děkujuuu a poradil by jsi mi pleas jeste s jednim prikladem:)

Je dany datovy typ  Armada  reprezentujici strukturu veleni v hypoteticke
   vojenske organizaci:
 
   data Armada = Vojak | Velitel [Armada]

   a) urcete aritu typoveho konstruktoru a urcete jeho druh
 
   b) definujte funkci  nejvyssiSarze(vcetne jejiho typu), ktera pro hodnotu
      typu Armada vrati nejvyssiu sarzi velitela v armade, tj. nejvetsi pocet
      urovni veleni pod jednim velitelem

   sarze clena armady je definovana takto:
    - sarze radoveho vojaka je 0
    - sarze velitela je 0, ak veli prazdnej armade
    - sarze velitela je 1, ak veli armade tvorenej z radovych vojakov
    - sarze velitela je x+1, ak veli armade, v ktorej je najvyssia sarza x

Offline

 

#4 19. 06. 2008 13:07

Kondr
Veterán
Místo: Linz, Österreich
Příspěvky: 4247
Škola: FI MU 2013
Pozice: Vývojář, JKU
Reputace:   38 
 

Re: definice funce

a)
Typvoý konstruktor Vojak má aritu 0 (nečeká parametr), Velitel aritu 1 (čeká 1 parametr -- pole armád)

b)
Třetí pravidlo je jen zvláštní případ čtvrtého. Jde tedy o to, jak první, druhé a čtvrté pravidlo přepsat do Haskellu
nejvyssiSarze=sarze --zkraceni zapisu :)
sarze Vojak=0 -- prvni pravidlo, zrejme
sarze Velitel []=0 -- druhe, taky :)
sarze Velitel x:y=max (1+sarze x) (sarze (Velitel y))

Poslední pravidlo chce trochu objasnit: Kdyby velel jenom armádě x, měl by šarži 1+sarze x. Kdyby velel všem armádám ze seznamu y,  měl by šarzi velitele, který velí armádám y. Protože velí oběma, za šarži se mu počítá větší z těchto hodnot.


BRKOS - matematický korespondenční seminář pro střední školy

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson