테두리가없는 완벽한 사각형


16

주어진 n=m^2정수 m x m그리드를 경계로하지 않는 정수 목록을 반환합니다 1 to n.

n = 1 (m = 1)

그리드:

[1]

반환:

[]

n = 4 (m = 2)

그리드:

[1,2]
[3,4]

반환:

[]

n = 9 (m = 3)

그리드:

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

반환:

[5]

n = 16 (m = 4)

그리드:

[ 1, 2, 3, 4]
[ 5, 6, 7, 8]
[ 9,10,11,12]
[13,14,15,16]

반환:

[6,7,10,11]

높은 값의 경우 m, 대답은 좋은 시각화를 수행합니다.


규칙 :

  • m또는 n(where n = m*m) 중 하나를 선택할 수 있습니다 .
    • 에 복용하면 n당신은 더이 존재하는 정의되지 않은 동작이없는 것으로 허용 m을 위해 n(예 : 15).
    • n > 0, m > 0: 둘 다 정수 값이어야합니다.
  • 출력은 1D / 2D 배열, 행렬 또는 공백으로 구분 될 수 있습니다.
  • 출력은 최소에서 최대 순이어야합니다.
    • 행렬로 출력하는 경우 그리드에있는 것과 같아야합니다.
  • 이것은 , 가장 낮은 바이트 수의 승리입니다.

내 말에 완전한 결함이 있습니다. 잘못 읽었습니다.
개발

3
@DevelopingDeveloper hey man, 매번 nickle을 받았다면 맥주 한두를 살 수 있었을 것입니다.
Magic Octopus Urn

2D 배열로 출력하는 경우 하나의 빈 배열을 결과에 포함시킬 수 있습니까?
얽히고 설킨

답변:




6

옥타브 , 26 바이트

@(m)find((t=[0:m-2 0])'*t)

이 코드는 입력하는 익명 함수를 정의합니다 m (비어있을 수있는) 열 벡터 및 출력 .

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

설명

@(m)                          % Define anonymous function of m
          t=[0:m-2 0]         % Build row vector [0 1 2 ... m-2 0] and assign it
                              % to variable t
         (           )'       % Complex-conjugate transpose into a column vector
                       *t     % Matrix-multiply that column vector times the row
                              % vector t. This gives an m×m matrix with zeros in
                              % the border and nonzeros in the other entries.
    find(                )    % Linear indices of nonzero entries. The result is
                              % in increasing order

5

젤리 , 8 바이트

’Ṗ×+€ṖḊ€

m목록 (내부 행) 목록을 가져 와서 반환하는 모나드 링크 입니다.

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

어떻게?

’Ṗ×+€ṖḊ€ - Link m                    e.g. 5
’        - decrement                      4
 Ṗ       - pop (implicit range of input)  [1,2,3]
  ×      - multiply by m                  [5,10,15]
     Ṗ   - pop m                          [1,2,3,4]
   +€    - add €ach                       [[6,7,8,9],[11,12,13,14],[16,17,18,19]]
      Ḋ€ - dequeue €ach                   [[7,8,9],[12,13,14],[17,18,19]]

파이썬을하고 싶지 않다;)?
Magic Octopus Urn



4

R , 44 43 32 바이트

function(n)(x=n:(n^2-n))[x%%n>1]

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

벡터를 반환합니다.


깔끔한 출력 형식, 기본적으로 행렬이 R로 어떻게 출력됩니까?
Magic Octopus Urn

1
네, 그것은의 printA에 대한 기능 matrix.
주세페

1
다음에서 두 번째 m를 생략 할 수 있습니다 matrix(1:m^2,m,m,T).matrix(1:m^2,m,,T)
JAD

물론 @JAD입니다. 감사.
주세페

좋은 점은 scan () 사용에 대해 어떻게 생각하십니까? 2 바이트를 절약 할 수 있습니다. 온라인으로 사용해보십시오!
Robert Hacken


3

양성자 , 28 바이트

k=>filter(u=>1<u%k,k..k*~-k)

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

m 을 입력으로 취 합니다.

어떻게?

[k, k 2 -k) 의 정수를 필터링합니다. 로 나눈 값 이 1 보다 높은 나머지를 산출하는 단위로 필터링 합니다. 양단이 트리밍 된 것을 보장하기 때문에 처음 수율 0 과 마지막 수율 1 . 또한 유효한 정수는 연속적이기 때문에 더 높은 값을 반환하도록 보장됩니다.







2

MATL , 8 바이트

:G\1>&*f

입력은 m입니다. 출력은 숫자가 증가하는 순서입니다.

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

설명

4예를 들어 입력 을 고려하십시오 .

:     % Implicit input: m. Push range [1 2 ... m-1 m]
      % STACK: [1 2 3 4]
G\    % Modulo m, element-wise
      % STACK: [1 2 3 0]
1>    % Greater than 1, element-wise.
      % STACK: [0 1 1 0]
&*    % Matrix of pair-wise products
      % STACK: [0 0 0 0;
                0 1 1 0;
                0 1 1 0;
                0 0 0 0]
f     % Column vector of linear indices of nonzeros. Implicit display
      % STACK: [ 6;
                 7;
                10;
                11]


2

배치, 85 바이트

@for /l %%i in (3,1,%1)do @for /l %%j in (3,1,%1)do @cmd/cset/a(%%i-2)*%1+%%j-1&echo(

나는 쉽게 반복 할 수 없습니다 2m-1에서 나는 그렇게 루프 3m와 계산에 조정합니다.




2

apt, 12 바이트

배열 생성을 골프화 할 시간이 부족한 요소를 추출하는 데 너무 오랜 시간을 소비했습니다. 또한 이제 n입력으로 가져갈 수 있다는 것을 알게되어 거기에 무언가를 저장할 수 있습니다. 다시 방문하려면 ...

òUnU²)òU m¤c

