참고 :이 모든 기술은 알파벳 문자열을 variable에 할당합니다 a
.
JavaScript에서 이것을 달성하는 가장 짧은 방법은 실제로 99 % 확신합니다.
a="abcdefghijklmnopqrstuvwxyz" // 30 bytes
그러나 몇 가지 다른 흥미로운 방법이 있습니다. 문자열 압축을 사용할 수 있습니다.
a=btoa`i·?yø!?9%?z)ª»-ºü1`+'yz' // 31 bytes; each ? represents an unprintable
에서 압축 된 문자열을 얻을 수 있습니다 atob`abcdefghijklmnopqrstuvwx`
. 는 'yz'
결과는 27 바이트있을 때, 전체 문자열을 압축하는 경우 때문에, 그것은으로 판명됩니다 수동으로 추가해야합니다 abcdefghijklmnopqrstuvwxyw==
.
프로그래밍 방식으로 수행하는 가장 짧은 방법은 제안한 방법이라고 생각합니다.
for(i=97,a='';i<123;)a+=String.fromCharCode(i++) // 48 bytes
원하는 경우 ES6 기능 ( 템플릿 문자열``
, 스프레드 연산자...
)으로 수행 할 수 있습니다.
a=[...Array(26)].map(_=>String.fromCharCode(i++),i=97).join`` // 61 bytes
a=[...Array(26)].map((_,i)=>String.fromCharCode(i+97)).join`` // also 61 bytes
a=[...Array(i=26)].map(_=>String.fromCharCode(++i+70)).join`` // again, 61 bytes
다음 대신 변수로 더 잘 수행 할 수 있습니다 .join``
.
[...Array(26)].map(_=>a+=String.fromCharCode(i++),i=97,a='') // all 60 bytes
[...Array(26)].map((_,i)=>a+=String.fromCharCode(i+97),a='')
[...Array(i=26)].map(_=>a+=String.fromCharCode(++i+70),a='')
또는 배열 이해력 이있는 ES7 은 다른 바이트보다 짧습니다.
a=[for(_ of Array(i=26))String.fromCharCode(++i+70)].join`` // 59 bytes
미리 변수를 작성하면 또 다른 바이트가 저장됩니다.
a='',[for(_ of Array(i=26))a+=String.fromCharCode(++i+70)] // 58 bytes
또한 String.fromCharCode
여러 인수를 허용하고 자동으로 인수에 참여합니다. 따라서 각 ES6 버전을 57 바이트로 축소 할 수 있습니다.
a=String.fromCharCode(...[...Array(26)].map(_=>i++,i=97)) // all 57 bytes
a=String.fromCharCode(...[...Array(26)].map((_,i)=>i+97))
a=String.fromCharCode(...[...Array(i=26)].map(_=>++i+70))
그리고 ES7은 55로 줄었습니다.
a=String.fromCharCode(...[for(_ of Array(i=26))++i+70]) // 55 bytes
골프 연습장에 대한 자세한 내용은 골프장을 확인하십시오 이 팁을 참조하십시오 . ES7의 어레이 이해력 에 대한 정보도 있습니다 .
편집하다: edc65가 지적했듯이, 대부분은 다음 i.toString(36)
대신에 더 짧아집니다 String.fromCharCode(i)
.
for(i=9,a='';++i<36;)a+=i.toString(36) // 38 bytes
a=[...Array(26)].map(_=>(++i).toString(36),i=9).join`` // 54 bytes
[...Array(26)].map(_=>a+=(++i).toString(36),i=9,a='') // 53 bytes
i=9,a=[for(_ of Array(26))(++i).toString(36)].join`` // 52 bytes
i=9,a='',[for(_ of Array(26))a+=(++i).toString(36)] // 51 bytes
나는 이것이 함수 반환 값으로 호출 될 수있는 가장 짧은 것이라고 생각합니다.
eval("for(i=9,a='';++i<36;)a+=i.toString(36)") // 46 bytes
함수에서 수동으로 반환하는 것보다 3 바이트 짧습니다.
x=>eval("for(i=9,a='';++i<36;)a+=i.toString(36)") // 49 bytes
x=>{for(i=9,a='';++i<36;)a+=i.toString(36);return a} // 52 bytes
물론, x=>"abcdefghijklmnopqrstuvwxyz"
다른 모든 것을 여전히 능가합니다.