Neo Ground

Python Code Spaghettifier 본문

기타

Python Code Spaghettifier

Neo Ground 2024. 2. 9. 14:28
N = 1
exec(''.join(map(chr,[115,61,111,112,101,110,40,48,41,46,114,101,97,100,40,41,10,102,111,114,32,95,32,105,110,39,20984,39,42,78,58,115,61,34,101,120,101,99,40,39,39,46,106,111,105,110,40,109,97,112,40,99,104,114,44,91,34,43,39,44,39,46,106,111,105,110,40,109,97,112,40,115,116,114,44,109,97,112,40,111,114,100,44,115,41,41,41,43,34,93,41,41,41,34,10,112,114,105,110,116,40,115,41,10])))

스파게티 코드를 생성하는 파이썬 코드를 만들었다.

위 코드를 실행한 뒤 터미널에 spaghettify 할 코드를 입력 후 EOF 신호를 주면 (Windows는 Ctrl+Z, Linux는 Ctrl+D)

Spaghettify 된 코드가 출력된다.

 

$N$의 값을 변경함으로써 더욱 복잡하게 만들 수 있으며 코드의 길이는 지수적으로 증가한다.

 

$N$번 spaghettify 후의 코드의 길이를 $L(N)$이라 하면 그 길이는

$L(N+1) = 3*L(N)+36\ (N\geq 1)$

의 점화식을 가진다.

 

다음은 백준의 1000번의 실행 코드를 spaghettify한 결과이다.

# 기존 코드
print(eval(input().replace(' ','+')))

# 출력 코드
exec(''.join(map(chr,[112,114,105,110,116,40,101,118,97,108,40,105,110,112,117,116,40,41,46,114,101,112,108,97,99,101,40,39,32,39,44,39,43,39,41,41,41,10])))​