이 줄은 정사각형입니까?


43

다음 조건이 충족되면 문자열은 정사각형으로 간주됩니다.

  • 각 줄의 문자 수는 동일합니다
  • 각 줄의 문자 수는 줄 수와 같습니다.

당신의 임무는 주어진 입력 문자열이 사각형인지 여부를 결정하는 프로그램이나 함수를 작성하는 것입니다.

LF, CR 또는 CRLF를 선택하여 입력을 구분해야 할 수도 있습니다.

줄 바꾸기 문자는 줄 길이의 일부로 간주되지 않습니다.

추가 줄로 계산되지 않는 입력 줄에 줄 바꿈이 있거나 없을 것을 요구할 수 있습니다.

입력은 문자열 또는 1D 문자 배열입니다. 문자열 목록이 아닙니다.

입력이 비어 있지 않고 공백을 포함하여 인쇄 가능한 ASCII 만 포함한다고 가정 할 수 있습니다.

정사각형 문자열의 경우 정확한 값을, 다른 문자열의 경우 잘못된 값을 출력해야합니다.

확실한 테스트 사례 :

푸
바
바즈
.
.에스.
.ss
.에스.
(s는 공간을 나타냄)
ss
ss
(s는 공간을 나타냄)
aaaaa
aaaaa
aaaaa
aaaaa
aaaaa

거짓 테스트 사례 :

..
.
.

.
....


....
4444
333
22
333
333
abc.def.ghi

일부 잘못된 경우 빈 줄이 추가됩니다.

이것은 -가장 적은 바이트가 이깁니다!


언어 디자인 의 가능한 복제본 : 2-D 패턴 일치 . 문제 # 5는이 질문과 같습니다.
mbomb007

1
@ mbomb007 다른 우승 기준이 중복되지 않는 것 같아? "골프 니스 (Golfiness)"는 투표 기준 중 하나 였지만 그 질문에 대한 답변이 여기에 대한 답변에 크게 반영되지는 않을 것이라고 생각합니다.
FryAmTheEggman

2
@ mbomb007이 질문은 다른 질문의 일부이지만 다른 질문은 해당 질문을 위해 특별히 작성된 언어로 제한되기 때문에이 질문을 공개적으로 투표하기로했습니다.
ETHproductions

2
@ mbomb007 : 중복 된 것은 아닙니다. 그 질문은 기존 언어로 대답하기보다는 질문에 대답 할 목적으로 언어를 디자인하도록 요구하기 때문입니다. 여기에 대한 답변 중 거의 없습니다.

1
@ mbomb007 : 도전 을 끝내고 기존 언어로 답변을 게시 할 곳을 사람들에게 제공 할 이유가 없습니다 . 나는 그것이 다른 주장을 끝내기위한 논거 일 수 있습니다 (이것은 더 제한적 인 버전이기 때문에). 나는 그것이 나쁜 주장으로 간주하고 둘 다 개방해야한다고 생각합니다.

답변:


19

Brachylog (2), 3 바이트

ṇẹṁ

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

전체 프로그램. 출력 true.truthy를 들어, false.falsey합니다.

설명

ṇẹṁ
ṇ     Split {standard input} into lines
 ẹ    Split {each line} into basic elements {in this case, characters}
  ṁ   Assert that the result is square

나는 그것이 추가되었을 때 빌트인 의 유용성에 대해 약간 회의적 이었지만, 그것이 그것이 도움이된다는 것을 정말로 부정 할 수는 없습니다 ...

Brachylog (2), 7 바이트

ṇẹ.\l~l

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

내장되지 않은 솔루션. 글을 쓰는 시점에서 여전히 다른 모든 항목을 이깁니다. 편집 : 확실히, 내가 쓰는 동안 길이가 긴 젤리 항목이 들어와 타임 스탬프 타이 브레이크를 통해 이겼습니다.

설명

ṇẹ.\l~l
ṇ         Split {standard input} into lines
 ẹ        Split {each line} into basic elements {in this case, characters}
   \l     Assert that the result is rectangular, and the number of columns
  .  ~l     is equal to the number of rows

1
작업에 맞는 도구!
Pavel

