점의 현재 좌표를 두 칸 x,y에 저장해요. 시작은(2,5)입니다. 명령 x←y를 실행한 뒤 y←x를 실행해요. 각 명령은 실행 당시의 오른쪽 값을 왼쪽 칸에 저장해요. 이 두 명령으로 직선 y=x에 대한 대칭점(5,2)을 얻는가?
교재의 y=x 대칭이동에서는 x와y를 바꿔요. 그 문장을 저장 칸의 덮어쓰기 명령 두 개로 옮길 때는 각 기호가 원래 값인지 이미 바뀐 값인지 확인해야 해요.
명령 두 개의 결과는 일반적으로(y₀,y₀)입니다. 서로 다른 x₀를 가진 점들이 같은 결과로 모이므로 원래 첫 좌표를 복원할 수 없어요. 우연히x₀=y₀였던 점에서는 결과가 맞아 보여도, 그것만으로 올바른 대칭이동이라고 검증할 수 없어요. 대칭이동은 두 번 적용하면 원래 점을 되찾지만 이 명령은 잃은 값을 되찾지 못해요. 제대로 교환하려면 별도 칸z를 마련해 z←x, x←y, y←z 순서로 원래 값을 보존해요.
Craig Barton은 대입할 문자를 괄호 속 값으로 바꾸되 다른 문자를 그대로 두는 단계를 계산과 분리해요. 이 글은 그 구별을 자체 좌표 저장 규칙으로 확장했어요. 원문이 프로그래밍의 좌표 교환 알고리즘을 제시했다고 쓰지는 않아요.
수업에서는 명령 줄마다 현재 두 칸의 값을 기록하게 해요. 교사는 마지막 숫자만 묻는 대신 두 번째 x가 어느 시점의 값인지를 먼저 표시하게 할 수 있어요.
출처·착안: Substituting into an expression. 위 조건·문항·해설은 새로 작성했다.