시도 해봐


설명

                 :Implicit input of integer U=m     :e.g., 4
   U²            :U squared                         :16
 Un              :Minus U                           :12
ò                :Range [U,U**2-U]                  :[4,5,6,7,8,9,10,11,12]
      òU         :Partitions of length U            :[[4,5,6,7],[8,9,10,11],[12]]
         m       :Map
          ¤      :  Remove first 2 elements         :[[6,7],[10,11],[]]
           c     :Flatten                           :[6,7,10,11]

2

J , 23 19 바이트

FrownyFrog 덕분에 -4 바이트!

1 1}:@}.-@%:}:\1+i.

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

나의 원래 타락 :

J , 23 바이트

[:|:@}:@}.^:2-@%:]\1+i.

n을 입력으로 취하고 행렬을 반환합니다.

작동 원리

1+i. -리스트 생성 1..n

-@%: -n의 제곱근을 찾아 부정 (m)

]\ -목록에서 테이블 (매트릭스) mxm을 만듭니다.

^:2 -다음을 두 번 수행하십시오.

|:@}:@}. -첫 번째 줄을 떨어 뜨린 다음 마지막 줄을 버리고 조옮김

[: -포크를 덮다

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


1}:@}.-@%:}.@}:\1+i.
FrownyFrog

1
아니요1 1}:@}.-@%:}:\1+i.
FrownyFrog

@FrownyFrog-감사합니다! 나는 목록 왼쪽 논쟁에 대해 몰랐다}.
Galen Ivanov

2

껍질 , 9 바이트

‼ȯTthS↑CN

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

설명

‼ȯTthS↑CN  Implicit input, say m=4.
       CN  Cut the natural numbers by m: [[1,2,3,4],[5,6,7,8],[9,10,11,12],..
     S↑    Take first m lists: [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
‼ȯ         Do this twice:
    h       Remove last row,
   t        remove first row,
  T         transpose.
           Result is [[6,7],[10,11]]; print it implicitly.

2

apt , 14 바이트

²õ òU ÅkJ ®ÅkJ

취하고 m입력으로서

설명

 ²õ òU ÅkJ ®ÅkJ                                      
                // U = input                         | 3
U²              // U squared                         | 9
  õ             // Range [1...U²]                    | [1,2,3,4,5,6,7,8,9]
    òU          // Cut into slices of U              | [[1,2,3],[4,5,6],[7,8,9]]
       Å        // Remove the first item             | [[4,5,6],[7,8,9]]
        kJ      // Remove the last item              | [[4,5,6]]
           ®    // Map:                              |
            ÅkJ //   Remove the first and last items | 5     

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


해결 방법 n은 14 바이트입니다.

õ òU¬ ÅkJ ®ÅkJ

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


2

TI-BASIC, 44 43 바이트 (토큰 화)

DC 4D 3F CE 4D 6D 32 3F CF 3F DE 2A 08 09 3F D0 3F 4D 71 32 3F 23 4D 70 32 70 58 70 32 B1 58 83 72 11 2B 58 2B 30 2B 72 0D 71 31

읽을 수있는 버전 :

:Input M
:If M≤2
:Then
:Disp "{}
:Else
:M-2
:seq(M+2+X+2int(X/Ans),X,0,Ans²-1

TI-BASIC은 일반적으로 허용하지 않기 때문에 불행히도 빈 목록을 수동으로 인쇄해야했습니다. 경우 m이보다 더 주어졌다 코드 단지로 감소 될 수있는 29 바이트 .





1

Pyt , 13 바이트

ĐĐ⁻⁻ř*⇹⁻⁻ř⁺ɐ+

조나단 앨런 항의 젤리 답변

설명:

                    Implicit input (takes m)
ĐĐ                  Triplicate the input (push it on the stack two more times)
  ⁻⁻                Decrement top of stack twice
    ř               Push [1,2,...,m-2]
     *              Multiplies by m
      ⇹             Swaps top two items on stack
       ⁻⁻           Decrement (m-2 is now on top)
         ř          Push [1,2,...,m-2]
          ⁺         Increment each element by 1
           ɐ+       Add [2,3,...,m-1] to each element of [m,2m,...,m(m-2)]
                    Implicit print

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


1

파이썬, 111 바이트

def f(s):
 r=[]
 for i in[i[1:-1]for i in[[(j*s)+i+1 for i in range(s)]for j in range(s)][1:-1]]:r+=i
 return r

1

자바 (8) , 241 (183) 170 162 160 132 122 바이트

j->{if(j<3)return new int[1];int e[]=new int[j*j-4*j+4],x=0,i=0;for(;++i<=j*j;)if(!(i<j|i>j*j-j|i%j<2))e[x++]=i;return e;}

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

Java는 다소 "알 수없는"크기의 배열을 만들어야 할 때 매우 어렵습니다 (많은 바이트).

  • Magic Octopus Urn 덕분에 -8 바이트
  • Mr. Xcoder 덕분에 -28 바이트
  • Kevin Cruijssen 덕분에 -10 바이트

1
또한 Java는 코드 골프에 적합합니다. 그러나 당신은 분명히 그것에 능숙합니다. 이 언어는 Groovy기본적으로 속기 Java 라고 하는 언어를 확인해야합니다 .
매직 문어 Urn

2
if 문에서 추가 조건을 제거하여 132 바이트 및 다양한 트릭.
Mr. Xcoder

1
122 바이트 계속 Mr.Xcoder @ 를 조합하여 상기의 132 바이트의 버전 int의 변경 ||으로 |, 그리고 단일 라인 IF-본체 브래킷을 제거하는 단계를 포함한다.
케빈 크루이 ssen

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