Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

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: 4246
Š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: 4246
Š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