이 과제는 2018 년 5 월 Language of the Month 이벤트 의 일부로 일부 MATL 언어 기능과 관련이 있습니다 . 관련 챌린지 : 기능 클립 보드 : 복사 .
소개
MATL의 함수 클립 보드 는 일반적인 입력 기능에 대한 최근 4 개의 호출에 대한 입력을 저장합니다 ( "복사"). 정규 함수는 MATL에서 가장 일반적인 함수 유형입니다. 입력 은 기능이 하나 이상의 입력을 받음을 의미합니다. 저장된 클립 보드 내용을 스택에 밀어 넣을 수 있습니다 ( "붙여 넣기").
이 과제는 클립 보드 내용을 입력으로받습니다. 클립 보드 상태를 생성 한 모든 함수는 하나 이상의 양의 정수를 입력으로 사용한다고 가정합니다. 따라서 클립 보드 상태는 숫자 목록으로 표시 될 수 있습니다. (클립 보드가 실제로 채워지는 방법에 대한 자세한 내용은 관련 챌린지를 참조하십시오. 그러나 현재 챌린지에는 필요하지 않습니다).
클립 보드 내용 해석
실시 예 1
첫 번째 내부 목록은 가장 최근의 함수 호출 등을 나타냅니다 . 따라서 클립 보드 상태
[[11, 28], [12, 16], [4], [5, 6]]
마지막 함수 호출이 두 개의 입력 즉 11, 28; 두 번째 - 마지막으로 호출 입력을했다 12, 16; 등 (이 클립 보드 상태는 관련 챌린지의 첫 번째 예에서 코드로 생성됨).
실시 예 2
함수 호출이 충분하지 않은 경우 클립 보드의 일부 후행 내부 목록이 비어 있습니다.
[[7, 5], [], [], []]
(이것은 단순히 추가하는 프로그램에 의해 생성되는 7과 5).
실시 예 3
함수 호출은 임의의 수의 입력을 가질 수 있지만 항상 1입력을받지 않는 함수는 클립 보드 상태를 변경하지 않습니다. 따라서 다음도 가능합니다.
[[3], [2, 40, 34], [7, 8, 15], []]
클립 보드 내용에 액세스
함수 클립 보드의 내용은 MATL의 함수를 사용하여 스택에 푸시됩니다 M(단, 일반 함수는 아니지만 클립 보드 함수). 이 함수는 양의 정수를 입력으로 취하고 다음과 같이 클립 보드 내용 중 일부를 스택으로 푸시합니다. 예제 1의 클립 보드 상태를 참조하십시오.
[[11, 28], [12, 16], [4], [5, 6]]
1M모든 입력 을 가장 최근의 함수 호출로 반환 합니다 . 그래서, 고려 예를 들어, 준다11,28.- 이와 유사하게
2M,3M그리고4M세 번째, 두 번째로 모든 입력을 반환하고 네 번째 가장 최근의 함수 호출. 그래서2M제공12,16;3M준다4; 및4M제공5,6. - 하나 이상의 입력 을받은 함수 호출에 대한 개별 입력
4선택 이상의 숫자 . 따라서 가장 최근의 이러한 호출에 마지막 입력을 반환합니다 . 우리의 경우에 이것은 준다 . 이전의 개별 입력 값을 반환합니다 . 두 번째-마지막 호출의 마지막 입력 즉 , 및를 제공합니다 . 이제을 제공합니다 . 입력 이 함수 호출에서 유일한 입력 이었기 때문에 입력 을 건너 뛴 방법에 유의 하십시오. 마지막으로을 제공합니다 .5M286M117M168M129M6410M5
예제 3의 클립 보드 상태
[[3], [2, 40, 34], [7, 8, 15], []]
1M제공합니다3.2M제공2,40,34.3M제공7,8,15.4M이 정의되지 않은 동작이 세 개의 함수 호출이 되었기 때문에, (이 과제의 목적을).5M제공합니다34.6M제공합니다40.7M제공합니다2.8M제공합니다15.9M제공8,10M제공합니다7.11M,12M, ... 또한이 정의되지 않은 동작을 .
도전
입력 :
- 클립 보드 상태, 목록 목록 또는 기타 합리적인 형식;
- 양의 정수 n .
출력 : n 을 입력으로 M하여 함수 를 호출 한 결과 . 결과는 모호하지 않은 구분 기호를 사용하거나 목록 또는 배열과 같은 합리적인 형식으로 하나 또는 여러 개의 숫자가됩니다.
설명 :
- 클립 보드 상태는 4 개의 숫자 목록으로 구성됩니다. 예 2와 3에서와 같이 일부 후행 목록이 비어있을 수 있습니다. 원하는 경우 후행 빈 목록없이 클립 보드를 입력 할 수 있습니다. 예 3이됩니다
[[3], [2, 40, 34], [7, 8, 15]]. - 클립 보드의 모든 숫자는 양의 정수이며 두 자리 이상의 숫자 일 수 있습니다.
- 숫자 n 은 유효합니다. 따라서 예를 들어 위의 3
n은4또는 일 수 없습니다11.
추가 규칙 :
입력 및 출력은 합리적인 방법 으로 수행 할 수 있습니다 .
모든 프로그래밍 언어의 프로그램 또는 기능이 허용 됩니다 . 표준 허점은 금지되어 있습니다.
바이트 단위의 최단 코드가 이깁니다.
테스트 사례
Clipboard state
Number
Output(s)
[[11, 28], [12, 16], [4], []]
2
12, 16
[[11, 28], [12, 16], [4], []]
5
28
[[7, 144], [12], [4, 8], [3, 4, 6]]
1
7, 144
[[7, 144], [12], [4, 8], [3, 4, 6]]
10
4
[[30], [40], [50, 60], [70, 80, 90]]
2
40
[[30], [40], [50, 60], [80, 90]]
7
90
[[15], [30], [2, 3, 5], [4, 5, 10]]
3
2, 3, 5
[[15], [30], [2, 3, 5], [4, 5, 10]]
7
2