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
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
Use Emo-lines
Parprogrammering med Niclas Nilsson
Ett bord för parprogrammering och ett seminarium på Öredev
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. :-)
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. :-)
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.
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.