10
= "결과가 제곱임을 주장":(
Erik the Outgolfer

5
어설트 스퀘어를 작성하는 데 어려움을 겪고있는 한동안 도전이있었습니다 ( .\l~l다른 것들 중에서 입력이 직사각형 이라고 주장하는 백 슬래시 명령을 제외하고는 당시 와 비슷 했습니다) . 우리가 바꿀 경우에도 참고 .\l~l,이는 아직 여기에 짧은 프로그램은, 내가) 포스트에 그것을 추가 할 것입니다 그것을 생각 온다. 백 슬래시 명령이 수정되었지만 언어 작성자가 동시에 assert-square를 추가하기로 결정했습니다. 나는 "그것이 결코 다시는 오지 않을 것"이라고 생각하고있었습니다. 분명히 나는 ​​틀렸다.

2
@Phoenix : 언어의 버전 번호로, Brachylog v1에서는 작동하지 않습니다. 대부분의 사람들은 "Brachylog"라고 말하지만 (대부분의 사람들이 "Perl 5"가 아닌 "Perl"이라고 말하는 것처럼) 드물게 Brachylog v1을 사용하기 때문에 습관이 생겼습니다.

2
@iFreilicht 지금까지 다른 모든 골프 언어를 능가하기 때문에 나쁘다.
아웃 골퍼 에릭

21

파이썬 2 , 52 바이트

x=input().split('\n')
print{len(x)}==set(map(len,x))

온라인으로 사용해보십시오! 또는 모든 테스트 사례를 시도하십시오


4
나는 이것이 골프와 읽기가 가능하다는 사실을 좋아합니다.
jpmc26 2016

당신은 필요하지 않습니다 '\n'(공백과 탭이 입력에 없기 때문에) 그냥 비워 두십시오.
12431234123412341234123

@ 12431234123412341234123 아니요, 공백이 포함 된 정사각형 문자열에는 작동하지 않습니다 !!!
Mr. Xcoder 2016 년

@ Mr.Xcoder 공백과 함께 작동해야합니까? 내가 이해했듯이 입력에는 공백이 없습니다.
12431234123412341234123

스펙을 잘못 이해했습니다. 입력이 비어 있지 않고 인쇄 가능한 ASCII 만 포함한다고 가정 할 수 있습니다. , 공백 (``)은 인쇄 가능한 ASCII
Mr. Xcoder

14

자바 스크립트 (ES6), 46 45 바이트

s=>!(s=s.split`
`).some(x=>x.length-s.length)

설명

  1. 줄 바꿈에서 문자열을 배열로 나눕니다.
  2. 배열을 반복합니다.
  3. 각 줄의 길이에서 배열의 길이를 뺍니다.
  4. 임의의 행에 대해 0이 아닌 (즉, 진실) 값이 반환되면 문자열은 정사각형이 아닙니다.
  5. 루프의 결과를 무효화하여 true정사각형 이되도록 합니다 false.

시도 해봐

f=
s=>!(s=s.split`
`).some(x=>x.length-s.length)
oninput=_=>o.innerText=f(i.value)
o.innerText=f(i.value=`foo
bar
baz`)
<textarea id=i></textarea><pre id=o>


3
나는 당신이 바이트를 절약 할 수 있다고 생각합니다s=>!(s=s.split`\n`).some(x=>x.length-s.length)
ETHproductions

감사합니다, @ETHproductions. 나는 길이가 똑같기 !some때문에 끔찍한 일을 끝내는 끔찍한 습관이 every있습니다.
얽히고 설킨


9

하스켈, 38 34 바이트

l=length
(all=<<(.l).(==).l).lines

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

Pointfree 버전 f s = all ((==length (lines s)).length) (lines s), 즉 입력을 라인으로 분할하고 각 라인의 길이가 라인 수와 같은지 확인하십시오.

편집 : 4 바이트에 대한 @xnor 덕분입니다.


1
잘라 내기 all위해 사용할 수 있다고 생각 map합니다 and..
xnor

9

젤리 , 7 바이트

ỴµL;L€E

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

설명

Ỵµ       Split the input on newline and use as input in the second link     
  L      Get the number of list items
   ;     And append to that
    L€   A list with the legth of each list item
      E  Check to see if all items are equal.

1
TIO 링크에 줄 바꿈 문자가 없어야한다고 나타납니다.
Pavel

@Phoenix 고정 / 복귀 ...
steenbergh

이것은 모든 줄의 길이가 같은지 확인합니다-실제로 줄 바꿈 수를 전혀 고려하지 않습니다. E 원자에 도달하면 선 길이 목록이 표시됩니다.
분산

