그들은 추가 작업을 위해 그것을 설정하는 법을 배웠습니다. 이제 간단한 명령을 사용하여 로봇에 대한 알고리즘을 컴파일하는 과정으로 직접 이동해 보겠습니다.

비디오 자습서 형식의 정보를 선호하는 경우 사이트에 비디오 자습서가 있습니다.

모든 연주자는 명령 시스템( 스키집행자의 명령 시스템). 실행자 명령 시스템- 수행자가 실행할 수 있는 모든 명령의 집합입니다. 예를 들어 훈련된 개를 생각해 보십시오. 그녀는 "앉아", "눕기", "다음" 등과 같은 몇 가지 명령을 실행하는 방법을 알고 있습니다. 이것이 그녀의 명령 시스템입니다.

간단한 로봇 명령

우리 로봇에는 명령 시스템도 있습니다. 오늘 우리가 살펴볼 단순한 로봇 명령 . 총 5가지가 있습니다:

  • 위로
  • 왼쪽으로
  • 오른쪽
  • 칠하다

이러한 명령을 실행한 결과는 이름에서 명확합니다.

  1. 위로— 로봇을 한 칸 위로 이동
  2. 아래로— 로봇을 한 셀 아래로 이동
  3. 왼쪽으로— 로봇을 왼쪽으로 한 셀 이동
  4. 오른쪽— 로봇을 오른쪽으로 한 칸 이동
  5. 칠하다— 현재 셀(로봇이 있는 셀) 위에 페인트합니다.

이 명령은 키보드에서 작성하거나 바로 가기 키를 사용할 수 있습니다(키를 누르면 명령이 자동으로 삽입됨).

  • 위쪽 - 탈출, 위쪽(위쪽 화살표)
  • 아래쪽 - 탈출, 아래쪽(아래쪽 화살표)
  • 왼쪽 - 탈출, 왼쪽(왼쪽 화살표)
  • 오른쪽 - 탈출, 오른쪽(오른쪽 화살표)
  • 페인트 위에 - 탈출, 공간 (공간)

원하는 단축키 조합을 눌러야 합니다. 일반적인 방법이 아닙니다!우리는 동시에 키를 누르는 데 익숙하지만 여기에는 필요합니다. 순차적으로 누르다. 예를 들어 위쪽 명령을 입력하려면 Esc 키를 눌렀다가 놓은 다음 위쪽 화살표를 눌러야 합니다. 이것은 기억해야 합니다.

이제 로봇을 위한 첫 번째 알고리즘을 작성할 준비가 되었습니다. 나는 간단한 것으로 시작하는 것을 제안합니다 - 3개의 셀의 측면이 있는 정사각형을 그립니다. 가다!

아이돌, 잇을 런칭합니다. 프로그램 작성을 시작할 수 있습니까? 당연히 아니지! 우리는하지 않습니다! 해보자 나는 이것을 사용하는 것이 좋습니다:

이제 모든 것이 준비되었습니다. 프로그램 작성을 시작해 보겠습니다. 그녀가 이렇게 보이는 한

기호 "|" 삭제 알고리즘을 "Square"라고 부릅니다.

나는 시계 방향으로 움직이는 사각형을 그릴 것을 제안합니다. 먼저 다음 명령을 실행하여 현재 셀 위에 페인트합니다. 칠하다. 그런 다음 오른쪽으로 한 걸음 나아가 다시 셀 위에 페인트를 칠합니다. 그리고 다시 오른쪽으로 가서 페인트칠을 합니다.

프로그램을 실행하고 어떤 일이 일어나는지 봅시다. 눌러 실행 F9또는 도구 모음의 버튼

결과적으로 다음과 같이 표시되어야 합니다.

그러한 로봇 창이 없으면 도구 모음에서 " 로봇 창 표시" 또는 로봇 메뉴에서 " 로봇 창 표시". 우리는 더 계속합니다.

이제 아래로 이동하여 사각형의 오른쪽을 칠합니다.

아래로

칠하다

아래로

칠하다

그런 다음 왼쪽으로 이동하여 사각형의 아래쪽 테두리를 칠합니다.

왼쪽으로

칠하다

왼쪽으로

칠하다

도색되지 않은 셀이 하나 남아 있습니다. 그 위에 칠하자

위로

칠하다

모든 준비가 완료되었습니다! 결과적으로 우리 프로그램은 다음과 같습니다.

