트랙
/
Factor
Factor
/
연습 문제
/
학교 명부
학교 명부

학교 명부

보통

지침

학생들의 이름과 그 학생이 속한 학년이 주어지면, 학교의 명단을 만들어요.

최종적으로 다음을 할 수 있어야 해요:

  • 학년별 명단에 학생 이름을 추가해요:
    • "2학년에 Jim을 추가해요."
    • "알겠어요."
  • 특정 학년에 등록된 모든 학생의 목록을 가져와요:
    • "2학년에는 어떤 학생들이 있나요?"
    • "지금은 Jim밖에 없어요."
  • 모든 학년의 모든 학생을 정렬된 목록으로 가져와요. 학년은 1, 2, 3 등으로 정렬하고, 같은 학년 안의 학생은 이름을 기준으로 알파벳순으로 정렬해야 해요.
    • "지금 학교에 등록된 학생은 누구예요?"
    • "생각해 볼게요. 1학년에 Anna, Barb, Charlie가 있고, 2학년에 Alex, Peter, Zoe, 5학년에 Jim이 있어요. 그래서 답은 Anna, Barb, Charlie, Alex, Peter, Zoe, Jim이에요."

참고로 우리 학생들은 모두 이름이 하나뿐이에요(작은 마을이라서요, 뭐 어쩌겠어요?). 그리고 각 학생은 한 학년이나 명단에 두 번 이상 추가할 수 없어요. 테스트에서 같은 학생을 두 번 이상 추가하려고 하면, 구현은 이것이 잘못되었다는 것을 알려야 해요.

워드

명단을 담을 school 튜플을 정의해요. 그 안에 학생을 어떻게 저장할지는 자유예요. 그런 다음 아래 워드를 구현해요.

  • <school> ( -- school ): 빈 school을 만들어요.
  • add-student ( school name grade -- ? ): name을 grade에 추가해요. 성공하면 t를 반환하고, name이 이미 추가되어 있다면(이 학년이든 다른 학년이든) f를 반환해요. 이 경우 명단은 그대로 유지돼요.
  • roster ( school -- names ): 모든 학생을 학년 순으로, 그다음 이름순으로 정렬한 명단이에요.
  • grade ( school n -- names ): 학년 n에 속한 학생을 이름순으로 정렬한 명단이에요.

출처

gSchool에서 Phil Battos와 함께한 페어 세션
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Factor Exercism

학교 명부 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Factor 트랙을 개념 47개연습 문제 163개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.