자바 스크립트, 62 61 37 바이트
도움을 주신 @ Doᴡɴɢᴏᴀᴛ에 감사드립니다!
원본 [37 바이트] :
f=_=>'f='+'_'.repeat((10+f).length)+f
자식 [74 바이트] :
f=______________________________________=>'f='+'_'.repeat((10+f).length)+f
손자 [148 바이트] :
f=________________________________________________________________________________________________________________=>'f='+'_'.repeat((10+f).length)+f
대체 (콘솔에 인쇄 및 전체 프로그램) :
원본 [61 바이트] :
f=_=>console.log(`f=${'_'.repeat((0+f).length+5)+f};f()`);f()
자식 [122 바이트] :
f=______________________________________________________________=>console.log(`f=${'_'.repeat((0+f).length+5)+f};f()`);f()
손자 [244 바이트] :
f=________________________________________________________________________________________________________________________________________________________________________________________=>console.log(`f=${'_'.repeat((0+f).length+5)+f};f()`);f()
작동 원리!
1. f=_=>
함수 f를 다음과 같이 정의하십시오.console.log(...)
2. ;f()
기능을 실행합니다. f.
3. (기능 f)
노트
console.log
필요가 대신 alert
하기 때문에 alert
(내 컴퓨터 / 브라우저 구성에 적어도) 정말 긴 문자열로 잘 작동하지 않는 것
_
의 그들이 F의 문자열 화 (stringification)에 포함되도록하여, 함수 f의 (미사용) 파라미터의 이름에 삽입된다.
console.log
두 번째 솔루션에 대한 첫 번째 솔루션의 주요 개선 사항 (을 제거하는 것 제외 ) : 문자열로 캐스팅하는 10
대신 함수를 추가 0
하면 1 바이트가 길어지고 길이에 1을 더할 필요가 없으므로 바이트가 절약됩니다.