@Christian은 고정 및 단축되었습니다. 죄송합니다 '혼란하지만, 나는 해결책을 가지고 난 후 뭔가 잘못되었다고 생각하고 그것을 골프하려고했습니다 ..
steenbergh

9

Japt , 9 바이트

=Ur.Q)¥Uy

온라인으로 테스트하십시오!

설명

 =Ur.Q)¥ Uy
U=Ur.Q)==Uy
             // Implicit: U = input string, Q = quotation mark
U=    )      // Set U to
  Ur.Q       //   U with each non-newline (/./g) replaced with a quotation mark.
       ==Uy  // Return U == U transposed. U is padded to a rectangle with spaces before
             // transposing; if U was not a rectangle before, or the sides are not of
             // equal length, the result will not be the same as U.
             // Implicit: output result of last expression

이 챌린지가 게시 된 직후 구현 된 일부 기능을 사용하면 6 바이트가 될 수 있습니다.

r.Q
¥y

온라인으로 테스트하십시오!

설명

       // Implicit: U = input string
r.Q    // Replace each non-newline (/./g) in U with a quotation mark.
       // Newline: set U to the result.
¥      // Return U ==
 y     //   U transposed.
       // Implicit: output result of last expression

세상에서 어떻게 그렇게 빨리?
전적으로 인간

@ totallyhuman 나는 질문이 게시 된 순간에 질문을 보았고 알고리즘을 만드는 데 2 ​​분이 걸렸습니다. 그 후 그것은 단지 구현하고 게시했습니다. (또한 하하로 돌아갈 것들이 있습니다)
ETHproductions

니스 :) 나는 y해결책 이라는 것을 알았지 만 내 바이트는 몇 바이트 더 나왔습니다.
얽히고 설킨

" 이 챌린지가 게시 된 직후에 구현 된 일부 기능 사용 "-이제 이를 해당 기능으로 게시 할 수 있습니다.
얽히고 설킨

8

05AB1E , 10 8 바이트

¶¡€gDgQP

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

-2 라일리 덕분에 이것은 기본적으로 그의 대답입니다.

Code       # Explanation                  | Truthy Example          | Falsy Example
-----------#------------------------------+-------------------------+--------------
¶¡         # Split on newlines            | [['aaa','aaa','aaa']]   | [['aa']]
  €g       # Get length of each           | [[3,3,3]]               | [[2]]
    D      # Dupe                         | [[3,3,3],[3,3,3]]       | [[2],[2]]
     g     # Get length                   | [[3,3,3],3]             | [[2],1]
      Q    # Check equality               | [[1,1,1]]               | [[0]]
       P   # Take product                 | 1                       | 0

@ Riley ahhh, 멋진 캐치, 내 원래 아이디어는 당신이 가지고 있지만 약간 다른 라인을 따라 더 많았습니다. 두 번 더 반복했지만 수학 오류가 발생하지 않았습니다.
매직 문어 Urn

"헤더"가 입력에 유효한 형식이라고 생각하지 않습니다.
Pavel

@Phoenix은 더 나은?
매직 문어 Urn

1
다음 과 같이 세 개의 따옴표로 입력 할 수도 있습니다 .
Adnan

1
당신이 각각의 길이를 먼저 얻는다면 피할 수 있습니다 s. 이처럼¶¡€gDgQP
라일리

7

망막 , 33 31 바이트

.
.
^(.(.)*)(?<-2>¶\1)*$(?(2).)

온라인으로 사용해보십시오! 설명 : 첫 번째 단계는 인쇄 가능한 모든 ASCII를 동일한 문자로 변경하여 쉽게 일치시킬 수 있도록합니다. (이것은없이 수행 될 수 있지만 이것은 코드 도전이 아니라 코드 골프입니다.) 그런 다음 두 번째 단계는 첫 번째 줄에서 하나 이상의 문자와 일치합니다. 그러나 첫 번째 행의 각 추가 문자에 대해 선택적으로 개행과 첫 번째 행의 사본이 일치합니다. 표현식의 마지막 부분으로 인해 행보다 많은 열이 있으면 일치가 실패합니다.


불행히도, 이것은이 테스트 케이스에 대해 true를 출력합니다 .
Kritixi Lithos

@KritixiLithos 제출에는 입력에 후행 줄 바꿈이 필요하다고 생각합니다.
Pavel

또한 \S\n;첫 번째 줄 대신 사용 하면 1 바이트가 절약 된다고 생각합니다.
Kritixi Lithos

