BME Villamosmérnöki és Informatikai Kar
Műszaki informatika szak
Nappali tagozat
2002/2003. tanév, őszi félév

Deklaratív programozás

1. SML kis házi feladat

2002. október 28.

A kis házi feladat beadása nem kötelező.

A programot tömörítve, elektronikus levélben kell beküldeni. A beküldéshez egy bash szkriptet kell használni. A szkriptet futtatni a

    bash dpkhfbe.02a
paranccsal lehet (feltéve, hogy ezen a néven mentettük el).

Figyelem! Az ural2 szerveren a /usr/local/bin könyvtárban található a bash program.

A szkript elinduláskor elmagyarázza a teendőket (mi legyen az adott könyvtárban, milyen néven stb.). Mielőtt valaki hibára panaszkodna, győződjön meg róla, hogy a hiba az ural2.hszk.bme.hu szerveren is reprodukálható.

A programok készülhetnek MS DOS vagy MS Windows alatt is, de Unix (Linux) operációs rendszer alatt is működniük kell.

A feladat

Adott egy lista, amelynek elemei egész számok

A feladat a lista rendezése úgy, hogy az elején álljanak a negatív számok, utána a 0 értékű elemek, végül pedig a pozitív számok. Az egyes csoportokon belül az elemek sorrendje ne változzék.

Írjon negpoz néven SML függvényt, amely megvalósítja a leírt rendezést.

A segédfüggvényeket feltétlenül lássa el fejkommenttel! Törekedjék arra, hogy a megoldás hatékony legyen!

(* negpoz ls = az ls elemeinek fent leírt rendezésével előállított lista
   negpoz : int list -> int list
*)

Példák

- negpoz [];
> val it = [] : int list

- negpoz [1, 0, ~1, 0];
> val it = [~1, 0, 0, 1] : int list

- negpos [6, 0, ~9, 3, ~8, 1, 2];
> val it = [~9, ~8, 0, 6, 3, 1, 2] : int list

- negpoz [~8, 0, 1, ~8, 3, 0, 1];
> val it = [~8, ~8, 0, 0, 1, 3, 1] : int list

Egyéb követelmények és tudnivalók

Ez az első SML kis házi feladat, ezért khf-ml1.sml néven kell beküldeni a megoldást. A beadási határidő november 3., vasárnap 24:00.

A vizsgaosztályzat megállapításakor a határidőre beadott, helyesen megoldott kis házi feladatért plusz 1 pont jár (a max. 100 ponton felül).