로봇을 사용하다

정사각형

일찍

칠하다

오른쪽

칠하다

오른쪽

칠하다

아래로

칠하다

아래로

칠하다

로봇 연기자는 명령 시스템을 가지고 있습니다. 고려하다 간단한 로봇 명령. 총 5가지가 있습니다:

    위로- 로봇을 한 칸 위로 이동

    아래로- 로봇을 한 칸 아래로 이동

    왼쪽으로- 로봇을 왼쪽으로 한 칸 이동

    오른쪽- 로봇을 오른쪽으로 한 칸 이동

    칠하다

연습 1.한 변이 3칸인 정사각형을 그립니다.

쿠미르 런칭

기호 "|" 삭제 알고리즘을 "Square"(서비스 단어 옆에 쓰다 정사각형)

칠하다

칠하다

칠하다

프로그램을 실행하고 무슨 일이 일어나는지 보십시오. 눌러 실행 F9또는 도구 모음의 버튼 프로그램 실행

그러한 로봇 창이 없으면 도구 모음에서 " 로봇 창 표시" 또는 로봇 메뉴에서 " 로봇 창 표시". 우리는 계속해서 다음을 수행합니다.

아래로

칠하다

아래로

칠하다

그런 다음 왼쪽으로 이동하여 사각형의 아래쪽 테두리를 칠합니다.

왼쪽으로

칠하다

왼쪽으로

칠하다

도색되지 않은 셀이 하나 남아 있습니다. 그 위에 칠하자

위로

칠하다

모든 준비가 완료되었습니다! 결과적으로 우리 프로그램은 다음과 같습니다.

로봇을 사용하다

알 스퀘어

칠하다

칠하다

칠하다

칠하다

칠하다

칠하다

칠하다

칠하다

작업 2.사용 간단한 로봇 명령,글자를 그리는 프로그램을 작성하다 P, R, W, W, T, N.

조건부 루프.

로봇 수행자에게는 다음과 같은 몇 가지 조건이 있습니다. 상단 무료 하단 무료 왼쪽 무료 오른쪽 상단 벽 하단 벽

왼쪽 벽 오른쪽 벽

작업 3 .

그리다 수직선필드의 왼쪽에서 오른쪽 테두리로 조건이 있는 루프를 사용합니다. 처음에 로봇은 왼쪽 상단 모서리에 있습니다.

원천로봇 프로그램은 다음과 같을 것입니다.

로봇을 사용하다

일찍

칠하다

nc 오른쪽 무료

오른쪽

칠하다

kts

범죄자

이 프로그램을 실행한 결과 다음 그림을 볼 수 있습니다.

작업 4.크기에 관계없이 로봇의 작업 영역 주위에 프레임을 만드는 프로그램을 작성하십시오. 물론 조건부 루프를 사용합니다. 결과적으로 다음과 같이 표시되어야 합니다.


전체 프로세스는 조립과 프로그래밍의 두 단계로 구성됩니다. 수집하다 좋은 로봇역학에 대한 지식이 필요합니다. 특정 동작을 위해 로봇을 프로그래밍하려면 이해할 수 있는 언어를 알아야 합니다. 마더보드또는 프로그램 블록. 컴퓨터 과학에 대한 학교 지식으로는 충분하지 않습니다.

재료는 어디서 구하나요?

먼저 로봇을 조립할 방법을 결정해야 합니다. 기성품 키트에서 또는 재료를 직접 선택합니다. 키트의 장점은 부품을 개별적으로 찾을 필요가 없다는 것입니다. 대부분의 경우 한 세트에서 여러 장치를 조립할 수 있습니다.

기성품 세트에서 조립되지 않은 구조를 개방형 시스템. 또한 장점이 있습니다. 로봇은 개별적이며 디자인을 개선할 수 있습니다. 그러나 분명히 더 많은 시간과 노력을 들일 것입니다.

로봇은 무엇으로 만들어졌나요?

하우징 - 금속 또는 플라스틱 "신체", 나머지 부품이 부착됩니다. 각 로봇에는 배터리 또는 축전지와 같은 에너지원이 있습니다. 로봇이 수행할 작업에 따라 센서가 선택됩니다. 센서는 색상과 빛을 감지하고 터치에 반응할 수 있습니다.

