-module(nzhf23m2s). -author('hanak@emt.bme.hu'). -date('2020-11-19'). -vsn('$LastChangedDate: 2020-11-19 14:18:54 +0100 (Thu, 19 Nov 2020) $$'). -compile(export_all). %-export([dec2hex/1,d2hfa/1,test/0]). % Részfeladat: % Írjon dec2hex néven olyan függvényt, amely kiszámolja egy decimális számnak % a 0..9 és A..F karakterek füzéreként (sztringként) ábrázolt hexadecimális % alakját. A füzér utolsó karaktere legyen a legkisebb, egyes helyiértékű % számjegy. Ügyeljen a 0 helyes kezelésére! % % -spec dec2hex(D::integer()) -> H::string(). % % A D decimális szám $0-$9 és $A-$F karakterek füzéreként ábrázolt % % hexadecimális megfelelője H. % Teljes feladat: % Írjon d2hfa néven olyan függvényt a dec2hex/1 függvény felhasználásával, % amely a % -type fa(Elem) :: e | {n, Elem, fa(Elem), fa(Elem)} % típusspecifikációval megadott, fa(integer()) típusú bemenő argumentumát % fa(string()) típusúvá alakítja úgy, hogy minden 'n' csomópontban található % egész számot lecserél a füzérként ábrázolt hexadecimális megfelelőjére. % További segédfüggvényeket ne definiáljon! % % -spec d2hfa(Fa0::fa(integer())) -> Fa::fa(string()). % % A Fa0 decimális számokat tartalmazó fa hexadecimális számokat % % tartalmazó megfelelője Fa. % Részfeladat: -spec dec2hex(D::integer()) -> H::string(). dec2hex(_D) -> "". % Teljes feladat -type fa(Elem) :: e | {n, Elem, fa(Elem), fa(Elem)}. -spec d2hfa(Fa0::fa(integer())) -> Fa::fa(string()). d2hfa(_Fa) -> e. %% ---------------------------------------------------------------------------- test() -> { dec2hex(0) =:= % "0", "", dec2hex(7) =:= % "7", "", dec2hex(14) =:= % "E", "", dec2hex(75) =:= % "4B", "", d2hfa(e) =:= e, d2hfa({n, 14, e, e}) =:= % {n, "E", e, e}, e, d2hfa({n, 75, {n,200,e,e}, {n,35,e,e}}) =:= % {n, "4B", {n,"C8",e,e}, {n,"23",e,e}}, e, vege }.