더 작은 "H"에서 "H"만들기


73

도전

integer가 주어지면 size다음을 수행 하는 함수 또는 프로그램을 작성하십시오 .

경우 size1과 동일 출력

H H
HHH
H H

경우 size1 출력보다 더 큰

X X
XXX
X X

X프로그램 / 기능의 출력은 어디에 있습니까?size - 1

(원하는 경우 0답변에 지정 하는 한 기본 사례가에 해당 할 수 있습니다. )

다음과 같은 출력 형식 중 하나를 사용하는 것이 더 편리합니다.

  • H및에 해당하는 두 개의 고유 문자가있는 필수 구조의 문자열space

  • 필요한 구조를 갖는 2 차원 배열 H이며space

  • 두 고유 값에 대응하는 각 캐릭터의 출력의 한 라인으로 배열 / 문자열리스트, Hspace

각 줄에 일정한 양의 선행 공간이있는 한 선행 공간이 허용됩니다. 두 개의 고유 한 출력 문자는 다른 한 원하는대로 선택할 수 있습니다.

코드가 반환하는 출력 형식을 지정하십시오.

테스트 사례

1

H H
HHH
H H

2

H H   H H
HHH   HHH
H H   H H
H HH HH H
HHHHHHHHH
H HH HH H
H H   H H
HHH   HHH
H H   H H

3

H H   H H         H H   H H
HHH   HHH         HHH   HHH
H H   H H         H H   H H
H HH HH H         H HH HH H
HHHHHHHHH         HHHHHHHHH
H HH HH H         H HH HH H
H H   H H         H H   H H
HHH   HHH         HHH   HHH
H H   H H         H H   H H
H H   H HH H   H HH H   H H
HHH   HHHHHH   HHHHHH   HHH
H H   H HH H   H HH H   H H
H HH HH HH HH HH HH HH HH H
HHHHHHHHHHHHHHHHHHHHHHHHHHH
H HH HH HH HH HH HH HH HH H
H H   H HH H   H HH H   H H
HHH   HHHHHH   HHHHHH   HHH
H H   H HH H   H HH H   H H
H H   H H         H H   H H
HHH   HHH         HHH   HHH
H H   H H         H H   H H
H HH HH H         H HH HH H
HHHHHHHHH         HHHHHHHHH
H HH HH H         H HH HH H
H H   H H         H H   H H
HHH   HHH         HHH   HHH
H H   H H         H H   H H

이것은 이므로 각 언어의 최저 바이트 수가 이깁니다!

code-golf  ascii-art  fractal  code-golf  code-golf  string  code-golf  string  matrix  code-golf  graph-theory  maze  binary-matrix  code-golf  kolmogorov-complexity  random  code-challenge  metagolf  test-battery  brain-flak  text-processing  code-golf  matrix  code-golf  number-theory  primes  code-golf  string  matrix  code-golf  binary  bitwise  code-golf  number  factorial  floating-point  code-golf  number  sequence  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-golf  string  code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

4
아마 숯에 딱 .. lol. PPCG에 오신 것을 환영합니다! : D
HyperNeutrino

10
PPCG에 오신 것을 환영합니다. 좋은 첫 도전!
Adám

0 기반 크기를 사용할 수 있습니까?
Adám


1
나는 이것을 "Sierpinski H"라고
불렀습니다

답변:


28

Wolfram Language (Mathematica) , 46 바이트

