일반화 된 매트릭스 트레이스


23

영감.

주어진 (어떻게 든) :

  • (2 요소의리스트로 구성된 단일 또는 인수) 두 인수 블랙 박스 기능 , (입력 및 출력 1, 2, 3, ...)f: ℤ+ × ℤ+ → ℤ+
  • 적어도 두 개의 행과 두 개의 열이있는 양의 정수 행렬

행렬의 함수 trace를 반환합니다 .

함수 추적 이란 무엇입니까 ?

정규 행렬 트레이스는 행렬의 주 대각선 (왼쪽에서 오른쪽 아래)의 합입니다.

[[1,2,3],[4,5,6],[7,8,9]][1,5,9]1+5+915

그러나 합산 대신 f대각선을 따라 적용하려고합니다 .

[[1,2,3],[4,5,6],[7,8,9]][1,5,9]f(f(1,5),9)또는f(1,f(5,9))

왼쪽에서 오른쪽으로 사용하는지 오른쪽에서 왼쪽으로 사용하는지 명시하십시오.

주어진 행렬과 모든 중간 값은 언어의 정수 도메인 내에서 양의 정수입니다. 매트릭스는 비 정사각형 일 수있다.

f(x,y) = xy, [[1,2,3],[4,5,6],[7,8,9]]1×5×945

f(x,y) = xy, [[1,2,3],[4,5,6],[7,8,9]]→ →1591

f(x,y) = x-y, [[4,5,6],[1,2,3]]4-22

f(x,y) = (x+y)⁄2, [[2,3,4],[5,6,7],[8,9,10]]5또는7

f(x,y) = x+2y, [[1,2,3],[4,5,6],[7,8,9]]47또는29

f(x,y) = max(x,y), [[1,2,3],[4,5,6],[7,8,9]]max(1,5,9)9

f(x,y) = 2x, [[1,2,3],[4,5,6],[7,8,9]]2또는4

f(x,y) = lcm(x,y), [[2,2,2],[2,2,3],[2,3,3],[4,4,4]]lcm(2,2,3)6

참조 구현.


대각선은 [[2,2,2],[2,2,3],[2,3,3],[4,4,4]]무엇입니까?
완전 인간

3
@totallyhuman :[2,2,3]
Emigna

1
젠장, 제목을 "Generalized Matrix trance"로 읽었으며 페이지가로드 될 때 너무 실망했습니다
tar

답변:


9

R , 40 30 바이트

function(m,F)Reduce(F,diag(m))

온라인으로 사용해보십시오!

테스트 사례를 확인하십시오.

이 경우 대각선을 따라 왼쪽에서 오른쪽으로 이동합니다. 산술 연산자의 "+"경우 연산자 ( +,*,-,%/%,^,%%) 주위에 백틱을 사용 하거나 사용할 수 있습니다

매우 간단 : ReduceR의 등가로는 fold행렬의 대각선 원소는 그 a_ij위치를 i==j제 1, 즉, rowcol인덱스 UMN은 동일하다. diag비 정사각 행렬에 대해 적절한 동작이 있습니다.


8

하스켈 , 39 바이트

이전에 유효하지 않은 솔루션을 수정하는 데 도움을 주신 @Laikoni에게 감사드립니다!

f!m=foldl1 f[h|h:_<-zipWith drop[0..]m]

왼쪽에있는 직원, 온라인으로 사용해보십시오! (교체 foldl1foldr1오른쪽 연관에 대한)


방법은 foldl1 f$zipWith(!!)m[0..]?
자부심을 가진 haskeller

@proudhaskeller : 그것은 다른 사람들이 이미 시도했지만 정사각형이 아닌 행렬에서는 실패합니다.
ბიმო

5

Mathematica , 16 바이트

Martin Ender 덕분에 -1 바이트.

#~Tr~Fold[g]@*0&

온라인으로 사용해보십시오!

대체 솔루션, 17 바이트

Fold[g]@*Diagonal

온라인으로 사용해보십시오!


17 바이트 (명칭으로 블랙 박스 기능을 가정 할 수 있음)
Mr. Xcoder

@*{}구문은 이해가되지 않지만 (아마도) 의미가 @*List있지만 어쨌든 작동한다는 사실은 매우 훌륭합니다. 실제로, {}를 a로 바꾸고 0바이트를 저장할 수 있음을 의미합니다 .
마틴 엔더

