Skip to content

Instantly share code, notes, and snippets.

@xnuk
Created March 3, 2016 15:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xnuk/259c130c5bb73086645b to your computer and use it in GitHub Desktop.
Save xnuk/259c130c5bb73086645b to your computer and use it in GitHub Desktop.

RANDOM 통로 설명 문서 - 버전 1.0.0-draft

서론

이 문서는 아희 유형 A 프로그래밍 언어 설명 문서에 언급되는 통로를 구현하는 방법에 대해 설명하고 제시합니다. 해당 문서를 기본으로 하되, 해당 문서와 구현 방법에 대해 충돌이 일어날 경우, 이 문서를 존중하는 방향으로 구현하시기 바랍니다. 이 문서의 PASSAGE_SPEC에 해당하는 이름값으로는 RANDOM을 권장합니다만, 강제하지는 않습니다.

이 문서는 통로를 0 이상 32768 미만의 정수들의 나열로 쓰기 위해 만들어진 문서입니다. 이 통로를 적용할 경우 실행 중에 통로를 다른 통로로 교체할 수는 없으며, 이를 원하신다면 다른 설명 문서를 찾아보시기 바랍니다.

넣기 명령

넣기 명령으로 인해 통로로 넣어지는 모든 값들은 모두 무시합니다. 통로에서 뽑아 나오는 값에 영향을 주지 않습니다.

뽑기 명령

0 이상 32768 미만의 랜덤한 정수를 뽑기 명령으로 인한 뽑아지는 값으로 제공합니다. 랜덤 알고리즘은 구현체마다 상이할 수 있습니다. 사용되는 랜덤 알고리즘은 통로에서 이전에 몇 번을 뽑았는지와는 상관없이 다음을 보장해야 합니다.

  • 통로에서 x번 뽑았을 때 0 이상 32768 미만의 정수가 모두 출현하는 자연수 x가 존재해야 합니다.
  • 랜덤 알고리즘이 미리 정해진 수열을 무한히 반복하는 구성이어서는 안 됩니다.

연속해서 같은 값이 뽑혀 나올 보장이 없을 경우, 다음을 따릅니다. 프로그램 실행 후 명령이나 명령을 통로에서 한 번도 실행하지 않았다면 같은 값이 뽑혀 나올 보장이 없는 경우입니다.

  • 받침이 나타내는 값이 2 미만이거나 NEED_MORE_COPYUNSET인 경우, 통로에서의 명령은 뽑기 명령 시 두 번 연속 같은 값이 뽑혀 나올 것을 보장합니다. 명령에 의해 이 보장은 파기될 수 있습니다.
  • NEED_MORE_COPYSET이고 받침이 나타내는 값이 2 이상인 경우, 받침이 나타내는 값을 x라고 했을 때 뽑기 명령 시 x+1번 연속 같은 값이 뽑혀 나올 것을 보장합니다. 명령에 의해 이 보장은 파기될 수 있습니다.

연속해서 같은 값이 n번 뽑혀 나올 보장이 있는 경우, 다음을 따릅니다.

  • 받침이 나타내는 값이 2 미만이거나 NEED_MORE_COPYUNSET인 경우, 기존 보장을 파기하고, 뽑기 명령 시 n+1 번 연속 같은 값이 뽑혀 나올 것을 보장합니다. 명령에 의해 이 보장은 파기될 수 있습니다.
  • NEED_MORE_COPYSET이고 받침이 나타내는 값이 2 이상인 경우, 기존 보장을 파기하고, 받침이 나타내는 값을 x라고 했을 때 뽑기 명령 시 n+x번 연속 같은 값이 뽑혀 나올 것을 보장합니다. 명령에 의해 이 보장은 파기될 수 있습니다.

명령에 의한 보장을 파기합니다. 즉 명령이 적용됐을 경우 통로에서 뽑힌 값과 그 다음으로 뽑힌 값은 다를 수 있습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment