Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

TIL

2021 06 03 (목) 본문

2021/일일 기록

2021 06 03 (목)

ililillllllliilli 2021. 6. 5. 12:22

20210603(목)

1. 학습 날짜 : 20210603(목)

2. 학습 시간 : 13:00 ~

3. 학습 주제 : push_swap 마무리

4. 동료 학습 방법 : 개인

5. 학습 목표 : push_swap 마무리, 평가

  • Mandatory :
    • sort_a, sort_b norm
    • mandatory 추가
    • ruby 명령어 정리
    • Error처리 생각하기 -
      • Stderr에 출력했는가?
      • Error를 띄우는 경우를 생각해보고, 잘못처리된 부분이 존재하는지 생각해보기.
      • 인자가 하나만 들어왔을 때의 처리..?
  • Bonus
    • checker 프로그램 요구사항 분석
    • checker 프로그램 만들기
  • 테스터기 돌려보기

6. 학습 내용 :

Checker 에 명령어를 넣어줄 때의 RUBY 명령어 :

ARG=`ruby -e "puts (0..10).to_a.shuffle.join(' ')"`; ./push_swap $ARG
  1. ARG : 환경변수
  2. ruby -e : ruby 명령어를 command에서 실행하도록 한다.
  3. ruby 명령어 : puts (0..10).to_a.shuffle.join(' ') :
    1. puts : 출력 명령어
    2. (a..b) : ruby 문법. - splat.
    3. to_a : to_array 인듯싶고, shuffle한 뒤에 space 를 join시키는듯.

정리하면, ARG=[rand*k* ., rand*1*.., rand*n*] ; ./push_swap $(ARG).

Checker 프로그램 요구사항 분석

  • argument 가 들어오지 않았을 때. Displays nothing
  • list of integers를 인자로 받는다.
  • stdin의 명령어를 읽어들인 뒤, 해당 명령어를 실행시킨다.
  • Stack_a가 sorted 되어있고, stack_b가 empty일 때, OK\n 출력
  • 그렇지 않다면, "KO\n"
  • Error가 뜬다면, Error 를 입력해야한다.
  • Error 를 출력해야할 경우:
    • list of integers 중 한 원소가 integer가 아닐 경우
    • list of integers의 값이 Integer보다 클 경우
    • duplicates가 존재할 경우
    • stdin에서 받은 명령어가 존재하지 않는 명령어일 경우.
  • 이미 정렬된 경우의 checker의 평가는..?
  • 유효한 매개변수를 사용하여 검사기를 실행하고 명령단계에서 작업전/후에 하나 또는 여러공백을 사용하여 작업을작성합니다
    • get_next_line으로 stdin에서 읽어온 명령어가 비어있을 때..?newline 전까지 읽기 때문에 아마 '\0' 을 리턴하지 않을까...
    • 확인해본 결과, gnl은 newline 전까지 읽어 null을 리턴한다.
    • ⁉️ : get_next_line으로 \n만 읽어올 수 있나..?
  • 프로그램 실행 도중 ctrl + D 키를 눌러 진행하는데, 왜 ctrl + D를 눌러 진행하는지 알 수 없다.
    • ctrl + D키를 눌러 평가를 진행하는 이유?

checker를 위해 만들 함수들 :

  • stdin에서 명령어를 읽어옴.
  • 유효한 명령어인지 판별함수 is_valid_instruction
  • 결과 판별 하여 결과 출력 함수 :print_result

checker 요구사항 평가

  • argument 가 들어오지 않았을 때. Displays nothing
  • list of integers를 인자로 받는다.
  • stdin의 명령어를 읽어들인 뒤, 해당 명령어를 실행시킨다.
  • Stack_a가 sorted 되어있고, stack_b가 empty일 때, OK\n 출력
  • 그렇지 않다면, "KO\n"
  • Error가 뜬다면, Error\n를 띄워야한다.
  • Error\n 를 출력해야할 경우:
    • list of integers 중 한 원소가 integer가 아닐 경우
    • list of integers의 값이 Integer보다 클 경우
    • duplicates가 존재할 경우
  • stdin에서 받은 명령어가 존재하지 않는 명령어일 경우.
  • 이미 정렬된 경우의 checker의 평가는..?
  • 유효한 매개변수를 사용하여 검사기를 실행하고 명령단계에서 작업전/후에 하나 또는 여러공백을 사용하여 작업을작성합니다
    • get_next_line으로 stdin에서 읽어온 명령어가 비어있을 때..?newline 전까지 읽기 때문에 아마 '\0' 을 리턴하지 않을까...
    • 확인해본 결과, gnl은 newline 전까지 읽어 null을 리턴한다.
    • ⁉️ : get_next_line으로 \n만 읽어올 수 있나..?
  • 프로그램 실행 도중 ctrl + D 키를 눌러 진행하는데, 왜 ctrl + D를 눌러 진행하는지 알 수 없다.
    • ctrl + D키를 눌러 평가를 진행하는 이유?
    • stdin의 버퍼입력을 중단받기 때문.
 

'2021 > 일일 기록' 카테고리의 다른 글

push_swap 평가  (0) 2021.06.05
피드백 요소  (0) 2021.06.05
2021 06 02(화)  (0) 2021.06.05
2021 06 01 (화)  (0) 2021.06.02
2021 05 31(월)  (0) 2021.06.01
Comments