로봇을 움직이려면 모터가 필요합니다. "머리"전체 메커니즘 - 마더 보드 또는 프로그램 블록. 그들의 도움으로 로봇은 컴퓨터에 연결하고 일련의 작업을 받습니다.

그에게 무언가를 하게 하는 방법?

로봇이 어떤 동작을 수행하려면 다음을 생성해야 합니다. 컴퓨터 프로그램. 이 단계의 복잡성은 어셈블리에 따라 다릅니다. 로봇을 세트로 조립하는 경우 레고 마인드스톰또는 mBot을 사용하면 어린이도 소프트웨어를 다룰 수 있습니다.

로봇을 직접 만든다면 프로그래밍의 기초와 프로그램을 작성할 언어(예: C++)를 배워야 합니다.

로봇이 프로그램을 실행할 수 없는 이유는 무엇입니까?

새로운 장소에 도착하면 길을 잃고 프로그램을 잘못 실행할 수 있습니다. 로봇이 모든 것을 올바르게 수행하려면 센서를 조정해야 합니다. 예를 들어 너무 밝은 조명은 적절한 색상 인식을 방해할 수 있습니다. 로봇이 움직이는 표면에 따라 모터의 동력이 조절됩니다.

학교에서 조립과 프로그래밍을 배울 수 있습니까?

로봇 공학이 학교 교과 과정에 포함되어 있지 않다는 사실에도 불구하고 물리학 및 컴퓨터 과학 교사는 어린이에게 조립 및 프로그래밍 방법을 가르칠 수 있습니다. 벨고로드의 일부 학교에는 로봇을 만드는 원이 있습니다.

“물리학 및 컴퓨터 공학 교사들과 수업을 마친 후에 우리는 프로그래밍을 배웁니다. 우리는 이미 LegoMindstorms 및 Robolab에서 작업하는 방법을 알고 있습니다( 소프트웨어로봇 - 약. 에드.). 우리는 또한 부품의 3D 도면을 만드는 방법을 배우기도 합니다.”라고 Belgorod Engineering Youth Boarding Lyceum의 학생들과 RoboFest-2018 참가자들이 말했습니다. 안톤 퍼신그리고 드미트리 체르노프.

학교 외에 어디에서 로봇 공학자가 될 수 있습니까?

BelSU의 공과대학에는 로봇을 조립하고 프로그래밍하는 방법을 가르치는 수업이 있습니다. 2017년 Quantorium은 벨고로드에 문을 열었습니다. 이곳에서 학생들은 9살부터 로봇 공학을 배웠습니다.

진정한 로봇 공학자가되기 위해 로봇 공학부에 입학 할 수 있습니다. Belgorod에는 아직 그런 사람들이 없지만 BSTU im. Shukhov에는 기술 사이버네틱스 부서가 있습니다. 그녀의 학생들은 로봇 분야의 모든 러시아 대회에서 상을 받았습니다.

스스로 배울 수 있습니까?

예. 로봇을 구축하고 프로그래밍하는 방법을 배울 수 있는 많은 리소스가 인터넷에 있습니다.

로봇이 유용할까요?

일상적인 작업에 적용할 수 있으며 집안의 조수 역할을 할 수 있습니다. 가정 발명가가 팬케이크를 굽거나 아파트를 청소하기 위한 로봇을 만드는 방법에 대한 많은 예가 인터넷에 있습니다.

로봇 제작 성공을 어떻게 확인합니까?

RoboFest와 같은 대회에 참가하십시오. 연령과 방향에 따라 다양한 후보가 있습니다. 기본적으로 각 유형의 로봇에는 큐브 캡처 또는 선 그리기와 같은 작업을 수행하는 트랙이 있습니다. 심사 위원이 프로젝트의 프레젠테이션과 메커니즘의 작동을 평가하는 정적 시스템도 있습니다.

일반적으로 참가자는 경쟁에 참가합니다. 로봇에 의해 조립그리고 준비 단계에서는 센서를 보정하고 프로그램을 조정하는 데만 시간을 할애합니다.

편집자는 RoboFest-2018 참가자의 자료를 만드는 데 도움을 주셔서 감사합니다. 드미트리 아가포노프, 드미트리 체르노프, 안톤 퍼신그리고 다닐라 미그리나.

나탈리아 말리히나

실행 제어 로봇 KUMIR 시스템에서

