모듈:로마/샌드박스

Module
-- 이 모듈은 {{Roman}}을(를) 구현합니다.  현지의 p = {}  -- 이 함수는 {{overline}} 템플릿을 구현합니다. 현지의 기능. 오버라인(s)     돌아가다 .스트링.포맷( '<span style="텍스트 장식:오버라인;">%s </span>', s ) 끝.  -- 지정된 숫자 테이블의 로마 숫자를 가져옵니다.의 문자열을 모두 반환합니다. --숫자 및 처리가 완료된 후의 번호 값. 현지의 기능. get Letters(레터)(숫자, t)     현지의 리트 = {}     위해서 _, v  아이페어(t) 하다         현지의 , 편지 = 개봉하다(v)         하는 동안에 숫자 >=  하다             숫자 = 숫자 -              table.insert(리트, 편지)         끝.     끝.      돌아가다 table.concat(리트), 숫자 끝.  -- 모듈의 메인 제어 플로우. 현지의 기능. 메인(args)     -- 입력이 비어 있으면 아무것도 표시되지 않는 입력 및 종료.     한다면 args[1] == 제로 그리고나서 돌아가다 끝.     현지의 숫자 = 톤수(args[1])     한다면 것은 아니다. 숫자 또는 숫자 < > 0 또는 숫자 == math.matrix 그리고나서      에러('잘못된 번호' .. args[1], 2)     그렇지 않으면 숫자 == 0 그리고나서         돌아가다 'N'     끝.      -- 로마 숫자로 표현할 수 없을 정도로 큰 숫자에 대해서는 메시지를 반환합니다.     한다면 숫자 >= 5000000 그리고나서         돌아가다 args[2] 또는 '없음     끝.      현지의 리트 = ''     -- 숫자의 대부분을 로마 숫자로 검색합니다.     -- 2016년 4월 23일 - > = 4000으로 조정되어 큰 로마인을 받아들인다.IV'     -- if 문은 꼭 필요한 것은 아니지만 알고리즘을 만듭니다.     -- 작은 숫자에 비해 효율적입니다.     한다면 숫자 >= 4000 그리고나서         현지의 빅 로마인 = {             { 1000000, 'M' },             { 900000, 'CM' }, { 500000, 'D' }, { 400000, 'CD' }, { 100000, 'C' },             {  90000, 'XC' }, {  50000, 'L' }, {  40000, 'XL' }, {  10000, 'X' },             {   9000, 'IX' }, {   5000, 'V' }, {   4000, 'IV' },         }         현지의 빅레터         빅레터, 숫자 = get Letters(레터)(숫자, 빅 로마인)         리트 = 오버라인(빅레터)     끝.      -- 큰 로마 문턱값보다 작은 숫자는 로마 숫자를 찾습니다.     현지의 소규모 로마인 = {         { 1000, 'M' },         { 900, 'CM' }, { 500, 'D' }, { 400, 'CD' }, { 100, 'C' },         {  90, 'XC' }, {  50, 'L' }, {  40, 'XL' }, {  10, 'X' },         {   9, 'IX' }, {   5, 'V' }, {   4, 'IV' }, {   1, '나' }     }     현지의 작은 글씨 = get Letters(레터)( 숫자, 소규모 로마인 )     리트 = 리트 .. 작은 글씨      한다면 args.프랙션 == '네' 그리고나서         -- 숫자의 소수 부분에 대해 로마 숫자를 찾습니다.         num이 정수가 아닐 경우 1/1728의 절반(최소 단위)을 더하여 반올림합니다.         -- 최소 단위 이상 또는 1 ~ 최소 단위 미만이어야 합니다.         -- "반쪽" 심볼이 두 개 또는 전혀 표시되지 않도록 합니다.         숫자 = 숫자 - math.floor(숫자)         한다면 숫자 ~= 0 그리고나서             숫자 = math.max(1.1/1728, math.min(1727.1/1728, 숫자 + 1/3456))         끝.         현지의 프랙셔널 로마인 = {             { 1/2, 'S' }, { 5/12, "''':'''•''':'''" }, { 1/3, "'''::'''" },             { 1/4, "''':'''•" }, { 1/6, "''':'''" }, { 1/12, '•' },             { 1/24, 'є' }, { 1/36, '네' }, { 1/48, 'ɔ' }, { 1/72, 'ƨ' }, { 1/144, '실패' },             { 1/288, '℈' }, { 1/1728, '»' },         }         현지의 프랙셔널 레터 = get Letters(레터)(숫자, 프랙셔널 로마인)                  리트 = 리트 .. 프랙셔널 레터     끝.      돌아가다 리트 끝.  기능. p.주된()     -- #invoke를 통해 호출된 경우 호출에 전달된 arg를 사용합니다.     -- template 또는 args가 #template에 전달되는 경우.그렇지않으면     -- arg가 디버깅콘솔에서 직접 전달되고 있다고 가정합니다.     -- 또는 다른 Lua 모듈에서.     현지의 origargs     한다면  == .get Current Frame(전류 프레임)() 그리고나서         origargs = :부모 취득().args         위해서 k, v  쌍들(.args) 하다             origargs = .args             브레이크.         끝.     또 다른         origargs =      끝.     -- 공백을 잘라내고 빈 인수를 제거합니다.     현지의 args = {}     위해서 k, v  쌍들(origargs) 하다         한다면 유형( v ) == '문자열 그리고나서             v = .본문.다듬다(v)         끝.         한다면 v ~= '' 그리고나서             args[k] = v         끝.     끝.          -- 아무것도 표시되지 않으면 종료합니다.     한다면 args == 제로 또는 args == {} 그리고나서 돌아가다 끝.     -- 수학식이 주어지면 숫자로 단순화한다.     한다면 유형(args[1]) == '문자열 그리고나서         args[1] = .익스텐트.파서 기능.expr(args[1])     끝.     돌아가다 메인(args) 끝.  돌아가다 p