}vg0aa@@*45,eQ.:?}0AaG0`NdE`;:?}1;bI%10sB%nM2np`*`%.*#NaBna!*+#@~%@0nG\]:.;:;bI~0-NdEnMtSsP" "sP.tSsP
STDIN에 입력, STDOUT에 공백으로 구분 된 출력.
이것은 isaacg의 답변과 동일한 방법을 사용합니다.
"가독성"을 위해 줄 바꿈이있는 주석 처리 된 버전 :
}vg0aa // get input, take the first char
@@*45,eQ. // check if it's a 45 (ASCII for -) (we also discard the 0 here)
// this is an if-else
: // (if)
?}0AaG // remove first char of input (the negative sign)
0`NdE` // store a -1 in variable e, set active vars to beg
;
: // (else)
?}1 // store a 1 in variable e, set active vars to beg
;bI // active variables are now guaranteed to be beg
%10sB // parse input as number (from-base with base 10)
%nM // multiply by either 1 or -1, as stored in var e earlier
2np`*` // raise to the power of 2 (and discard the 2)
%. // now we have the original number in b, its square in d, and
// active vars are bdg
*#NaBna!*+# // add abs(input number) to the square (without modifying the
// input variable, by juggling around permavars)
@~%@0nG\] // active vars are now abcfh, and we have (0>n) in c (where n is
// the input number)
:.;:;bI // if n is negative, swap d (n^2) and g (n^2+n)
~0-NdEnM // multiply d by -1 (d is n^2 if n is positive, n^2+n otherwise)
tSsP // print d
" "sP // print a space
.tSsP // print g
PPCG의 최초 눈사람 솔루션에 대한 해설 : 언어를 가능한 한 혼란스럽게 만드는 디자인 목표를 달성했다고 생각합니다.
이것은 실제로 훨씬 짧았을 수도 있지만 바보입니다. 문자열-> 숫자 구문 분석에 음수를 구현하는 것을 잊었습니다. 따라서 -
첫 번째 문자 가 있는지 수동으로 확인 하고 필요한 경우 제거해야했습니다.