로봇은 특정 환경(직사각형 체크 필드)에 존재합니다. 벽은 필드의 일부 셀 사이에 위치할 수 있습니다. 일부 셀은 음영 처리될 수 있습니다(그림 3.11).

로봇은 필드의 정확히 한 셀을 차지합니다.

상,하,좌,우 명령에 따라 로봇은 지정된 방향으로 다음 셀로 이동합니다. 도중에 벽이 있으면 실패가 발생합니다. 다음 명령을 실행할 수 없다는 메시지가 표시됩니다.

페인트 칠하라는 명령에 따라 로봇은 자신이 서 있는 셀 위에 페인트를 칠합니다. 셀이 이미 칠해진 경우 눈에 보이는 변경 사항이 발생하지 않더라도 다시 칠해집니다.

로봇은 올바르게 작성된 명령만 실행할 수 있습니다. down 명령 대신 적어두면 로봇은 이 항목을 이해하지 못하고 즉시 오류를 보고합니다.

영형
오류: 1 구문; 2. 논리적

장면 설명은 다음 위치에 저장됩니다. 텍스트 파일특수 형식(.fil 형식).

현재의- 로봇이 있는 환경 이 순간(로봇의 위치에 대한 정보 포함).

- 로봇을 이용한 프로그램 실행 초기에 로봇이 강제로 배치되는 환경.

운영 절차:


  1. 묻다 시작 환경작업에 따라:
메뉴 도구 → 로봇 시작 환경 변경 (작업 조건에 따라 환경 그리기, 이름 지정, 개인 폴더에 저장)

2. 계약자 지정:

메뉴 삽입 → 로봇 사용

3. 문제 해결을 위한 알고리즘을 작성하십시오.

4. 알고리즘 실행 (메뉴 실행 → 연속 실행 / F9)

KUMIR 시스템에서 실행 로봇의 명령 시스템




동작

위로

로봇이 1칸 위로 이동합니다.

아래로

로봇이 1칸 아래로 이동합니다.

왼쪽으로

로봇이 왼쪽으로 1칸 이동

오른쪽

로봇이 오른쪽으로 1칸 이동

칠하다

로봇은 자신이 있는 셀을 페인트합니다.

바로 무료

로봇은 해당 실행을 확인합니다. 단순한자귀

무료로 남겨둔



탑 느슨한



바닥 느슨한



셀이 음영 처리됨



케이지 청소



순환 알고리즘

주기특정 조건이 참이 될 때까지 행동을 반복하는 조직 .

루프 본체 -반복 가능한 일련의 작업.

상태 -부울 표현식(단순 또는 복합(복합))
주기 유형:

1."n번 반복" 반복 2. "안녕" 반복
nc n 번 안녕
. . 루프 바디. . 루프 본체
kts kts

예시: 안녕바로 무료


주기의 일반 보기 "n번 반복:

n번 반복


kts

while 루프의 일반적인 보기:

할 일


복합 조건하나 또는 그 이상으로 형성 간단한 용어및 서비스 단어 그리고, 또는, 아닙니다.


복합 상태 A와 B(여기서 A, B는 단순조건) 그 안에 포함된 2개의 단순조건이 각각 만족될 때 만족된다.

하자 - 위에 무료- 오른쪽에 무료그런 다음 복합 조건 A와 B- 상단이 무료이고 오른쪽이 무료입니다.


복합 상태 A 또는 B 포함된 두 가지 단순 조건 중 하나 이상이 충족되면 충족됩니다. 상단 무료 또는 오른쪽 무료
복합 상태 아니다- 조건 A가 충족되지 않을 때 충족됨.

예시: A를 음영 처리된 셀이라고 하자(단순 조건).

A가 아닌 복합 상태 확인:

a) A - 완료, NOT A(음영 처리되지 않음) - 완료되지 않음.

b) A - 완료되지 않음, NOT A(음영 처리되지 않음) - 완료됨.


분기 명령

분기 -특정 조건의 충족 여부에 따라 하나 또는 다른 일련의 작업이 수행되는 작업 구성의 한 형태.

IF 명령의 일반 보기:

만약에 그 다음에 그렇지 않으면

KUMIR 언어:

전체 분기: 부분 분기:
만약에 그 다음에 만약에 그 다음에

그렇지 않으면

모두

도우미 알고리즘- 주요 문제의 일부 하위 문제를 해결하는 알고리즘.