@MartinEnder 실제로 실제로 List처음 시도했지만 {}그저 도대체 시도했지만 효과가 있다는 것에 놀랐습니다. 이해가 되나 어떻게 0작동합니까? o0
완전 인간

1
@totallyhuman와 같은 방법 {}입니다. 현재 {}함수 (또는 실제로 Mathematica 용어를 사용하는 "헤드")로 사용하고 있습니다. f거기 에 제네릭을 사용하면 얻을 수 있습니다 f[1,2,3](대각선 인 경우). 그러나 {}당신은 얻을 {}[1,2,3]. 그것은 완전히 무의미한 표현이지만, 머리는 임의의 표현 자체가 될 수 있으며, Mathematica가 그들과 어떤 관계가 있는지 모르면 그대로 그대로 둡니다. Mathematica의 목록 조작 함수의 대부분은 실제로 임의의 머리를 가진 표현식에서 작동하며의 경우 Fold머리는 무시됩니다. [tbc]
Martin Ender

따라서 0대신 헤드로 사용할 수 있습니다 . 헤드 0[1,2,3]는 여전히 의미가 없지만 모두 동일하게 작동합니다.
마틴 엔더

4

옥타브 , 61 57 53 바이트

function m=g(f,m)for i=diag(m)'(2:end)m=f(m(1),i);end

온라인으로 사용해보십시오!

g함수 핸들 f과 행렬 을 취하는 함수 를 정의합니다 m. 첫 번째 반복에서 m(1)왼쪽 위 행렬 요소를 반환합니다. 그 후에는 단지을 반환합니다 m.



@Giuseppe 이것이 제가 처음 61 바이트 버전으로 한 것입니다. 물론 57 바이트 및 61 바이트 버전의 장점을 결합하여 실제로 53 바이트 답변을 제공해야합니다. 다시 한번 봐 주셔서 감사합니다!
Sanchises


3

하스켈 , 47 45 42 바이트

f%((h:t):r)|[]<-t*>r=h|x<-tail<$>r=f h$f%x

온라인으로 사용해보십시오! (%)함수와 행렬을 목록으로 입력 하는 함수 를 정의하는 함수 를 정의합니다 .

이 기능은 오른쪽에서 왼쪽으로 접 힙니다.

f % [[1,2,3], -> f 1 ( f % [[5,6],   -> f 1 ( f 5 ( f % [[9]] ) ) -> f 1 ( f 5 ( f 9 ) ) )
     [4,5,6],               [8,9]] )
     [7,8,9]]

f % ((h:t):r)              -- (h:t) is the first row and r the remaining rows
 | [] <- t *> r = h         -- a shorter way of checking wether t==[] or r==[]
 | x<-tail<$>r = f h $ f%x -- apply f to h and the result of recursively calling (%) on
                           -- the remaining matrix with the first column removed

편집 : BMO 덕분에 -2 바이트 , Zgarb 덕분에 -3 바이트 !


1
$와 조건부를 사용 하고 단순화 하여 43 바이트*> .
Zgarb

@ Zgarb 사용하기 좋은 아이디어 *>!
Laikoni

3

APL (Dyalog Unicode) , 7 바이트 ( Adám의 SBCS )

⎕/1 1⍉⎕

온라인으로 사용해보십시오!

이 코드를 Adám 의 전체 프로그램으로 변환 할 것을 제안합니다 .

오른쪽에서 왼쪽으로.


여기서 Adám의 SBCS를 사용할 필요가 없습니다. Dyalog Classic을 사용할 수 있습니다.
Zacharý

@ Zacharý 문제는 내가 Dyalog Unicode로 응답한다는 것입니다. Classic은 시간이 지남에 따라 더 이상 사용되지 않습니다.
Outgolfer Erik

코드 페이지가 아니더라도 코드 페이지는 다음과 같습니다
Zacharý

@ Zacharý 글쎄, 오히려 일관성을 유지합시다. : P
Outgolfer Erik




2

자바 스크립트 (ES6), 58 56 바이트

g=(f,a,r=a[i=0][0],e=a[++i]&&a[i][i])=>e?g(f,a,f(r,e)):r

왼쪽에서 오른쪽으로 접습니다. 편집 : 배열이 양수라는 사실을 사용하여 2 바이트를 절약했습니다. 대체 솔루션, 56 바이트 :

(f,a,g=r=>(e=a[++i]&&a[i][i])?g(f(r,e)):r)=>g(a[i=0][0])

