> Input
> Input
>> 1²
>> (3]
>> 1%L
>> L=2
>> Each 5 4
>> Each 6 7
>> L⋅R
>> Each 9 4 8
> {0}
>> {10}
>> 12∖11
>> Output 13
온라인으로 사용해보십시오!
가능한 모든 솔루션 세트와 빈 세트를 리턴합니다 (예 : ∅) 해결책이 없을 때.
작동 원리
당연히, 그것은 대부분의 다른 답변과 거의 동일하게 작동합니다 : 숫자 목록을 생성하고 인수와 함께 역 계수를 각각 검사합니다.
Whispers의 프로그램 구조가 어떻게 작동하는지 잘 알고 있다면 수평선으로 건너 뛰십시오. 그렇지 않은 경우 : 본질적으로 Whispers는 최종 라인에서 시작하여 라인 별 참조 시스템에서 작동합니다. 각 줄은 두 가지 옵션 중 하나로 분류됩니다. 어느 그것은이다 nilad 라인 , 또는 A는 오퍼레이터 라인 입니다.
Nilad 라인 >
은 > Input
또는 > {0}
과 같이로 시작하고 해당 라인에 표시된 정확한 값을 > {0}
반환합니다. 즉 , 세트를 반환합니다{ 0 }. > Input
가능한 경우 평가 된 STDIN의 다음 행을 리턴합니다.
조작자 라인 시작 >>
등, >> 1²
또는 >> (3]
과 나타내고 하나 개 이상의 값 연산자를 실행. 여기서 사용 된 숫자는 명시적인 숫자를 참조하지 않고 대신 해당 줄의 값을 참조합니다. 예를 들어 ²
square 명령은n → n2)이므로 >> 1²
값을 반환하지 않습니다12대신 1 행의 제곱을 반환 하는데,이 경우 첫 번째 입력입니다.
일반적으로, 운영자 라인은 참조로 번호를 사용하여 작업, 아직 당신은 선을 발견했습니다 수 >> L=2
및 >> L⋅R
. 이 두 값 L
및 R
은 Each
문과 함께 사용됩니다 . Each
서술문은 두세 개의 주장을 다시 숫자 참조로 사용하여 작동합니다. 첫 번째 인수 (예 :) 5
는 함수에 사용 된 연산자 줄에 대한 참조이며 나머지 인수는 배열입니다. 그런 다음 배열에서 함수를 반복합니다. 여기서 L
및 R
의 함수는 반복되는 배열의 현재 요소를 나타냅니다. 예로서:
허락하다 A = [ 1 , 2 , 3 , 4 ], B = [ 4 , 3 , 2 , 1 ] 과 에프( x , y) = x + y. 다음 코드를 실행한다고 가정합니다.
> [1, 2, 3, 4]
> [4, 3, 2, 1]
>> L+R
>> Each 3 1 2
그런 다음 Each
진술 이 어떻게 작동 하는지 시연 합니다. 먼저 두 개의 배열로 작업 할 때 압축하여 양식을 만듭니다.씨= [ ( 1 , 4 ) , ( 2 , 3 ) , ( 3 , 2 ) , ( 4 , 1 ) ] 그런 다음지도 에프( x , y) 마지막 배열을 형성하는 각 쌍에 D = [ f( 1 , 4 ) , f( 2 , 3 ) , f( 3 , 2 ) , f( 4 , 1 ) ] = [ 5 , 5 , 5 , 5 ]
온라인으로 사용해보십시오!
어떻게 이 코드가 작동
Whispers의 작동 방식에 반 직관적으로 작업하면서 처음 두 줄부터 시작합니다.
> Input
> Input
이것은 우리의 두 가지 입력을 수집합니다. 엑스 과 와이행 1 과 2에 각각 저장합니다 . 우리는 다음 저장엑스23 행 에서 범위를 만듭니다A : = [ 1 . . . 엑스2]4 행 . 다음으로 섹션으로 이동
>> 1%L
>> L=2
>> Each 5 4
>> Each 6 7
여기 실행 우선 라인 7 , >> Each 5 4
라인 반복 처리, 5 라인을 통해 4 . 이것은 배열을 산출합니다B : = [ 나는%엑스|나는 ∈ A ], 어디 ㅏ%비계수 로 정의됩니다ㅏ 과 비.
우리는 다음 라인 실행 (8) , >> Each 6 7
라인 반복 처리, 6 이상을비, yielding an array C:=[(i%x)=y|i∈A].
For the inputs x=5,y=2, we have A=[1,2,3,...,23,24,25], B=[0,1,2,1,0,5,5,...,5,5] and C=[0,0,1,0,0,...,0,0]
We then jump down to
>> L⋅R
>> Each 9 4 8
which is our example of a dyadic Each
statement. Here, our function is line 9 i.e >> L⋅R
and our two arrays are A and C. We multiply each element in A with it's corresponding element in C, which yields an array, E, where each element works from the following relationship:
Ei={0AiCi=0Ci=1
We then end up with an array consisting of 0s and the inverse moduli of x and y. In order to remove the 0s, we convert this array to a set (>> {10}
), then take the set difference between this set and {0}, yielding, then outputting, our final result.