KUMIR 시스템에서 보조 알고리즘은 메인 프로그램의 끝 부분에 작성됩니다. 관계 범죄자)는 이름으로 메인 프로그램에서 실행을 위해 호출됩니다.

설문조사 및 과제

1. 로봇을 원래 위치에서 셀 B로 이동시키는 세 가지 명령의 모든 알고리즘을 제공하십시오.

로봇이 다음을 수행하는 동안 이 작업에 대한 알고리즘이 있습니까?

가) 두 단계 b) 4단계 c) 5단계 d) 일곱 단계?


  1. Petya는 로봇을 A 셀에서 B 셀로 옮기는 알고리즘을 만들었습니다. 로봇을 B에서 A로 이동하고 동일한 셀을 채우는 알고리즘을 얻기 위해 Kolya는 이 알고리즘으로 무엇을 해야 합니까?


7. 두 가지가 알려져 있습니다. 보조 알고리즘로봇

로봇이 다음 기본 알고리즘을 수행할 때 어떤 일이 발생하는지 그립니다.


ㅏ)

NC 5번


패턴_1

오른쪽; 오른쪽;


비)

NC 7번


패턴_2

오른쪽; 오른쪽


안에)
오른쪽; 오른쪽; 오른쪽

위로; 위로

오른쪽; 오른쪽; 오른쪽

내려가는 길; 아래로


G)
오른쪽; 오른쪽
오른쪽; 오른쪽

8. 로봇이 지정된 셀을 칠할 알고리즘을 만듭니다.



9. 로봇의 오른쪽 어딘가에 벽이 있는 것으로 알려져 있다. 로봇이 여러 셀을 벽까지 칠하고 원래 위치로 돌아가는 제어 하에 알고리즘을 구성합니다.

10. 로봇의 오른쪽 어딘가에 음영 처리된 셀이 있는 것으로 알려져 있습니다.

에서 로봇이 음영 처리된 셀까지 여러 셀을 칠하고 원래 위치로 돌아가는 알고리즘을 그대로 두십시오.

11. 로봇은 수평 복도의 왼쪽 입구 부근에 위치하는 것으로 알려져 있다.

12. 로봇은 수평 복도 어딘가에 있는 것으로 알려져 있다. 복도의 어떤 세포도 칠해지지 않았습니다.

로봇이 이 복도의 모든 셀에 페인트를 칠하고 원래 위치로 돌아가는 제어 하에 알고리즘을 구성합니다.


13. 로봇 오른쪽에 있는 10개의 셀 행에서 일부 셀은 음영 처리됩니다.

에서 셀을 그리는 알고리즘을 그대로 두십시오.

a) 각 음영 셀 아래;

b) 각 음영 셀 위와 아래.


14. 다음 알고리즘 조각의 정확성에 대해 무엇을 말할 수 있습니까?

안녕셀이 음영 처리됨

만약에바로 무료 그 다음에

오른쪽; 칠하다

에게

15. 로봇이 세 개의 미로에서 B 셀에 도달할 수 있는 프로그램을 작성하십시오.


16. 로봇이 필드의 왼쪽 하단 모서리에서 오른쪽 상단으로 복도를 따라 갈 수 있는 프로그램을 작성하십시오. 복도는 한 칸의 너비를 가지며 왼쪽-아래-오른쪽-위 방향으로 뻗어 있습니다. 가능한 복도의 예가 그림에 나와 있습니다.



아다치 GIA


  1. 복도1. 로봇은 수직 복도 어딘가에 있습니다. 복도의 어떤 세포도 칠해지지 않았습니다. 로봇이 이 복도의 모든 셀을 칠하고 원래 위치로 돌아가는 알고리즘을 만듭니다.

  1. 에게
    필요한

    주어진
    복도2. 로봇은 좁은 수직 복도의 상단 셀에 있습니다. 복도의 너비는 하나의 셀이며 복도의 길이는 임의적일 수 있습니다.

로봇의 초기 위치의 가능한 변형이 그림에 표시됩니다(로봇은 문자 "P"로 표시됨)

복도 내부의 모든 셀을 채우고 로봇을 원래 위치로 되돌리는 로봇 알고리즘을 작성하십시오. 예를 들어 위 그림의 경우 로봇은 다음 셀 위에 페인트해야 합니다(그림 참조).


  1. 끝없이 펼쳐진 들판에는 긴 수평 벽이 있다. 벽의 길이는 알 수 없습니다. 로봇은 벽 바로 위의 케이지 중 하나에 있습니다. 로봇의 초기 위치도 불명. 가능한 위치 중 하나:
시간


필요한

주어진
벽의 크기와 로봇의 초기 위치에 관계없이 벽 위와 인접한 모든 셀을 그리는 로봇 알고리즘을 작성하십시오. 예를 들어, 주어진 도면에 대해 로봇은 다음 셀을 페인트해야 합니다.

로봇의 최종 위치는 임의적일 수 있습니다. 알고리즘을 실행할 때 로봇이 파괴되어서는 안됩니다.



  1. 무한 필드에 긴 수직 벽이 있습니다. 벽의 길이는 알 수 없습니다. 로봇은 벽 바로 오른쪽에 위치한 케이지 중 하나에 있습니다. 로봇의 초기 위치도 불명. 로봇의 가능한 위치 중 하나가 그림에 표시됩니다(로봇은 문자 "P"로 표시됨): 벽에 인접한 모든 셀을 페인트하는 작업 알고리즘 작성: 왼쪽, 위에서 시작 도색되지 않은 하나를 통해; 오른쪽에 음영이 있는 아래쪽에서 시작하여 하나를 통과합니다. 로봇은 다음을 만족하는 셀에만 페인트를 칠해야 합니다. 이 조건. 예를 들어 위 그림의 경우 로봇은 다음 셀을 채워야 합니다(그림 참조). 로봇의 최종 위치는 임의적일 수 있습니다. 알고리즘은 임의의 벽 크기와 로봇의 유효한 초기 위치에 대한 문제를 해결해야 합니다. 알고리즘을 실행할 때 로봇이 무너지지 않아야 합니다.


수직 벽의 왼쪽과 수평 벽 위에 있고 인접하는 모든 셀을 그리는 로봇용 알고리즘을 작성하십시오. 로봇은 이 조건을 충족하는 셀에만 페인트를 칠해야 합니다. 예를 들어, 위 그림의 경우 로봇은 다음 셀을 페인트해야 합니다(그림 참조).


시간 벽에 인접한 셀을 왼쪽에서 시작하여 하나를 통해 위와 아래로 그리는 로봇 알고리즘을 작성하십시오. 로봇은 이 조건을 충족하는 셀에만 페인트를 칠해야 합니다. 예를 들어, 주어진 그림 a)에 대해 로봇은 다음 셀을 페인트해야 합니다(그림 b 참조).

로봇의 최종 위치는 임의적일 수 있습니다. 알고리즘은 임의의 벽 크기와 로봇의 유효한 초기 위치에 대한 문제를 해결해야 합니다.



아르 자형

  1. 무한 필드에 긴 수직 벽이 있습니다. 벽의 길이는 알 수 없습니다. 로봇은 벽 바로 왼쪽에 위치한 케이지 중 하나에 있습니다. 로봇의 초기 위치도 불명. 로봇의 가능한 위치 중 하나가 그림에 표시됩니다(로봇은 문자 "P"로 표시됨).
벽에 인접한 모든 셀을 칠하는 알고리즘을 작성하십시오.

  • 왼쪽에 모두;

  • 오른쪽, 도색되지 않은 상단에서 시작하여 하나를 통과합니다.
로봇은 이 조건을 충족하는 셀에만 페인트를 칠해야 합니다.


1102_GIA2011

무한 필드에는 두 개의 수평 벽이 있습니다. 벽의 길이는 알 수 없습니다. 벽 사이의 거리는 알 수 없습니다. 로봇은 왼쪽 가장자리에 있는 케이지의 하단 벽 위에 있습니다. 맨 아래 벽 위와 맨 위 벽 아래에 있으며 인접한 모든 셀을 그리는 로봇용 알고리즘을 작성하십시오. 로봇은 이 조건을 충족하는 셀에만 페인트를 칠해야 합니다. 예를 들어 위 그림의 경우 로봇은 다음 셀을 채워야 합니다(그림 참조).

로봇의 최종 위치는 임의적일 수 있습니다. 알고리즘은 임의의 필드 크기와 직사각형 필드 내부의 허용 가능한 벽 위치에 대한 문제를 해결해야 합니다. 알고리즘을 실행할 때 로봇이 무너지지 않아야 합니다.



1103_GIA_2011