Nest[ArrayFlatten@{r={#,0,#},{#,#,#},r}&,1,#]&

0s와 1s 의 2 차원 배열을 반환합니다 .

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

Nest[ArrayFlatten@{r={#,0,#},{#,#,#},r}&,1,#]&[3]//MatrixForm

Nest[ArrayFlatten@{r={#,0,#},{#,#,#},r}&,1,#]&[5]//Image


17
물론 Mathematica에는 재귀 중첩 배열에 대한 내장 기능이 있습니다. +1
HyperNeutrino

1
@HyperNeutrino 잘 분명히
ASCII 전용

7
@HyperNeutrino 이것이 어떻게 내장으로 간주됩니까? 그냥 Nest(반복) 함수를 여러 번. 다른 제출물과 마찬가지로 (Jelly?) The ArrayFlattenis ... well, built-in, 그러나이 Flatten[#,{{1,3},{2,4}}]경우 와 비슷하게 동작 합니다. (테스트하지 않았 음)
user202729

6
이를 위해 내장되어 있지만 더 길다. Mathematica는 긴 기능 명을 가지고 있습니다.
alephalpha

1
업고 트 도전 에서 승리했을 어떻게 할 수 없었 습니까?
ojdo

21

캔버스 , 14 12 바이트

H;[⌐⌐∔*×∔;3*+

여기 사용해보십시오!

설명:
Code    |Instruction                                                         |Stack
--------+--------------------------------------------------------------------+-------------------------
        |Push input to stack (implicit)                                      |I
H       |Push "H" to stack                                                   |I,"H"
;      |Swap the top two stack items                                        |"H",I
[      |The following ToS (input) times:                                    |X
    ⌐⌐  |Duplicate ToS (result from last loop ("H" if first loop)) four times|X,X,X,X,X
    ∔   |Join vertically                                                     |X,X,X,X\nX
    ×   |Prepend                                                             |X,X,XX\nX
    ∔   |Join vertically                                                     |X,X\nXX\nX
    ;  |Swap top two stack items                                            |X\nXX\nX,X
    3*|Repeat three times vertically                                       |X\nXX\nX,X\nX\nX
    +  |Join horizontally                                                   |X<space>X\nXXX\nX<space>X
        |End loop (implicit)                                                 |X
        |Print ToS (implicit)                                                |

여기서 I입력 인, X이전 반복 (첫 번째 루프 "H")에 의해 생성 된 패턴이고 <space>, 패턴의 첫 번째 및 세 번째 행의 빈 공간에 의해 내재적으로 첨가 .

dzaima 덕분에 -2 바이트 !


놀랍게도 짧은 답변 : O
NL628

19

MATL , 12 11 바이트

t:"[ACA]BX*

입력 주어 n,이 포함 된 매트릭스를 출력 0하고n .

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

이것을 문자 행렬 H과 공백 으로 변환하려면 g72*c헤더에 추가 하십시오. 온라인으로 시도하십시오!

또는 ]1YC행렬을 그래픽으로 표시하려면 추가 하십시오. 에서 사용해보십시오MATL Online !

설명

t          % Input (implicit): n. Duplicate
:          % Range. Gives the array [ 1 2 ... n]
"          % For each (that is, do n times)
  [ACA]    %   Push the array [5 7 5]
  B        %   Convert to binary. Gives the 3×3 matrix [1 0 1; 1 1 1; 1 0 1]
  X*       %   Kronecker product
           % End (implicit). Display (implicit)

16

Stax , 16 15 바이트

╛c_mê║6{│◙ÖmπV"

실행 및 디버깅

이것은 주석이있는 프로그램의 ASCII 표현입니다. 이 프로그램은 H를 옆으로 쌓은 다음 끝에 한 번 조바꿈합니다.

'H]                 ["H"]
   {         },*    repeat block specified number of times
    c               copy the matrix
     {3*m           triplicate each row
         |S         surround; prepend and append like b + a + b
           |C       horizontally center rows with spaces
                M   transpose back to original orientation
                 m  output each row

보너스 14 바이트 프로그램 -입력을 출력 문자로 사용합니다. 이론적으로 이것은 2 자리수가 있기 때문에 10에서 올바른 모양을 생성하지 않지만 실행하려고하면 브라우저가 충돌합니다.





9

APL (Dyalog Classic) , 14 바이트

×/¨∘.≥⍨2|,⍳⎕⍴3

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

평가 된 입력 n

,⍳⎕⍴3 0 1 2의 요소를 가진 모든 n- 튜플

2| 모드 2

×/¨∘.≥⍨ 모든 쌍의 튜플 a와 b를 비교하여 행렬을 만듭니다 .a의 모든 요소가 b의 해당 요소보다 ≥ 인 경우 a 1이고, 그렇지 않으면 0입니다.




8

자바 (OpenJDK 9) , 135 바이트

n->{n+=Math.pow(3,n)-n;int s=1,H[][]=new int[n][n],x,y;for(;s<n;s*=3)for(x=n;x-->0;)for(y=n;y-->0;)H[x][y]|=~(x/s%3)&y/s%3&1;return H;}

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

int[][]with 및 for with 0를 반환합니다 . 이것은 실제로 " piling"대신에 "의 벽"을 조각 합니다.H1spaceHH

설명

n->{                        // An int to int[][] lambda function
  n+=Math.pow(3,n)-n;       //  change n to 3^n, through +=...-n to avoid an explicit cast
  int s=1,                  //  size of the carvings.
      H[][]=new int[n][n],  //  the 2D array to return, filled with 0s
      x,                    //  counter for the 2D array
      y;                    //  counter for the 2D array
  for(;s<n;s*=3)            //  for each size
    for(x=n;x-->0;)         //   for each row
      for(y=n;y-->0;)       //    for each column
        H[x][y] |=          //     assign 1 to a cell of the array if...
           ~(x/s%3)         //      it is located in the "holes" of the H
          &y/s%3            //
          &1;               //      
  return H;                 //  return the array
}                           // end the lambda

Math.pow에 대한 정적 가져 오기를 추가하여 5 바이트 절약
Selim

4
@Selim 바이트 수에 정적 가져 오기가 필요합니다. 그래서 나는 19 바이트를 잃을 것입니다.
Olivier Grégoire




6

하스켈, 73 67 64 55 바이트

g#f=g<>f<>g
w=map.(id#)
(iterate(w(>>" ")#w id)["H"]!!)

에서 Prelude내보내기 때문에 최신 버전에서만 작동합니다 . TIO에서 실행하려면 다음과 같이 가져 오기를 추가하십시오. 온라인으로 사용해보십시오!<>Data.Semigroup

g#f=              -- function # takes two functions g and f and a list s
                  -- and returns
   g <> f <> g    -- g(s), followed by f(s) and another g(s)

w=                -- w takes a function and a list of lists
                  -- (both as unnamed parameters, because of pointfree style,
                  -- so let's call them f and l)
  map.(id#)       -- return map(id#f)l, i.e. apply (id#f) to every element of l

  w(>>" ")#w id   -- this partial application of # is a function that
                  -- takes the missing list (here a list of lists)
                  -- remember: (>>" ") is the function that replaces every element
                  -- of a list with a single space

iterate(   )["H"] -- starting with a singleton list of the string "H"
                  -- which itself is a singleton list of the char 'H'
                  -- repeatedly apply the above function
              !!  -- and pick the nth iteration



Example for ["H H", "HHH", "H H"], i.e.

   H H
   HHH
   H H

call the iterated function:
                    ( w(>>" ")         # w id       ) ["H H","HHH","H H"]

expand w:           ( map(id#(>>" "))  # map(id#id) ) ["H H","HHH","H H"]

expand outermost #: map(id#(>>" "))["H H","HHH","H H"] ++
                    map(id#id)     ["H H","HHH","H H"] ++
                    map(id#(>>" "))["H H","HHH","H H"]

expand map:         [(id#(>>" "))"H H",   (id#(>>" "))"HHH",   (id#(>>" "))"H H"] ++
                    [(id#id)     "H H",   (id#id)     "HHH",   (id#id)     "H H"] ++
                    [(id#(>>" "))"H H",   (id#(>>" "))"HHH",   (id#(>>" "))"H H"]

expand other #:     ["H H"++"   "++"H H", "HHH"++"   "++"HHH", "H H"++"   "++"H H"] ++
                    ["H H"++"H H"++"H H", "HHH"++"HHH"++"HHH", "H H"++"H H"++"H H"] ++
                    ["H H"++"   "++"H H", "HHH"++"   "++"HHH", "H H"++"   "++"H H"]

collaps ++:         ["H H   H H", "HHH   HHH", "H H   H H",
                     "H HH HH H", "HHHHHHHHH", "H HH HH H",
                     "H H   H H", "HHH   HHH", "H H   H H"]

which is printed line by line: 

  H H   H H
  HHH   HHH
  H H   H H
  H HH HH H
  HHHHHHHHH
  H HH HH H
  H H   H H
  HHH   HHH
  H H   H H

편집 : @ Potato44 덕분에 -9 바이트.


3
GHC 8.4를 사용 (#)하는 g#f=g<>f<>g경우 골프장 까지 내려갈 수 있습니다. 이것은 Semigroup현재 서곡에 있기 때문 입니다.
감자 44

@ Potato44 : 이것이 많은 도전에 도움이 될 것이라고 확신합니다. 감사!
nimi

5

펄 5 , 46 44 43 41 40 바이트

1 기반 계산. 사용 01대한 H공간, 선도적있다 1(공간)

say//,map/$'/^1,@;for@;=glob"{A,.,A}"x<>

mtve의 고전적인 아이디어를 기반으로합니다.

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


1
n ≥ 3에 대한 출력이 정확하지 않습니다.
primo

@primo 프로그램은 정확하지만 TIO는 UTF-8 버전의 특수 문자를 사용합니다. 대신 이스케이프를 사용하도록 링크를 수정했지만 실제 문자를 사용하는 경우에도 프로그램은 여전히 ​​작동합니다
Ton Hospel

나는 왜 \321필요한지 전혀 모른다 . 어떤 인물도 효과가있는 것 같다. //$'도 바꿀 수 //g$`,하지만 난 그것을 개선에 이르게 모르겠어요.
primo

1
@primo 감사합니다! 나는 여전히 다른 mtve 솔루션에서 파생 된 코드에서 일하고 있었으며 (여전히 프랙탈 패턴을 생성하는 데 사용되는) \321비트 보완이었습니다 .. 그러나 비트 보완 요소를 삭제 했으므로 더 이상 필요하지 않습니다. 내가 사용 //g하고 $는`그래서 쉽게 명령 줄의 코드를 테스트 할 수 있습니다 ( //그리고 $'내가는 얻은 바이트 공백으로 낭비되거나 볼 수있는 이득으로 이어질하지 않습니다 !다시)
톤 Hospel

5

Vim- 66 56 54 바이트

A @ c H esc " r d ^ q c { ctrl-v } " a y g v r space g v d " a P P " a P V G " b y P g v ctrl-v $ d " a P . . G " b p q @ r

입력은 버퍼에서 숫자로 사용됩니다.


vim이 설치되어 있다고 가정하면 bash 프롬프트에서 시작하여 무엇을 입력해야합니까?
Fabien

vim을 입력하고 Enter 키를 누른 다음 버퍼에 입력 번호 (예 : 3)를 입력 한 다음 일반 모드에서 포스트의 키 시퀀스를 누르십시오.
Chiel ten Brinke

바닐라 Vim을 사용하십시오
Chiel ten Brinke

코드에 오타가있었습니다. 방금 고 쳤어요
Chiel ten Brinke

1
공장! <kbd> I </ kbd>는 대문자가 아니라 나름입니다. :set nowrap결과는 4 이상입니다.
Fabien

4

APL (Dyalog Unicode) , 38 34 바이트 SBCS

({(⍵,(0×⍵),⍵){⍺⍪⍵⍪⍺}⍵,⍵,⍵}⍣⎕)1 1⍴1

출력은 1H 를 나타내는 2 차원 배열입니다.0 나타내고 공간 .

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


2
PPCG에 오신 것을 환영합니다! 당신은 생략 할 수 f←및 1 바이트 각 등의 문자를 수 : codegolf.meta.stackexchange.com/questions/9428/... 또한에서 입력을 법적 간주 즉, 교체 ⍣⍵⍣⎕와 외부 DFN의 괄호를 놓습니다.
ngn

감사! 나는 실제로 공식적으로 APL을 골프화 한 적이 없으므로 이것들이 도움이 될 것입니다.
MJacquet

1 1⍴1⍪1다음과 같이 쓸 수 있으며 연산자 주변의 파렌이 불필요 해집니다. 기차에 익숙하다면 여기에서 많은 도움을 줄 수 있습니다.
ngn

또한, 당신의 친구입니다 : (⍵,(0×⍵),⍵)=>(⍵,⍵,⍨0×⍵)
Zacharý

4

, 30 29 바이트

HFENX³ι«J⁰¦⁰C⁰ιCιιT⊗ι⊗ι‖OO→↓ι

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 설명:

H

원본을 인쇄하십시오 H.

FENX³ι«

size3 의 첫번째 거듭 제곱을 반복합니다 .

J⁰¦⁰

커서를 원점으로 다시 이동하십시오. Trim원본의 인쇄 H와 아래의 반사가 모두 커서를 움직이기 때문에 이것이 필요합니다 .

C⁰ι

이전 반복을 아래쪽으로 복사하여 도미노를 만듭니다.

Cιι

테트로 미노를 생성하여 결과를 아래로 복사하십시오.

T⊗ι⊗ι

캔버스를 L트리오 미노 모양으로 자릅니다.

‖OO→↓ι

캔버스를 가로 및 세로로 겹쳐서 겹치게하여 반복을 완료합니다.

숯은 다른 것보다 일부 프랙탈에서 더 좋습니다. 비슷한 아이디어가 있지만 크기는 거의 절반입니다.

HFN«⟲C²⁶‖OOLX³ι

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다.



4

PHP 7, 125 109 바이트

다른 접근 방식 : 결과를 재귀 적으로 중첩하고 평탄화하는 대신 행과 열을 반복하고 세 번째 루프를 사용하여 인쇄 여부를 찾습니다. H 또는_ .

편집 : 행 / 열 루프를 하나로 결합하여 많은 시간을 절약했지만 내부 루프의 감소를 얻는 데 약간의 시간이 걸렸습니다. 전력 운영자를 위해 PHP 7이 필요합니다.

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


for($z=3**$argn;$z*$z>$q=$p;print$c."
"[++$p%$z])for($c=H;$q;$q-=$q/$z%3*$z,$q/=3)if($q%3==1&&$q/$z%3-1)$c=_;

결과를 인쇄합니다. 파이프로 실행-nR .

정규화 된 함수, 147130 바이트

function r($n){for($z=3**$n;$z*$z>$q=$p;$r.=$c."
"[++$p%$z])for($c=H;$q;$q-=$q/$z%3*$z,$q/=3)if($q%3==1&&$q/$z%3-1)$c=_;return$r;}

단일 문자열을 반환합니다. 기본 설정 (no php.ini) 으로 실행하십시오 .


1
%3==1로 교체 할 수 있습니다 %3&1.
primo

3

젤리 , 25 바이트

,’b3U×"3S_4A1e
3*çþ`ị⁾ HY

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


이것은 기존의 Jelly 제출 보다 길지만 좌표에서 독립적으로 각 문자를 생성하려고 시도합니다.

특히, 좌표가있다 (x,y)(1 인덱싱), 제 1 링크 반환 01에 대응 H하고 각각.


,                Pair. Get (x,y)
 ’               Decrement. Get (x,y) (0-indexing)
  b3             Convert to base 3 digits.
    U            Upend. So next operations can pair the corresponding digits.
     ×"3         Multiply the first element (list) by 3.
        S        Sum (corresponding digit together). Let the sum be s.
         _4A1e   Check if any of abs(s-4) is 1. Equivalently, check
                 if there is any 3 or 5 in the list of s.

또한 5 바이트 ị⁾ HY가 형식화에 사용 되므로이 프로그램 (20 바이트)도 유효합니다 (그러나 출력이 좋지 않습니다).

,’b3U×"3S_4A1e
3*çþ`

3

T-SQL , 267 261 바이트

DECLARE @N INT=3DECLARE @ TABLE(I INT,H VARCHAR(MAX))INSERT @ VALUES(1,'H H'),(2,'HHH'),(3,'H H');WITH
T AS(SELECT 1 A,3 P,I J,H S FROM @ UNION ALL SELECT A+1,P*3,J*P+I,REPLACE(REPLACE(S,' ','   '),'H',H)FROM @,T
WHERE A<@N)SELECT S FROM T WHERE A=@N ORDER BY J

이것이 Code Golf에 대한 첫 번째 답변이므로 실수를 한 경우 도와주세요. 또한 선호하는 언어는 Transact-SQL이며 짧은 코드에는 적합하지 않습니다.
Razvan Socol

1
PPCG와 멋진 첫 게시물에 오신 것을 환영합니다! T-SQL에서의 골프에 대한 팁은 게시물 을 확인하십시오 !
caird coinheringaahing

sqlfiddle을 추가하려고 시도했지만 테이블 변수와 잘 작동하지 않습니다. 일반 테이블을 사용하면 sqlfiddle.com/#!18/eb14e/2 보다 1 바이트 더 짧 습니다 . 그러나 출력은 sqlfiddle에 의해 올바르게 형식화되지 않지만 SSMS에서는 제대로 작동합니다.
Razvan Socol

1
불필요한 공백과 줄 바꿈을 제거하여이 값을 259로 줄일 수 있어야합니다.
MickyT

나는 단지 261에 도착했다. 나는 무엇을 놓치고 있는가?
Razvan Socol

2

PHP 7, 153 바이트

    function p($n){$r=["H H",HHH,"H H"];if(--$n)foreach(p($n)as$s){$r[+$i]=$r[$i+6*$p=3**$n]=str_pad($s,2*$p).$s;$r[3*$p+$i++]=$s.$s.$s;}ksort($r);return$r;}

기본 설정 (아니오 php.ini) 으로 실행 하거나 온라인으로 시도하십시오 .



2

PHP (5.6 이상), 94 바이트

<?for(;$H>$e*=3or$e=($i+=$e&&print"$s
")<${$s=H}=3**$argn;)$s.=str_pad($i/$e%3&1?$s:'',$e).$s;

-F명령 행 옵션 과 함께 사용합니다 . 인터프리터 기본값 ( -n)을 가정합니다 . 전원 운영자로 인해 5.6 이전 버전에서는 작동하지 않습니다.

샘플 사용법

$ echo 3|php -nF h-carpet.php
H H   H H         H H   H H
HHH   HHH         HHH   HHH
H H   H H         H H   H H
H HH HH H         H HH HH H
HHHHHHHHH         HHHHHHHHH
H HH HH H         H HH HH H
H H   H H         H H   H H
HHH   HHH         HHH   HHH
H H   H H         H H   H H
H H   H HH H   H HH H   H H
HHH   HHHHHH   HHHHHH   HHH
H H   H HH H   H HH H   H H
H HH HH HH HH HH HH HH HH H
HHHHHHHHHHHHHHHHHHHHHHHHHHH
H HH HH HH HH HH HH HH HH H
H H   H HH H   H HH H   H H
HHH   HHHHHH   HHHHHH   HHH
H H   H HH H   H HH H   H H
H H   H H         H H   H H
HHH   HHH         HHH   HHH
H H   H H         H H   H H
H HH HH H         H HH HH H
HHHHHHHHH         HHHHHHHHH
H HH HH H         H HH HH H
H H   H H         H H   H H
HHH   HHH         HHH   HHH
H H   H H         H H   H H

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


1
$s.$s.$s대신 1 바이트를 저장할 수 있습니다 $s.=$s.$s. 그리고 당신은 필요하지는 <?으로 -R대신 -F.
Titus

바이트 주셔서 감사합니다. 에 관해서 -R, 당신은 나에게 완전한 사용법을 보여줄 수 있습니까?
primo

처럼 -nF: echo <input> | php -nR '<code>'. -r거의 동일 php -nr '<code>' <arguments>합니다.
Titus

어쩌면 나는 너무 어리석어 서 작동하지 않을 수도 있습니다 : / i.stack.imgur.com/jqpmk.png
primo

1
preg_filter개행을 유지하면서 각 줄을 반복하는 것 join("\n",array_map(function(){...},split("\n",$s.$s.$s)))입니다. 처음에는 1 바이트 더 짧아서로 str_pad변경되었습니다 sprintf.'"\0".str_pad($$i++/$i&1?"\0":"",$i)."\0"'
primo

1

CJam- 103 97 87 76 바이트

{H{ae_,S*}%}:Il~a:A];{A_W={)(a9*+:A;[[HIH][HHH][HIH]]{z~}%}{);:A;"H"}?}:H~N*

이 프로그램은 매우 장황한 "핸드 코드 된"재귀를 수행합니다. 스마트 매트릭스 곱셈이 없습니다. 재귀 전체에서 스택 위에는 상위 호출에서 얻은 출력을 수집하는 배열이 있습니다. 각 재귀 호출 집합 직후 프로그램 끝에서 스택이 선형으로 인쇄 될 때 출력이 올바른지 확인하려면 재귀 호출의 출력을 함께 압축해야합니다. 재귀로 전달되는 인수 스택은 변수에 유지됩니다 A.

온라인으로 시도



1

Japt , 23 바이트

_·£[X³XX³]Ãy c ·û}gQq)y

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

포장 풀기 및 작동 방식

Z{ZqR mXYZ{[Xp3 XXp3]} y c qR û}gQq)y

Z{    Declare a function that accepts a string...
  ZqR   Split by newline...
  mXYZ{   and map each row into...
    [Xp3 XXp3]  an array of [X.repeat(3), X, X.repeat(3)]
  }
  y   Transpose the resulting 2D array
  c   Flatten
  qR  Join with newline
  û   Center-pad each row to the longest
}
gQq)  Apply the above function to '"' recursively
y     Transpose the resulting 2D string

조옮김 패턴 사용

III
 I 
III

문자열 반복 및 중앙 패딩으로 수행 할 수있는 HJapt에서 적어도 원래 패턴 보다 다루기가 훨씬 쉽습니다 I.


0

C ++ 11-138 바이트

그러나이 답변에 유효한 구문이 있는지 확실하지 않습니다.

#define A a?1:0
template<int N>struct H{H<N-1>h[9];H(int a):h{A,0,A,A,A,A,A,0,A}{}};template<>struct H<0>{char h;H(int a):h{a?'H':' '}{}};

작업 코드로 풀리지 않은

#include <iostream>

#define A a?1:0

template<int N>
struct H
{
  H<N-1> h[9];

  H(int a) : h{A,0,A,A,A,A,A,0,A}
  {}
};

template<>
struct H<0>
{
  char h;

  H(int a) : h{a?'H':' '}
  {}
};

int pow(int a, int b)
{
  int res=1;

  for (int i=1; i<=b; ++i)
    res *= a;

  return res;
}

template<int N>
char getHvalue(int i, int j, H<N> &hn)
{
  int n3=pow(3, N-1);

//std::cout << N << " " << i << " " << j << std::endl;

  return getHvalue(i%n3, j%n3, hn.h[i/n3*3+j/n3]);
}

template<>
char getHvalue<0>(int, int, H<0> &hn)
{
  return hn.h;
}

int main()
{
  H<0> h0(1);

  std::cout << getHvalue(0, 0, h0) << std::endl;

  std::cout << "\n====================\n" << std::endl;

  H<1> h1(1);

  for (int i=0; i<3; ++i) {
    for (int j=0; j<3; ++j)
      std::cout << getHvalue(i, j, h1);
    std::cout << std::endl;
  }

  std::cout << "\n====================\n" << std::endl;

  H<2> h2(1);

  for (int i=0; i<9; ++i) {
    for (int j=0; j<9; ++j)
      std::cout << getHvalue(i, j, h2);
    std::cout << std::endl;
  }

  std::cout << "\n====================\n" << std::endl;

  H<3> h3(1);

  for (int i=0; i<27; ++i) {
    for (int j=0; j<27; ++j)
      std::cout << getHvalue(i, j, h3);
    std::cout << std::endl;
  }

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