프로그래밍/Lua 20

대화형 모드의 진법(radix) 변환 예제 with Lua

다음은 대화형 모드(interactive mode)에서 진법 변환(radix conversion)하는 Lua 소스 코드이다. 메뉴는 주메뉴 Command: (S)et radix, (A)bout, (Q)uit or E(x)it 와 부메뉴 SubCommand: 'main()' to goto Main menu, 'exit()' or 'quit()' to exit 로 구성되어 있으며, 진법 변환의 핵심은 Lua 의 빌트인 함수 tonumber(string, radix)와 소스 코드에 자체 작성된 함수 itoa(number, radix)의 사용이다. val = tonumber(s, srcRdx) ret = itoa(val, destRdx) 지원되는 진법은 2진법에서 36진법 까지이다. -- Filename: co..

프로그래밍/Lua 2008.03.28

황금비율(golden ratio) 구하기 with Lua

다음은 이차방정식 x^2 - x - 1 = 0 의 양의 근 즉 황금비율(golden ratio)을 구하는 Lua 애플리케이션 소스이다. 황금비율을 구하는 비례방정식은 1 : x = x : (x+1) 이며, 이를 이차방정식으로 표현한 것이 x^2 - x - 1 = 0 이다. See: http://en.wikipedia.org/wiki/Golden_ratio -- Filename: testGoldenRatio.lua -- 황금률(즉, 이차방정식 x^2 - x - 1 = 0 의 양의 근)을 계산한다. -- -- Execute: lua testGoldenRatio.lua -- -- Date 24-March-2008 -- Author PH Kim [ pkim (AT) scripts.pe.kr ] function ..

프로그래밍/Lua 2008.03.24

현재 시각 알아내기 for Lua

현재 시각을 컨솔에 보여주는 간단한 애플리케이션의 Lua 언어 소스 코드이다. UTC란 1970년 1월 1일 0시 0분 0초를 기준으로 하여 경과된 초 단위의 총 시간을 의미한다. * UTC(Universal Time Coordinated, 협정세계시, 協定世界時) --[[ Filename: testCTime.lua Execute: lua testCTime.lua --]] -- See http://www.lua.org/manual/5.1/manual.html#pdf-os.clock weekNames = { "일", "월", "화", "수", "목", "금", "토" } cNow = os.date("*t") -- 1970년 1월 1일 0시 0분 0초부터 시작하여 현재까지의 초 print("UTC: " ....

프로그래밍/Lua 2008.03.24

조립제법(Horner의 방법) 예제 for Lua

다항식 p(x) 를 1차 다항식 x - a 로 나눌 때의 몫과 나머지를 구하는 조립제법을 Java 언어로 구현해 보았다. 조립제법은 일명 Horner의 방법이라고도 불리우는데, 이는 x = a 에서 다항식 p(x)의 값 p(a)을 계산하는 가장 빠른 알고리즘이기도 하다. p(x) = (x - a)q(x) + r 여기서 r은 나머지이며 r = p(a) 이다. 또 q(x)는 몫이다. [참고] * 온라인으로 조립제법 표 만들기 손으로 계산하는 조립제법 표 * 온라인으로 구하는 다항식의 도함수: 조립제법을 이용한 다항식의 도함수 아래의 소스파일은 Ruby용 소스파일 testSyntheticDivision.rb 를 Lua용으로 수정한 것이다. --[[ Filename: testSyntheticDivision.lu..

프로그래밍/Lua 2008.03.14

80컬럼 컨솔에 19단표 출력하기 예제 for Lua

다음은 Ruby용 소스파일 testForFor.rb를 Lua용으로 수정한 것이다. Lua 언어에서의 print 문은 Python 언어의 print 문은 처럼 개행(newline) 문자를 포함한다. Ruby 언어의에서 쓰이는 조건 분기 구문 if 조건식1 then 블럭1 elsif 조건식2 then 블럭2 elsif 조건식3 then 블럭3 else 블럭4 end 에 해딩하는 Lua 언어의 구문은 if 조건식1 then 블럭1 elseif 조건식2 then 블럭2 elseif 조건식3 then 블럭3 else 블럭4 end 이다. 또 다음은 Python, Ruby, Groovy, Lua 언어의 for 반복 구문의 비교이다. Python 언어의 for 반복 구문 for n in range(1, 10, 1):..

프로그래밍/Lua 2008.03.03

(최대공약수 구하기) while... 반복문 예제 for Lua

소스 파일명: testWhile.lua --[[ Filename: testWhile.lua Purpose: Example using the while loop syntax while .... Execute: lua testWhile.lua -200 300 --]] -- 사용법 표시 function printUsage() print "Using: lua testWhile.lua [integer1] [integer2]" print "This finds the greatest common divisor of the given two integers." end if #arg ~= 2 then printUsage() os.exit(1) end -- 명령행 인자의 두 스트링을 가져와서 -- 정수 타입으로 변환하여 ..

프로그래밍/Lua 2008.02.21

if...else... 조건문 사용 예제 for Lua

소스 파일명: testIf.lua --[[ Filename: testIf.lua Purpose: Example using the conditional control structure syntax if .... else ... Execute: lua testIf.lua [number] --]] -- 사용법을 보여주는 함수 function printUsing() print("Using: ruby testIf.rb [number]") print("This determines whether the number is positive or not.") end -- 명령행 인자의 개수가 1이 아니면 사용법을 보여준다. if #arg ~= 1 then printUsing() os.exit(1) end -- 명령행 인자..

프로그래밍/Lua 2008.02.19

명령행 인자 처리 예제 for Lua

Lua 언어에서 명령행 인자는 변수 arg로 처리한다. 즉, arg는 Lua 언어에서 하나의 (명령행 인자 처리 변수) 예약어인 셈이다. 이 변수는 명령행 실행시 옵션으로 입력된 인자들을 스트링 값으로 모아둔 리스트 타입의 변수이다. 이 변수가 가리키는 리스트에 속한 아이템의 개수를 구하기 위해서는 전위 단항연산자 #을 선두에 붙이면 된다. 즉 #arg가 리스트에 속한 (아이템의 개수)-1이다. 그런데 Lua 언어에서는 Python 언어에서 처럼, 명령행 실행시 실행될 소스파일명의 인덱스 번호가 0번이므로, 아래의 소스 코드에서 우리가 처리할 명령행 인자들은 1번, 2번, 3번, .... 의 인텍스 번호를 갖는다. (참고로, Lua 언어의 신택스는 테이블 타입의 자료 처리를 기반으로 하고 있으며, 리스트..

프로그래밍/Lua 2008.02.19

구구단 출력 예제 for Lua

lua 언어의 for 반복문 양식은 for varName = startValue, endValue, stepValue do block end 또는 for varName = startValue, endValue do block end 이다. 또 문자열이나 자료의 붙이기(concatenation) 연산자는 .. 이다. (즉 두 개의 점) ' 소스 파일명: for_test.lua ------------------------------[소스 시작] local function printDan(dan) for i = 1, 9 do print( dan .. " x " .. i .. " = " .. (dan*i) ) end end printDan(2) ------------------------------[소스 끝] ..

프로그래밍/Lua 2008.02.13