Osaka Erlang Meeting #1

Posted by stoyan

03-Jun-2007, Toyonaka, Hotarugaike

Osaka Erlang Meeting #1

RTFM

Most of the time was just reading the japanese translation of the “Programming Erlang” book. 53 pages full of japanese ;) Pretty difficult task. All people divided in 2 groups – have already started erlang at least once, still not. The beginners – needed to read all pages as fast as possible and merge with the first group – also difficult task ;)

fun function_name/args_num
%% for example
%% fun fizzbuzz/1. <=> fun(X)-> fizzbuzz(X) end. 

interesting: soap – ajax – comet relation :)

roman2integer or integer2roman

In the last 30-40 minutes we’ve got an interesting task to code – convert old roman to/from integer. I decided to go with the integer to roman part of the problem. There was not enough time on the meeting, so I continued in the nearest Starbucks, and in home…Hm, Erlang is catchy ;) OK. so about the initial approximation of the solution:

%% convert integer to old roman
%% usage:
%%   convert:to_roma(555) -> "DLV" 
%%   convert:to_roma(999) -> "DCCCCLXXXXVIIII" 
-module(convert).
-compile(export_all).

-define(R,[1000,500,100,50,10,5,1]).

i2r(1)    -> "I";
i2r(5)    -> "V";
i2r(10)   -> "X";
i2r(50)   -> "L";
i2r(100)  -> "C";
i2r(500)  -> "D";
i2r(1000) -> "M".

repeat(Times,X) ->
  lists:duplicate(Times,i2r(X)).

to_roma(X) ->
  lists:flatten(to_roma(X,?R)).
to_roma(_,[]) -> [];
to_roma(X,[H|T]) ->
  {Div, Rem} = {X div H, X rem H},
  if
    Div > 0 ->
      [repeat(Div,H)|to_roma(Rem,T)];
    true ->
      to_roma(Rem,T)
  end.

Still don’t like the first part. Need more efficient i2r() implementation. All advices, suggestions for improving are welcome.

An Erlang Course Exercises

Posted by stoyan

Like I mentioned in one of my Jaiku posts it will be good to have a page with answers for the Erlang Course Exercises . Still nobody around with such a page, so I started to put my answers in the Mercurial repository . Some of the exercises seems useful even for everyday use. I’m pretty happy with my lists-related functions library . Until now I finished with the “Simple sequential programs” and “Simple recursive programs” sections. Stay tuned…