By: Alvaro "Blag" Tejada Galindo
Re-posted from: http://blagrants.blogspot.com/2014/05/my-first-post-on-julia.html
So…what Julia? Just another nice programming language -;)
According to it’s creators…
Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments.
I just started learning it a couple of days ago…and I must say that I really like it…it has a Python like syntax so I felt comfortable from the very start…
Of course…it’s kind of a brand new language, so things are being added and fixed while we speak…but the community is growing and I’m glad to be amongst it’s “early” supporters -:)
What I did right after I read the documentation and watch a couple of videos was to simply port one my old Python applications to Julia…the app was “LCD Numbers” which ask for a number and return it printed like in LCD format…
This is the Python code…
LCD_Numbers.py |
global line1, line2, line3
line1 = "" line2 = "" line3 = ""
zero = {1: ' _ ', 2: '| | ', 3: '|_| '} one = {1: ' ', 2: '| ', 3: '| '} two = {1: ' _ ', 2: ' _| ', 3: '|_ '} three = {1: '_ ', 2: '_| ', 3: '_| '} four = {1: ' ', 2: '|_| ', 3: ' | '} five = {1: ' _ ', 2: '|_ ', 3: ' _| '} six = {1: ' _ ', 2: '|_ ', 3: '|_| '} seven = {1: '_ ', 2: ' | ', 3: ' | '} eight = {1: ' _ ', 2: '|_| ', 3: '|_| '} nine = {1: ' _ ', 2: '|_| ', 3: ' _| '}
num_lines = {0: zero, 1: one, 2: two, 3: three, 4: four, 5: five, 6: six, 7: seven, 8: eight, 9: nine}
def Lines(number): global line1, line2, line3 line1 += number.get(1, 0) line2 += number.get(2, 0) line3 += number.get(3, 0)
number = str(input("\nEnter a number: ")) length = len(number) for i in range(0, length): Lines(num_lines.get(int(number[i:i+1]), 0))
print ("\n") print line1 print line2 print line3 print ("\n")
|
And this is in turn…the Julia version of it…
LCD_Numbers.jl |
zero = [1=> " _ ", 2=> "| | ", 3=> "|_| "] one = [1=> " ", 2=> "| ", 3=> "| "] two = [1=> " _ ", 2=> " _| ", 3=> "|_ "] three = [1=> "_ ", 2=> "_| ", 3=> "_| "] four = [1=> " ", 2=> "|_| ", 3=> " | "] five = [1=> " _ ", 2=> "|_ ", 3=> " _| "] six = [1=> " _ ", 2=> "|_ ", 3=> "|_| "] seven = [1=> "_ ", 2=> " | ", 3=> " | "] eight = [1=> " _ ", 2=> "|_| ", 3=> "|_| "] nine = [1=> " _ ", 2=> "|_| ", 3=> " _| "]
num_lines = [0=> zero, 1=> one, 2=> two, 3=> three, 4=> four, 5=> five, 6=> six, 7=> seven, 8=> eight, 9=> nine]
line = ""; line1 = ""; line2 = ""; line3 = ""
function Lines(number, line1, line2, line3) line1 *= number[1] line2 *= number[2] line3 *= number[3] line1, line2, line3 end
println("Enter a number: "); number = chomp(readline(STDIN)) len = length(number) for i in [1:len] line = Lines(num_lines[parseint(string(number[i]))],line1,line2,line3) line1 = line[1]; line2 = line[2]; line3 = line[3] end
println(line1) println(line2) println(line3 * "\n")
|
As you can see…the code looks somehow similar…but of course…I got rid of those ugly global variables…and used some of the neat Julia features, like multiple value return and variable definition on one line… If you want to see the output…here it is…
Of course…this is just a test…things are going to become interesting when I port some R code into Julia and run some speed comparisons -;)
Greetings,
Blag.
Development Culture.
Related