@KritixiLithos가 실제로 교체 .와 함께 .이 있지만, 감사를 저장합니다.
Neil

@Neil 정말 영리합니다!
Kritixi Lithos

6

껍질 , 6 바이트

S≡T'a¶

문자열 및 인쇄 중 하나를 취 1또는 0. 온라인으로 사용해보십시오! 첫 번째 줄은 테스트 사례를 반복합니다. 단일 값으로 테스트하려면 제거하십시오.

설명

Husk는 나 자신과 Leo가 만든 새로운 기능성 골프 언어입니다 . 많은 기능이 빠져 있으며 개발이 진행 중입니다. 주요 특징은 고차 함수에 과부하를 걸 수있는 견고한 유형 시스템입니다.

높은 수준에서 프로그램은 다음과 같이 작동합니다.

S≡T'a¶  Define a function:
     ¶  split on newlines,
  T'a   transpose and pad to rectangle using character 'a',
 ≡      check if this has the same shape as
S       the split input.

이 함수는 실제로 두 배열의 모양이 동일하고 사실 요소의 분포가 같은지 확인합니다. Husk에서 널 바이트를 제외한 모든 문자는 사실이며 입력에서 발생하지 않습니다. 또한, S는 IS S-콤비 , 입력이 개 여기 기능으로 취하는 함수 T'a, 반환지도하는 새로운 기능 x을을 ≡(x)(T'a x). 의 결과 S는로 구성되며 해당 함수는 입력에 암시 적으로 적용됩니다.

Husk S는 다음 기능에 적용 해야 하지만 왼쪽의 기능으로 구성되어야 한다는 것을 어떻게 알 수 있습니까? 단순함 : 모든 해석을 시도하고 유형이 적합한 해석을 선택합니다. 자세한 내용은 Husk 설명서에 자세히 설명되어 있습니다 .


5

순수 배쉬 (유틸리티 없음), 55

