본문 바로가기

전체 글25

집컴(Linux)에 노미넷 설치하는 방법 (norminette v3) 아래 링크에 친절하게 설치 코드 스니펫이 안내되어 있다! https://github.com/42School/norminette GitHub - 42School/norminette Contribute to 42School/norminette development by creating an account on GitHub. github.com 문제는 저대로 배쉬에서 코드를 실행하면 아래와 같은 에러가 뜬다. /usr/bin/python3: No module named pip pip 모듈이 설치되어 있지 않은 상태이기 때문에 뜨는 것이다. 아래 코드를 통해 깔아주자. python3 --version pip 모듈을 설치하기 위해서는 python3의 버전이 3.5 이상이여야 하므로 확인해주자. 만약 3.5 버전 .. 2022. 9. 1.
Philosophers : process synchronization 프로젝트 개요 Overview 이 과제를 수행하기 위해 알아야 할 사항 : 한 명 이상의 철학자들이 원탁에 앉아있습니다. 원탁의 가운데에는 스파게티가 담긴 큰 접시가 있습니다. 철학자들은 먹기, 생각하기, 잠자기 셋 중 하나의 행동을 취합니다. 먹는 도중에는 생각하거나 잠을 자지 않습니다. 생각하는 동안에도 먹거나 잠을 잘 수 없습니다. 당연히 잠자는 도중에도 밥을 먹거나 생각할 수 없습니다. 탁자 위에는 포크들이 있습니다. 포크의 수는 철학자의 수와 같습니다. 스파게티를 포크 하나로 먹기엔 불편하기에, 철학자는 양 손에 포크를 들고 먹습니다. 철학자가 밥을 다 먹으면, 포크들을 테이블에 도로 내려놓고 잠을 자기 시작합니다. 잠에서 깨면(잠을 다 자면), 생각하기 시작합니다. 철학자가 사망하면 시뮬레이션.. 2022. 5. 3.
Push Swap : 가장 작은 인자 정렬 프로그램을 계산하기 프로젝트 개요 Mandatory Part 입력받은 정수 인자들을 정렬하는 push_swap 명령어를 사용하여 가장 작은 프로그램을 계산하고 표준 출력에 출력한다. 이 프로그램은 a와 b라는 이름의 두 스택으로 이루어져 있다. 게임은 다음과 같은 상태에서 시작한다 : a는 서로 중복되지 않는 음수 혹은 양수인 난수들을 포함한다. b는 비어있는 상태. 목표는 스택 a에 오름차순으로 수를 정렬하는 것이다. (오름차순 : 작은 것부터 큰 것 순) 다음과 같은 연산들을 수행할 수 있다 : sa(swap a) : 스택 a의 가장 위에 있는 두 원소의 위치를 서로 바꾼다. 원소가 하나있거나 없을 경우 아무것도 하지 않는다. sb(swap b) : 스택 b의 가장 위에 있는 두 원소의 위치를 서로 바꾼다. 원소가 하나.. 2022. 4. 2.
So Long : miniLibX로 만드는 간단한 2D 게임 프로젝트 개요 Mandatory Part So Long은 그래픽 디자인 프로젝트라고 볼 수 있다. 주인공이 특정 수집품을 모두 모은 뒤 맵을 탈출하는 작은 2D게임을 만들어야 한다. 반드시 miniLibX를 사용해야 하며, 운영체제에서 이용 가능한 라이브러리와 과제에서 제공되는 소스 중 하나를 사용해야 한다. 작업창 관리(창 최소화, 다른 창으로 전환 등의 동작)는 버벅거림 없이 동작해야 한다. 지도의 세 가지 요소들: 벽, 수집품, 그리고 빈 공간 플레이어의 목표는 모든 수집품을 모으고 최소한의 움직임으로 맵을 탈출하는 것. 각 움직임마다 현재까지 움직인 횟수가 쉘에 출력되어야 한다. 플레이어는 벽을 뚫고 지나갈 수 없으며, 게임은 2D 시점으로 제작하여야 한다. (탑뷰 또는 프로필) W, A, S, .. 2022. 4. 2.
Minitalk : 서버와 클라이언트 간 문자열 교환 프로그램(using SIGNAL) 프로젝트 개요 Mandatory Part 클라이언트와 서버가 서로 통신하는 프로그램을 작성하라. 서버가 먼저 실행되어야 하며, 서버는 실행된 후 반드시 자신의 PID를 표시하라. 클라이언트는 다음과 같이 실행한다. (서버 PID와 전송할 문자열, 두 매개변수와 같이 실행되어야 한다.) 클라이언트는 매개변수로 전달한 문자열을 서버로 통신해야 하며, 서버는 문자열이 수산되면 해당 문자열을 표시해야 한다. 오로지 UNIX SIGNAL을 이용해서 통신을 구현하라! 서버는 문자열을 매우 빠른 속도로 표시할 수 있어야한다. 예: 길이가 100인 문자열을 표시하는 데에 1초가 걸린다면 너무 긴 것이다. 서버는 재시작할 필요 없이 여러 클라이언트로부터 문자열을 연속으로 수신할 수 있어야 한다. SIGUSR1과 SIGU.. 2022. 4. 2.
printf : 사용자가 format을 지정해 출력할 수 있는 함수 printf의 개요 ft_printf의 프로토타입은 int ft_printf(const char *format, ...) parameter가 들어갈 자리에 ...이 들어가있는 유형을 가변 인자라고 한다. printf("%d, %s, %x", a, b, c); 이 코드처럼 인자의 수, 타입을 사용자가 유동적으로 조절할 수 있다. (주의! 가변인자를 사용하기 위해서는 최소 1개 이상의 고정 인자가 있어야 한다.) 가변인수 리스트 가변 인자를 처리하기 위하여 가변 인수 리스트를 사용한다. va_list라는 타입은 가변 인수들을 저장하기 위한 가변 공간이다. (사용 예시 va_list arg_ptr) #include var_type va_arg(va_list arg_ptr, var_type); void va_c.. 2022. 4. 2.