필요한 것처럼 보이지 않으며 1/주변을 이동하여 2 바이트를 더 절약 할 수 있습니다 f=>a=>(h=r=>(e=a[++i]&&a[i][i])?h(f(r,e)):r)(a[i=0][0]). TIO
얽히고 설킨

@ Shaggy 오, 그것은 엄격하게 긍정적입니다, 나는 그것을 보지 못했습니다.
Neil

분명히 우리는 블랙 박스 함수가 ​​사전 정의 된 변수에 할당되어 있다고 가정 할 수 있으므로 2 바이트를 절약 할 수 있습니다.
얽히고 설킨

@Shaggy 사실 f,첫 번째 버전에서 4 바이트 (2x )를 절약 할 것이라고 생각 합니까?
Neil

네가 옳아; 죄송 합니다. 다시 f,전화를 걸 때 시간 을 세는 것을 잊었습니다 g.
얽히고 설킨

2

자바 스크립트, 46 바이트

f=>a=>a.reduce((p,l,i)=>l[i]?f(p[0]|p,l[i]):p)

@Shaggy 덕분에 비트 단위를 사용하거나 1 바이트를 저장하십시오. 마술이다.


행렬에 열보다 많은 행이 있으면 작동하지 않는 것 같습니다.
얽히고 설킨

@Shaggy 너무 슬프다, 지금 47 바이트 ...
tsh