무한의 장에는 수평의 벽이 있다. 벽의 길이는 알 수 없습니다. 벽의 오른쪽 끝에서 수직 벽이 아래쪽으로 뻗어 있으며 길이도 알 수 없습니다. 로봇은 왼쪽 가장자리에 있는 케이지의 수평 벽 위에 있습니다. 그림은 다음 중 하나를 보여줍니다. 가능한 방법벽과 로봇의 위치(로봇은 문자 "P"로 표시됨).

수평 벽 위에 있고 수직 벽의 오른쪽에 인접하고 있는 모든 셀을 그리는 로봇용 알고리즘을 작성하십시오. 로봇은 이 조건을 충족하는 셀에만 페인트를 칠해야 합니다. 예를 들어, 위 그림의 경우 로봇은 다음 셀을 페인트해야 합니다(그림 참조).

퍼포머 로봇은 셀로 분할된 직사각형 필드에 존재하며 그 사이에는 벽이 있을 수 있고 하나의 셀에 완전히 들어 맞습니다. 로봇은 현장을 돌아다니고, 세포 위에 페인트를 칠하고, 온도와 방사선을 측정할 수 있습니다. 로봇은 벽을 통과할 수 없지만 옆에 벽이 있는지 확인할 수 있습니다.

"로봇" 수행자의 명령 시스템에는 다음이 포함됩니다.

  • 로봇 동작을 유발하는 5가지 명령(왼쪽, 오른쪽, 위, 아래, 칠하기)
  • 10가지 상태 확인 명령:
  • [좌/우/하/상] [벽/자유]와 같은 8가지 명령
  • 케이지 [shaded/clean]와 같은 2가지 명령
  • 2개의 측정 명령(온도, 복사)

작업 명령

명령 확인

설명
무료로 남겨진 로그 로봇이 왼쪽으로 이동할 수 있으면 yes를 반환하고 그렇지 않으면 no를 반환합니다.
오른쪽 로그인은 무료입니다 로봇이 오른쪽으로 이동할 수 있으면 yes를 반환하고 그렇지 않으면 no를 반환합니다.
무료 로그 로봇이 위로 이동할 수 있으면 yes를 반환하고 그렇지 않으면 no를 반환합니다.
아래에 자유롭게 로그인 로봇이 다운될 수 있으면 yes를 반환하고, 그렇지 않으면 no를 반환합니다.
통나무 왼쪽 벽 로봇 왼쪽에 벽이 있으면 yes를 반환하고, 그렇지 않으면 no를 반환합니다.
통나무 오른쪽 벽 로봇 오른쪽에 벽이 있으면 yes를 반환하고, 그렇지 않으면 no를 반환합니다.
통나무 상단 벽 로봇 위에 벽이 있으면 yes를 반환하고 그렇지 않으면 no를 반환합니다.
통나무 바닥 벽 로봇 아래에 벽이 있으면 yes를 반환하고, 그렇지 않으면 no를 반환합니다.
로그 셀이 음영 처리됨 셀이 채워지면 yes를 반환하고 셀이 채워지지 않으면 no를 반환합니다.
로그 셀 청소 셀이 채워지면 no를 반환하고 셀이 채워지지 않으면 yes를 반환합니다.

측정 명령

벽의 왼쪽에 있는 셀에서 벽의 오른쪽에 있는 셀로 옮겨야 합니다.

알고리즘은 다음과 같습니다.

로봇을 사용하다
조류 예 1
일찍
. 아래로
. 오른쪽
. 위로
범죄자

로봇을 벽을 통해 인도하려고 하면 실패가 발생합니다. 로봇은 벽에 충돌하고 더 이상 명령을 따를 수 없습니다.


로봇이 A 지점에서 B 지점으로 미로를 통과하는 알고리즘을 작성해 보겠습니다.

로봇을 사용하다
A에서 B로
일찍
. 오른쪽

. 위로 ; 위로 ; 오른쪽 ; 아래로 ; 아래로 ; 오른쪽
. 위로 ; 위로 ; 오른쪽 ; 아래로 ; 아래로 ; 오른쪽
범죄자

각 섹션을 전달하는 명령은 한 줄로 그룹화할 수 있습니다. 이렇게 하면 알고리즘 기록이 단축되고 이해하기 쉬워집니다. 한 줄에 명령을 작성하려면 세미콜론으로 구분해야 합니다.