루아 5.3, 108,097,107,033,101 바이트, 득점 (28) (27)
load(([[REPLACE]]):gsub([[[<>]-{()}]],[[%1]]):gsub([[...]],([[]]).char))()
여기서는 REPLACE
길이가 108097107033034자인 자유 문자로 대체됩니다. 문자열 {}
은 특정 키 위치를 지정하여 데이터를 인코딩합니다 . 첫 번째 gsub
는 {}
빈 캡처 그룹을 통해 s 의 인덱스로 문자열을 대체합니다 ()
. 두 번째 gsub
는이 결과 문자열을 3 자리 블록으로 나누고 각 블록을 ASCII 표현으로 바꿉니다.
Lua에서 원시 문자열에 대한 구문은 (기본적으로) [[string contents]]
점수를 줄이는 데 매우 유용합니다.
내가 생성하는 (이스케이프되지 않은) 문자열은 print"Surprise!\nHappy Birthday, Brain-Flak!"
입니다. 각 문자를 3 자리 10 진수 ASCII 코드로 바꾸면 다음과 같습니다 112114105110116034083117114112114105115101033092110072097112112121032066105114116104100097121044032066114097105110045070108097107033034
. 내가 사용하는 코드는 초기 0으로 시작하지 않는 증가하는 자연수 (최소 2 분리)의 시퀀스 만 생성 할 수 있습니다. 따라서이 숫자는로 나뉩니다 11, 2114, 105110, 1160340, 83117114, 112114105, 1151010330, 9211007209, 71121121210, 320661051141, 1610410009712, 10440320661140, 97105110045070, 108097107033034
. (이 마지막 숫자는 REPLACE
패턴의 마지막 일치 }
가 Lua 표시가 1에서 시작한다는 점을 지적하면서 final의 색인을 제공 하므로 값 의 길이입니다 . 마지막 숫자가 홀수이면 패턴과 문자열은 어렵지는 않지만 약간 수정해야합니다.)
이 프로그램은 너무 커서 (실제로는 64 비트 컴퓨터에서 작동 할 수 있지만 내 하드 드라이브에는 맞지 않기 때문에)이 프로그램을 실제로 생성하고 실행하지 않았습니다.
개념 증명으로 3
다음과 같은 원리를 사용하여 인쇄하는 작은 프로그램이 있습니다 .
p=print
load(([[<<><><><>{}<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>{}<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>{}><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>{}]]):gsub([[[<>]-{()}]],[[%1]]):gsub([[...]],([[]]).char))()
split을 통해 p"3"
숫자 112034051034
를 통해 코드 문자열 을 생성합니다 11, 203, 405, 1034
.