RSS RSS feed | Atom Atom feed

Scala Code Kata Roman Numerals

Babysteps Scala

There's a Scala User Group in Gothenburg that had several meetings during this summer.  In one of the meetings the group solved a Kata named KataRomanNumerals (A Kata is a small problem that you do over and over again to learn)

The KataRomanNumerals says you should write a function to convert from normal numbers to Roman Numerals: e.g.
     1 --> I
     10 --> X
     7 --> VII

Unfortunately I could not attend at this meeting, so I had to do it on my own during a few summer nights when my family finally was asleep :-).

Here's my solution:

  object Program extends Application {

    class RomanInt(number: Int) {

      def toRomanString() = {
        val ones = List("", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX");
        val tens = List("", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC");
        val hundreds = List("", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM");
        val thousands = List("", "M", "MM", "MMM");

        thousands(part(1000)) + hundreds(part(100)) + tens(part(10)) + ones(part(1))
      }

      def part(digit: Int) = {
        number % (digit * 10) / digit
      }

    }

    implicit def Int2RomanInt(number: Int) = new RomanInt(number)

    println(154.toRomanString()) // prints 'CLVIII'

  }

Here's the code with better formatting.

Please comment and correct if I didn't write idomatic Scala or if you have suggestions for improvements.

/Hans

Emo-lines

How to get a team to talk about how they feel during a retrospective

If you coach a scrum team but you're not around to observe them during the sprint, how do you know how they felt about it?

Use Emo-lines

Läs mer...

Parprogrammering med Niclas Nilsson

Ett bord för parprogrammering och ett seminarium på Öredev

Niclas Nillson, Factor10, har just publicerat ritningar för sitt parprogrammeringsbord.

Läs mer...

Tags :

ScrumMaster på svenska?

Vad borde ScrumMaster heta på svenska, och varför heter det ScrumMaster och inte Scrum Master på engelska?

Vad borde ScrumMaster heta på svenska, och varför heter det ScrumMaster och inte Scrum Master på engelska?

Enligt en anekdot jag hört så var ursprungsnamnet Scrum Slave, men Ken Schwaber och Jeff Sutherland insåg tidigt att det inte skulle vara så säljande. :-)

Läs mer...

Lean för mjukvara på 10 minuter

Från Concept to Cash

En kort sammanfattning av grunderna i Lean på 10 minuter. Concept To Cash, Cykeltid optimering och köer och flaskhalsar.

Lean handlar om att bli snabb genom att sluta göra onödiga saker.

Lean värdesätter det som levereras och inte det som påbörjas. Att få saker ur händerna istället för att jobba hårt.

Läs mer...