Skip to content

Instantly share code, notes, and snippets.

@neodevelop
Created March 15, 2012 18:55
Show Gist options
  • Save neodevelop/2046018 to your computer and use it in GitHub Desktop.
Save neodevelop/2046018 to your computer and use it in GitHub Desktop.
Numbers to LCD
class NumberToLCD{
def ledsDisplaySmall = ["_","|","|","_","|","|","_"]
def ledsDisplayBig = [" ","-"," ","|"," ","|"," ","-"," ","|"," ","|"," ","-"," "]
def displaysBig = [
[2,4,6,10,12,14], // 0
[6,12], // 1
[2,6,8,10,14], // 2
[2,6,8,12,14], // 3
[4,6,8,5,12], // 4
[2,4,8,12,14], // 5
[2,4,8,10,12,14], // 6
[2,6,12], // 7
[2,4,6,8,10,12,14], // 8
[2,4,6,8,12,14] // 9
]
def displaysSmall = [
[1,1,1,0,1,1,1], // 0
[0,0,1,0,1,0,0], // 1
[1,1,1,1,1,1,1], // 2
[1,1,1,1,1,1,1], // 3
[1,1,1,1,1,1,1], // 4
[1,1,1,1,1,1,1], // 5
[1,1,1,1,1,1,1], // 6
[1,1,1,1,1,1,1], // 7
[1,1,1,1,1,1,1], // 8
[1,1,1,1,1,1,1], // 9
]
String transformBig(Integer number){
def display = ""
def thisDisplay = displaysBig[number]
for(Integer i=0;i<ledsDisplayBig.size();i++){
if(i%3 == 0)
display += "\n"
if(thisDisplay.contains(i+1))
display += ledsDisplayBig[i]
else
display += " "
}
display
}
String transformSmall(Integer number){
def display = ""
def thisDisplay = displaysSmall[number]
def incrementador = 0
for(Integer i = 0; i<9;i++){
if(i%3 == 0)
display+="\n"
if(thisDisplay[i] && i<1){
display+=" _ \n"
incrementador++;
}
if(thisDisplay[i] && i>=1){
display += ledsDisplaySmall[incrementador]
incrementador++
}else{
display += " "
}
}
display
}
}
class NumberToLCDTestsCases extends GroovyTestCase{
def numberToLCD
void setUp() {
numberToLCD = new NumberToLCD()
}
void testNumberEightBig(){
def eight = "\n - \n| |\n - \n| |\n - "
assert numberToLCD.transformBig(8) == eight
0.upto(9){ n ->
println numberToLCD.transformBig(n)
println ""
}
}
void testNumberEightSmall(){
def eight = "\n _ \n|_|\n|_|"
assert numberToLCD.transformSmall(8) == eight
0.upto(9){ n ->
println numberToLCD.transformSmall(n)
println ""
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment