초등학교 때 배우는 두 정수의 곱셈 계산표를 만들어 주는 Julia 소스이다.

Python 언어에서는 // 가 정수 나눗셈 연산자이지만, Julia  언어에서는 // 가 분수를 표현할 때 쓰는 분자와 분모의 구분자이다. Julia 언어에서는 div(피제수, 제수) 가 정수 나눗셈에 쓰이는 함수이다. 즉

        y = int64(floor(x / 10))
        y = div(x, 10)

는 둘 다 정수 x 를 정수 10 으로 나눈 몫을 변수 y 에 저장하는 Julia 구문이다.

 

## Filename: makeMultTable.jl
##
##     Print a multiplication table.
##
##     Execute: julia makeMultTable.jl 230 5100
##
##      Date:  2013. 3. 5.
##    Author:  pkim __AT__ scripts ((DOT)) pe ((DOT)) kr


function printUsing()
    println("Using: julia makeMultTable.jl [number1] [number2]")
    println("Print a multiplication table for the given two integers.")
end

function printMultTable(x, y)
    nx = x
    if nx < 0
        nx = -nx
    end
    ny = y
    if ny < 0
        ny = -ny
    end
    ntail1 = 0
    ntail2 = 0
    while nx % 10 == 0
        # nx = int64(floor(nx / 10))
        nx = div(nx, 10)
        ntail1 = ntail1 + 1
    end
    while ny % 10 == 0
        # ny = int64(floor(ny / 10))
        ny = div(ny, 10)
        ntail2 = ntail2 + 1
    end
    z = nx * ny
    strZ = "$z"
    strX = "$nx"
    strY = "$ny"
    n = length(strY)
    zeros  = "0000000000000000000000000000000000000000"
    whites = "                                        "
    bars   = "----------------------------------------"
    loffset = "       "
    line4 = loffset * strZ
    line1 = loffset * whites[1: length(strZ) - length(strX)] * strX
    line2 = "   x ) " *  whites[1: length(strZ) - length(strY)] * strY
    line3 = "     --" *  bars[1: length(strZ)]
    println(line1 * zeros[1: ntail1])
    println(line2 * zeros[1: ntail2])
    println(line3)
    # println("strY = $strY")
    if length(strY) > 1
        for i = 0:length(strY)-1
            y1 = int64(strY[length(strY) - i : length(strY) - i])
            if y1 != 0
                strT = string(nx * y1)
                println(loffset * whites[1: length(strZ) - length(strT) - i] * strT)
            end
        end
        println(line3)
    end
    println(line4 * zeros[1: ntail1] * zeros[1: ntail2])
end


if length(ARGS) >= 2
    x = int64(ARGS[1])
    y = int64(ARGS[2])
    println()
    printMultTable(x, y)
else
    printUsing()
end



실행> julia makeMultTable.jl 230 5100
결과>

         230
   x )   5100
     ------
         23
       115
     ------
       1173000

 

Posted by Scripter
,