mapfile -t a
for l in ${a[@]};{
((c+=${#l}^${#a[@]}))
}
  • mapfile 입력을 배열로 읽습니다. a
  • 그런 다음 배열의 요소 수는 각 줄 길이와 합하여 XOR됩니다. 완벽한 제곱의 경우 각 XOR 결과 (및 합)는 0이됩니다. 다른 경우 결과는> 0이됩니다.

이것의 반대 의미는 쉘 리턴 코드 (으로 검사 echo $?) 로 반환됩니다 .-완전 제곱은 1, 다른 것은 0입니다.

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

온라인으로 시도하십시오 (거짓) .


eval-escape-expansion hell, 78을 사용한 이전 답변 :

mapfile -t a
echo $[0$(eval eval echo +\\$\{#a[{0..$[${#a[@]}-1]}]}^${#a[@]})]

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

온라인으로 시도하십시오 (거짓) .


5

펄 6 , 27 바이트

{.lines==all .lines».comb}

입력 문자열의 줄 수가 각 줄의 문자 수와 같은지 테스트합니다.


이것은 개행 문자를 무시합니까?
Khaled.K

예, .lines메소드 에서 개행을 리턴하지 않습니다 .
Sean

4

Pyth, 7 바이트

CImL1.z

여기 사용해보십시오

후행 줄 바꿈이 필요하지 않습니다. 입력을 1의 2D 배열로 대체합니다. 여기서 1은 원래 입력의 문자를 나타냅니다. 그런 다음 배열을 바꾼 후 (열이 행으로 바)) 배열이 변경되지 않았는지 확인합니다. 이러한 상황에서는 사각형 만 반환됩니다.


4

자바 (오픈 JDK 8) ,96 91 90 87 바이트

@KevinCruijssen 덕분에 -5 바이트 @TheLethalCoder 덕분에
-1 바이트
@ OlivierGrégoire 덕분에 -2 바이트

a->java.util.Arrays.stream(a.split("\n")).allMatch(x->x.length()==a.split("\n").length)

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


1
당신의 공간을 제거 할 수 있습니다 String[]s당신은 제거 할 수 있습니다 ,0에서 .split("\\n");-3 바이트. 그리고 세미콜론 / ;끝에는 계산할 필요가 없으므로 다른 -1이됩니다. 아, 당신은 내가 두려워 java.util.앞에 앞에 포함해야합니다 Arrays. 가져 오기 / 사용도 바이트 수의 일부입니다.
케빈 크루이 센

1
를 포함하는 것을 잊었으므로 java.util.이와 같은 정규 for-loop는 for(String x:s)if(x.length()!=s.length)return 0>1;return 1>0;보다 짧은 것 같습니다 return java.util.Arrays.stream(s).anyMatch(l->l.length()!=s.length);.
케빈 크루이 센

2
그냥 \n아닌가요?
TheLethalCoder 2018 년

1
반복하는 a.split("\n")것이 실제로 더 짧습니다! a->java.util.Arrays.stream(a.split("\n")).allMatch(x->x.length()==a.split("\n").length)
Olivier Grégoire

2
흠 ... leng와 사이에 더 많은 것이 th()있습니다. 따라서 분명히 60 번째 문자 다음에 20 문자마다 나타납니다.
Olivier Grégoire



3

MATL , 14 12 바이트

10H&XXot&n=h

입력 문자열은 문자열 연결 ( [...])과 10LF를 나타내는 코드 포인트 를 사용하여 정의됩니다 . 예를 들어, ['aaa' 10 'bb']MATL에서는 'aaa'코드 포인트 10가 string으로 연결된 문자와 연결된 문자열로 해석됩니다 'bb'.

출력은 비어 있지 않은 숫자 벡터이다 truthy 경우와 모든 항목이 0이 아닌 경우에만.

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

설명

입력을 고려하십시오 ['4444' 10 '333' 10 '22'].

10H   % Push 10 (code point of LF). Push 2
      % STACK: 10, 2
&XX   % Regexp with three arguments. First argument is implicit input (string);
      % second is 2, which indicates that we want to split the input; third is
      % 10, which is the character to split on. The result is a cell array of
      % matched strings
      % STACK: {'4444', '333', '22'}
o     % Concatenate into a numeric 2D array of code points, right-padding with
      % zeros if needed
      % STACK: [52 52 52 52; 51 51 51 0; 50 50 0 0]
t&n   % Duplicate. Push number of rows and number of columns
      % STACK: [52 52 52 52; 51 51 51 0; 50 50 0 0], 3, 4
=     % Are they equal?
      % STACK: [52 52 52 52; 51 51 51 0; 50 50 0 0], 0
h     % Concatenate into a row vector (in column-major order). Implicit display
      % STACK: [52 51 50 52 51 50 52 51 0 52 0 0 0]

3

R, 35 바이트

all(nchar(x<-scan(,""))==length(x))

stdin에서 입력을받습니다. 각 줄의 문자 수가 총 줄 수와 같은지 확인합니다. 반환 TRUE하거나 FALSE적절하게.


입력을 따옴표로 묶어야합니다. 그렇지 않으면 각 줄의 공백이 끊어 질 수 있습니다.
Giuseppe

2

자바 스크립트 (ES6), 48 바이트

s=>(a=s.split`
`,a.every(l=>l.length==a.length))



2

Pyth, 12 10 바이트

!fnl.zlT.z

@FryAmTheEggman 덕분에 2 바이트를 절약했습니다.

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

설명

!fnl.zlT.z
 f     T.z     Filter lines of the input
  nl.zl        whose length is not the number of lines
!              and return whether there are no such lines.

2

QBIC , 43 바이트

{_?~_lA||h=h+1┘g=g+_lA|~g%_lA||_Xp]\_xg/h=h

저는 QBasic 파생 상품이이 도전에 얼마나 빨리 도달했는지에 만족합니다.

설명:

{_?       DO infinitely: ask the user for input, store as A$
~    |    IF
 _lA|       The length of A$   (implicitly <> 0)
h=h+1     Add 1 to our line counter
┘         (syntactic linebreak)
g=g+_lA|  Add the length of this line to the running total of line lengths
~      |  IF
 g%_lA|     The length of the running total modulo the length of the last string
            yields anything but 0, there is a discrepancy between earlier line
            lengths and this one.
_Xp]      THEN QUIT, printing 0, end IF
\         ELSE (refers to the LEN(A$), user didn't input anything.
_xg/h=h   QUIT (the inf. loop) printing -1 if the root of the chars is the row count
            or 0 if not.

2

Pyth, 7 바이트

qCC.z.z

데모

잘라낸 입력을 두 번 바꾸고 결과가 원본과 동일한 지 확인하십시오.


2

루비, 50 바이트

s=$<.read.split $/,-1;p [s.size]==s.map(&:size)|[]

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

설명

  1. 줄 바꿈에서 입력을 배열로 분할합니다.
  2. 이 배열의 크기 만 포함하는 배열이이 배열에있는 모든 요소의 모든 uniq (빈 배열과 결합 된 집합) 크기를 포함하는 배열과 같다고 가정하십시오.

1
.split($/,-1);->.split $/,-1;
Christopher Lates 님이 다음

lines대신에 read다음 을 사용하여 비용을 절약하십시오 split(그러나 size줄에 후행 줄 바꿈이 포함되어 있으므로 1을 추가해야합니다 )
GB


1

클로저, 58 바이트

#(let[s(re-seq #"[^\n]+"%)c count](apply =(c s)(map c s)))

더 마술적인 것을 기대하는 후행 줄 바꿈이 필요합니다.


1

APL (Dyalog) , 17 바이트

⎕ML←3많은 시스템에서 기본값이 필요합니다 . CR을 사용합니다.

↓∘⎕FMT≡⎕TC[2]∘≠⊂⊢

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

↓∘⎕FMT 분할 선 F 또는 m a t ted-in-a-square 인수

 와 동일

⎕TC[2]∘≠ 줄 바꿈이 아닌 그룹으로 * 문자

 분할

 논의?

*리스트의 두 번째 요소 T erminal C 조작부 캐릭터.


버전 16.0에서, 하나는 쓸 수 ↓∘⎕FMT≡⎕TC[3]∘≠⊆⊢와 함께 ⎕ML←1.


궁금 ⎕ML해요?
Pavel

1
@Phoenix에서 Dyalog APL과 APL +, M igration의 L의 레벨 레벨은 IBM의 APL2의 방향 변증 운동 거친 척도이다. 숫자가 높을수록 언어가 더 APL2와 비슷해집니다. APL2에서 다른 APL로 이주 ⎕ML하는 사람들 은 높게 달리는 경향이 있지만 다른 APL 로 시작한 사람들은 낮게 달리는 경향이 있습니다 ⎕ML.
Adám

1

PowerShell, 64 바이트

다른 비 골프 언어 답변과 동일한 (분할, 줄 길이, 줄 수) 접근 방식이지만 멋진 map ()에 해당하는 것은 없으므로 끝에 줄에 태그가 지정된 줄 수를 가진 줄 길이의 배열입니다. 그룹화됩니다. 사각형이 나오고 사각형이 3,3,3,3 -> 1 group, all line lengths and line count were equal아닌 사각형이 나옵니다 3,2,1 -> 3 groups.

$f={@(@(($L="$args"-split"`n")|% le*)+$L.Count|group).Count-eq1}

줄 바꿈이없는 개행 Linux 스타일의 엔딩이 필요합니다. 예 :

$Ttests = @(@'
foo
bar
baz
'@,
'.',
@'
aaaaa
aaaaa
aaaaa
aaaaa
aaaaa
'@
)
$Ttests = $Ttests | foreach {$_ -replace "`r"}

$Ttests | % { & $f $_ }

(그리고 당신은 잘못된 테스트에 대해 비슷한 것을 할 수 있지만 더 많은 것이 있기 때문에 여기에 두지 않을 것입니다). @입력이 단일 일 때 두 개의 심볼이 필요합니다. '.'그렇지 않으면 분리하면 하나의 문자열 배열을 만들지 않고 하나의 문자열을 만든 다음 배열 연결이 출력 1,1을 출력 하지 않습니다2 .

모든 문자를 'a'로 바꾸고 1에서 입력 길이까지의 모든 사각형 'a'를 무차별 화하고 입력과 일치하는지 확인하는 것이 더 짧기를 바랍니다. param ()과 .Length와 -join 및 -replace를 지나면 81 바이트에서 훨씬 더 길어집니다.

$f={param($s)!!(1..$s.Length|?{,('a'*$_)*$_-join"`n"-eq($s-replace"[^`n]",'a')})}

1

Grime , 11 바이트

e`.|_./+/.+

1정사각형 및 0비 정사각형을 인쇄 합니다 . 온라인으로 사용해보십시오!

설명

자세한 설명은 Grime 튜토리얼 페이지 에서 찾을 수 있으며 여기에는이 정확한 프로그램이 포함되어 있습니다.

e`.|_./+/.+
e`            Match entire input against pattern:
  .           A single character
   |          OR
    _         a recursive match of this pattern
     ./+      with one column of characters on its right
        /     and below that
         .+   one row of characters.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.