그래, 나도 그랬어 내 솔루션으로 수정 사항을 편집하려고했지만 나도 이겼습니다. (하지만 비트 OR을 사용하여 1 바이트를 다시 얻을 수 있다고 생각합니다.
Shaggy

@Shaggy so magic
tsh

언급을 잊어 버렸습니다 : 분명히 우리는 블랙 박스 함수가 ​​사전 정의 된 변수에 할당되어 있다고 가정 할 수 있으므로이를 활용하려는 경우 3 바이트를 절약 할 수 있습니다.
얽히고 설킨

2

자바 8, 88 81 70 바이트

m->{int r=m[0][0],i=1;try{for(;;)r=f(r,m[i][i++]);}finally{return r;}}

에 접 [[1,2,3],[4,5,6],[7,8,9]]습니다 f(f(1,5),9).

@KamilDrakari 덕분에 C # 답변 에서와 비슷한 트릭을 사용하여 간접적으로 -7 바이트 : 행 / 열을 기반으로 루프의 최대 경계를 갖는 대신 간단히 ArrayIndexOutOfBoundsException.
대체 -11 바이트 catch(Exception e)finally.

온라인으로 사용해보십시오.

이전 88 바이트 답변 :

m->{int r=m[0][0],i=1;for(;i<Math.min(m.length,m[0].length);)r=f(r,m[i][i++]);return r;}

온라인으로 사용해보십시오.

설명:

m->{                   // Method with integer-matrix parameter and integer return-type
  int r=m[0][0],       //  Start the result at the integer of position 0,0 (0-indexed)
      i=1;             //  Start the index at 1 (0-indexed)
  try{for(;;)          //  Loop indefinitely
    r=f(r,m[i][i++]);} //   Call f with the result + next diagonal cell as arguments
                       //   (and increase `i` by 1 with `i++` afterwards)
  finally{             //  If an ArrayIndexOutOfBoundsException occurred we're done,
   return r;}}         //   in which case we return the result-integer

블랙 박스 입력 형식 :

이 메타 답변에 따라int f(int x,int y) 허용되는 명명 된 함수 가 있다고 가정합니다 .

위의 람다뿐만 아니라 Test기본 함수를 포함 하는 추상 클래스 가 있습니다 f(x,y).

abstract class Test{
  int f(int x,int y){
    return x+y;
  }

  public java.util.function.Function<int[][],Integer>c=
    m->{int r=m[0][0],i=1;for(;i<Math.min(m.length,m[0].length);)r=f(r,m[i][i++]);return r;}
  ;
}

테스트 사례의 경우이 함수를 덮어 씁니다 f. 예를 들어 첫 번째 테스트 사례는 다음과 같이 호출됩니다.

System.out.println(new Test(){
  @Override
  int f(int x,int y){
    return x*y;
  }
}.c.apply(new int[][]{
  new int[]{1,2,3},
  new int[]{4,5,6},
  new int[]{7,8,9}
}));

2

첨부 , 14 바이트

Fold#/Diagonal

온라인으로 사용해보십시오! 로 설정 f하고로 전화 하십시오 f[function, array].

설명

이 두 가지 기능의 포크입니다 : Fold/Diagonal. 인수 f및의 a경우 다음과 같습니다.

Fold[f, (/Diagonal)[f, a]]

/을 함수에 모나드로 적용하면 마지막 인수에 적용되는 함수를 반환합니다. 따라서 이것은 다음과 같습니다.

Fold[f, Diagonal[a]]

이 기능 f은의 주 대각선 위로 기능 을 접습니다 a.


읽을 수있는 집에서 만든 언어
Adám

@ Adám; D 맞아!
코너 오브라이언

2

AWK , 77 바이트

func z(F,M,r){for(e=1;e<M[1]&&e<M[2];)r=@F(r==""?M[1,1]:r,M[++e,e])
return r}

온라인으로 사용해보십시오!

AWK함수형 프로그래밍을 할 수 있는지 궁금 했습니다. 나는 이것이 중요하다고 생각합니다.

은 "매트릭스"여분 필드 표준 결합 배열로 정의 M[1]=#rows하고 M[2]=#columns. 함수 이름은 @F(...)구문을 통해 평가되는 문자열로 전달됩니다 . 평가는 왼쪽에서 오른쪽으로 수행됩니다. 이 r매개 변수는 기존 r변수를 덮어 쓰지 않고 각 호출에 대해 다시 초기화하지 않아도 되는 자리 표시 자 입니다. 일반적으로에 이러한 자리 표시자를 지정하기 위해 추가 공간이 추가 AWK되지만 이것은 코드 골프이므로 모든 바이트가 중요합니다. :)

TIO 링크는 모든 테스트 사례를 구현합니다.


2

05AB1E , 15 10 바이트

Kevin Cruijssen이
제안한대로 새로운 내장 기능을 사용하여 오른쪽에서 왼쪽으로 접기 5 바이트 저장

Å\`[.g#I.V

설명

Å\기본 대각선을 푸는 새로운 내장 기능을 제외하고 는 이전 버전과 동일하게 작동합니다 .

온라인으로 사용해보십시오! 또는 테스트 스위트

구 버전

¬g£vyNè}[.g#I.V

온라인으로 사용해보십시오! 또는 테스트 스위트

설명

¬                 # get the head of the input (first row)
 g                # get its length (number of columns)
  £               # take that many rows from input
   v              # for each row_index, row (N,y) do:
    y             # push the row
     Nè           # get the nth element of the row
       }          # end loop
        [.g#      # loop until one value remain on the stack
            I.V   # run the input function

1
¬g£vyNè}[Å\`[이제 5 바이트를 절약 할 수 있습니다 .
Kevin Cruijssen

1

껍질 , 7 바이트

제출을 수정 해 주셔서 감사합니다 @Zgarb!

Ḟ₁§z!Tŀ

왼쪽에있는 직원, 온라인으로 사용해보십시오! (오른쪽 연관 버전을 단순히 교체 에 의해 F)

설명

불행히도 행렬의 대각선을 얻는 쉬운 방법은 없으므로 대부분의 바이트는 다음과 같습니다.

Ḟ₁§z!Tŀ  -- function ₁ is the function and matrix A implicit, example: 
  §      -- fork A
     T   -- | transpose A: [[1,4,7],[2,5,8],[3,6,9]]
      ŀ  -- | enumerate A: [1,2,3]
   z!    -- and zipWith index: [1,5,9]
Ḟ₁       -- right fold function

허, 반대 각
선용

2
@ Adám 나는 그것이 무한대 행렬의 대각 대각선을 계산할 수 있지만 대각선은 계산할 수 없기 때문이라고 가정합니다.
Martin Ender

1

SNOBOL4 (CSNOBOL4) , 86 바이트

T	I =1
	T =M<1,1>
I	I =I + 1
	T =EVAL(F '(T,M<I,I>)')	:S(I)F(RETURN)
	DEFINE('T(M,F)')

온라인으로 사용해보십시오!

를받는 함수 T(for TRACE) ARRAYF함수의 이름 인 문자열 을 정의합니다 . 왼쪽에서 오른쪽으로 접습니다.

간접 참조 ( $)를 사용하면 기능이 작동하지 않습니다. 따라서 EVAL문자열을 사용하고 이름에 전달하는 것이 SNOBOL에서 블랙 박스 기능을 얻는 유일한 방법 인 것 같습니다.

또한 배열을 정의하는 것은 상당히 고통 스럽습니다. 잘못된 배열 참조가 발생할 수 있기 때문에 FAILURE, 정사각형이 아닌 배열이 작품 - 경우 I입니다 범위를 벗어날 두 차원에서의 F(RETURN)힘은 기능으로 돌아갑니다.

편집하다:

아마도 기반으로 이 메타 포스트 , 나는 블랙 박스 기능이 있다고 가정 할 수있다 F라는 이름으로 정의되는 F75 바이트 (의 제거 사용이 드롭 것, EVAL그리고 ,F함수 정의에서). 그러나이 버전은 함수에 대한 참조를 전달하는 것에 더 가깝기 때문에 선호합니다.



1

tinylisp , 79 바이트

(load library
(d D(q((M)(i(h M)(c(h(h M))(D(map t(t M))))(
(q((F M)(foldl F(D M

마지막 줄은 함수와 행렬을 취하고 행렬 추적을 반환하는 명명되지 않은 람다 함수입니다. 추적은 왼쪽 연관입니다 (예 :) f(f(1,5),9). 온라인으로 사용해보십시오!

언 골프

대각선을 계산하는 도우미 함수를 정의합니다. 그런 다음 generalized-trace라이브러리 함수 주위의 작은 래퍼 일뿐 foldl입니다.

(load library)

(def diagonal
 (lambda (matrix)
  (if (head matrix)
   (cons
    (head (head matrix))
    (diagonal (map tail (tail matrix))))
   nil)))

(def generalized-trace
 (lambda (func matrix)
  (foldl func (diagonal matrix))))

대각선을 재귀 적으로 계산할 때 우리 (head matrix)는 진실한 지를 확인합니다 . 행렬에 행이 없으면 빈 목록 (nil)이되고 headnil은 nil-falsey가됩니다. 또는 행렬에 열이 없으면 첫 번째 행 (헤드)이 빈 목록 (없음)이됩니다. 그렇지 않으면 비어 있지 않은 첫 번째 행이 있으며 이는 진실입니다.

따라서 첫 번째 행이 없거나 비어 있으면 nil을 반환합니다. 그렇지 않은 경우 비어 있지 않은 첫 번째 행이 있으면 첫 번째 행의 (head (head matrix))첫 번째 요소 인 cons재귀 호출의 결과 앞에 붙입니다. 재귀 호출에 대한 논쟁 (map tail (tail matrix))은, 즉, 첫 번째 행을 제외한 모든 행을 취하고 각 행의 첫 번째 요소를 제외한 모든 행을 취합니다.



1

C # (Visual C # 컴파일러) , 72 69 60 바이트

m=>{try{for(int i=1;;m[0][0]=f(m[0][0],m[i][i++]));}catch{}}

온라인으로 사용해보십시오!

try/catch 대각선을 따라 가고 범위를 벗어날 때 종료함으로써 대각선에 정확하게 도달 할 수 있습니다.

Kevin Cruijssen이 지적한대로 블랙 박스 함수가 ​​특정 이름으로 존재한다고 가정 할 수 있기 때문에 3 바이트가 절약되었습니다 .

인수 수정을 통해 리턴하여 9 바이트를 절약했습니다 .

따라서, 기능 명칭으로 원하는 기능을 저장함으로써라고 f촉구 trace(matrix)하고, 그 결과가 저장된다 matrix[0][0].

또는 당신이 정말로 장황함을 좋아한다면

C # (Visual C # 컴파일러) , 97 + 13 = 110 78 69 바이트

(int[][]m)=>{try{for(int i=1;;m[0][0]=f(m[0][0],m[i][i++]));}catch{}}

온라인으로 사용해보십시오!

함수를 매개 변수로 사용하지 않아 System가져 오기 및 긴 Func일반 유형을 제거 할 수 있으므로 사전 정의 된 함수를 사용하여 32 바이트를 절약했습니다 .


try-catch를 사용하는 것이 좋습니다. Java 8 답변에서 7 바이트를 골프로 칠 수있었습니다 ( . : catch(Exception e)대신 사용해야 합니다) catch. 편집 : 아, 더 많은 바이트를 절약하기 위해 catch(Exception e)with finally를 바꿀 수있었습니다 . 다시 감사합니다. 나에게서 +1
케빈 크루이 센

(나는 확실히 자바 인수를 수정하는 의무가 있는지 여부에 대한 기억하지 않습니다하지만) 당신은 또한 나의 새로운 개선 혜택을 누릴 수 있습니다 @KevinCruijssen
카밀 Drakari

알려 줘서 고마워. Java에서는 가능하지만 더 이상 내부로 돌아 오지 않기 때문에 finally로 변경해야 함을 의미 catch(Exception e)합니다. 따라서 m->{try{for(int i=1;;m[0][0]=f(m[0][0],m[i][i++]));}catch(Exception e){}}현재 답변 m->{int r=m[0][0],i=1;try{for(;;)r=f(r,m[i][i++]);}finally{return r;}}(70 바이트) 에 비해 (73 바이트)가 불행히도 더 길지만 실제로 답변에 바이트를 저장하는 좋은 방법입니다! :) 너무 나빠서 한 번만 답을 +1 할 수 있습니다.
Kevin Cruijssen

1

자바 스크립트, 61 57 56 52 50 44 42 바이트

왼쪽에서 오른쪽으로 줄입니다. 함수를 변수에 할당 된 가정 f에 따라, 이 메타 포스트 씨 Xcoder 및 totallyhuman으로 내 관심을 가져왔다. 입력이 사전 정의 된 변수에 할당되었다고 가정하지 않을 수도 있다는 기존의 합의와 직접 모순되므로 동의 할 수는 없지만 지금은 몇 바이트를 절약 할 것입니다.

a=>a.map((y,z)=>x=(n=y[z])?z?f(x,n):n:x)|x

테스트 사례

g=
a=>a.map((y,z)=>x=(n=y[z])?z?f(x,n):n:x)|x
o.innerHTML=[[`f(x,y) = xy`,[[1,2,3],[4,5,6],[7,8,9]],(x,y)=>x*y,45],[`f(x,y) = x<sup>y</sup>`,[[1,2,3],[4,5,6],[7,8,9]],(x,y)=>x**y,1],[`f(x,y) = x-y`,[[4,5,6],[1,2,3]],(x,y)=>x-y,2],[`f(x,y) = <sup>(x+y)</sup>⁄<sub>2</sub>`,[[2,3,4],[5,6,7],[8,9,10]],(x,y)=>(x+y)/2,7],[`f(x,y) = x+2y`,[[1,2,3],[4,5,6],[7,8,9]],(x,y)=>x+2*y,29],[`f(x,y) = max(x,y)`,[[1,2,3],[4,5,6],[7,8,9]],(x,y)=>Math.max(x,y),9],[`f(x,y) = 2x`,[[1,2,3],[4,5,6],[7,8,9]],(x,y)=>2*x,4],[`f(x,y) = lcm(x,y)`,[[2,2,2],[2,2,3],[2,3,3],[4,4,4]],(x,y)=>-~[...Array(x*y).keys()].find(z=>!(++z%x|z%y)),6]].map(([a,b,c,d],e)=>`Test #${++e}:  ${a}\nMatrix:   ${JSON.stringify(b)}\nFunction: ${f=c}\nResult:   ${g(b)}\nExpected: ${d}`).join`\n\n`
<pre id=o></pre>


1

APL NARS, 20 바이트, 10 자

{⍺⍺/1 1⍉⍵}

테스트:

  f←{⍺⍺/1 1⍉⍵}
  ⎕←q←3 3⍴⍳10    
1 2 3
4 5 6
7 8 9
  ×f q
45
  *f q
1
  {⍺+2×⍵}f q
47
  ⌈f q
9
  {2×⍺+0×⍵}f q
2
  -f ⊃(4 5 6)(1 2 3)
2
  {(⍺+⍵)÷2}f ⊃(2 3 4)(5 6 7)(8 9 10)
5
  ∧f ⊃(2 2 2)(2 2 3)(2 3 3)(4 4 4)
6

잘 했어. 나는 당신이 이것에 스스로 도달한다고 생각하지만, 그것은 Outgolfer의 Erik의 원래 솔루션 과 동일합니다 .
Adám

0

젤리 , 5 바이트

좌에서 우로.

ŒDḢç/

온라인으로 사용해보십시오!

면책 조항 : 이것이 블랙 박스 기능에 허용되는 입력 방법인지 모르겠습니다. 이것은 함수가 위의 링크에서 구현되고 따라서 "이름이 붙은"(즉, 호출 가능) 것으로 가정 ç하지만 그렇지 않으면에 할당 할 방법이 없습니다 ç. 누군가가 Jelly + 블랙 박스 기능에 대해 더 많은 경험이 있다면, 나는 생각에 감사 할 것이다. 채팅에 시간을 보낸 후, 우리 는 실제로 사용하는 것이 좋을 것이라고 생각 했습니다 ç.


0

클로저, 30 바이트

#(reduce %2(map nth %(range)))

"왼쪽에서"줄입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.