루아, 147 바이트
골프를 더 많이 할 수 없다고 생각하고, 할 수있는 방법을 많이 테스트했으며, 가장 짧은 시간이되었습니다. 더 이상 사용되지 않는 함수 table.foreach(table,function)
가 포함 된 이전 컴파일러를 사용해도 일부 바이트가 제거되지 않습니다.
이 프로그램은 문자열을 인수로 사용하여 공백으로 구분 된 테이블 값의 연결을 인쇄합니다.
t={}for _,i in pairs({8,10,16})do x=tonumber(arg[1],i)x=x and x or 0 t[#t+1]=127>x and 19<x and string.char(x)or nil end print(table.concat(t," "))
언 골프 및 설명
t={} -- Initalise the array containing the chars to print
for _,i in pairs({8,10,16}) -- Iterate over the array {8,10,16}
do
x=tonumber(arg[1],i) -- convert the input in base i to a number in base 10
x=x and x or 0 -- if the input wasn't a number, x is nil
-- use a ternary operator to set x in this case
t[#t+1]=127>x and 19<x -- if x is the bytecode of a printable character
and string.char(x)or nil-- insert this character into t
end
print(table.concat(t," ")) -- concatenate the values in t with " " as separator
-- and print it
왜 변수 세트가 있지만 골프 코드 ( _
for 루프 의 변수) 에서 사용되지 않는지 방황하는 경우 다음과 같은 이유가 있습니다.
for 스타일에서 Lua의 배열을 반복하는 두 가지 방법이 있습니다.
for i=1,#table do --[[code here, use table[i] ]] end
또는 foreach 스타일로 :
for key,value do pairs(table) do --[[code here]] end
{8,10,16}
반복 해야하는 다른 기준이므로 테이블에 포함 된 값이 필요 했습니다. 그러나 다중 반환 기능을 사용하면 실제로 반환 할 기능을 선택할 수 없으며 순서를 따릅니다. 변수를 value
설정 하려면 값을 잡아야합니다 . key
그것이 우리가 더미라고 부르는 것 _
입니다.