별표 삼각형 그리기


57

101 프로그래밍을위한 작업에서 영감을 얻은 것은 너무나 쉽지 않거나 중복 된 작업입니다 (이런 것들을 찾기가 어렵습니다).

입력:

  • 양의 정수 n >= 1.

산출:

  • n 모든 새 줄은 이전 줄보다 하나의 별표가 있고 첫 번째 줄에서 별표로 시작합니다.

일반적인 규칙:

  • 이것은 코드 골프이므로 바이트 단위의 최단 답변이 이깁니다.
  • 이 과정은 C ++로 진행되므로 C ++로 솔루션을보고 싶어합니다.

테스트 사례 (n = 5) :

*
**
***
****
*****

6
복제하지 않고 단지 직각 삼각형 생성의 하위 집합입니다 .
manatwork

2
각 라인에 훈련 공간이 허용됩니까?
Luis Mendo

2
후행 줄 바꾸기가 허용됩니까?
Fatalize

1
선행 개행이 허용됩니까?
Riley

이유가 보이지 않습니다.
Sickboy

답변:


41

Vim, 8 바이트

o <Esc><C-V>{r*J

판독 헤드 버퍼에 입력을 취하므로 입력이 15 인 경우 입력 한 다음 위의 코드를 입력하십시오. 이 바보 같은 규칙이지만 보인다 . 와 같은 레지스터에 입력 한 경우 앞에 (10)을 "a붙이면 @a됩니다. 시작 파일에서 가져 왔으면 D@"대신 (11)을 붙 입니다.

남용에 의존 :set autoindent기본적이며, vimgolf.com의 빔 (8)의 규칙과 기본 (모두가 어쨌든 사용).

  • o <Esc>: 숫자 인수를 사용하여 텍스트가 공백으로 시작 :set autoindent하고을 가지고 있으면 Vim이 글리치하여 캐스케이드 인 덴트를 만듭니다.
  • <C-V>{r*: 모든 공백을 *s 로 바꿉니다. 나는 블록 비주얼을 사용하여, 들여 쓰기 설정이 공백을 탭으로 자동으로 그룹화하더라도 여전히 올바른 수를 얻을 수 있도록합니다 *.
  • J: o불행히도 맨 처음에 빈 줄이 남았습니다. 제거합니다.

1
이 답변은 엄청나게 인상적입니다. 내가 본 멋진 vim 답변 중 하나입니다.
DJMcMayhem

1
물고기처럼 보입니다. 또는 로켓.
Stephan Bijzitter

1
나는 조금만 요동하여 Vim을 -u NONE혼자서 보았습니다. 작동하지 않았습니다 .vimrc 가 아닌 기본 vimrcautoindent 에있는 것 같습니다. 그래서 수동으로 켜야했습니다. 그러나이 답변의 독창성을 위해 모자를 벗다! 그러나 왜 새 줄당 하나의 공간이 있습니까? 공백으로 만 작동하고 다른 문자로는 작동하지 않는 이유는 무엇입니까? 나는 아직도 그것을 많이 배울 것 같다 :)
Christian Rondeau

시작 은 끝이 O <Esc>필요하지 않습니다 J.
primo

1
@udioica 단일 후행 줄 바꿈은 일반적으로 허용되는 것으로 간주됩니다.
primo

23

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

여기에는 선행 및 후행 줄 바꿈이 모두 포함됩니다.

s줄 바꿈 만 포함 하는 문자열로 시작 합니다. 그런 다음 n반복 할 때마다이 문자열의 왼쪽에 별표를 추가하여 재귀 호출 을 처리 합니다. 모든 중간 문자열을 연결하면 예상 결과가 나타납니다.

f=(n,s=`
`)=>n?s+f(n-1,'*'+s):s

별표없이 36 바이트

f=(n,s=`
`)=>n?s+f(n-1,atob`Kg`+s):s

어떻게 작동합니까?
Alexis_A

1
@Alexis_A-간단한 설명을 추가했습니다.
Arnauld

3
좋은 재귀 답변; 나는 당신이 사용하는 기술을 결코 생각하지 않았을 것입니다 s. 으로 약간 덜 암호로 만들 수 있습니다 n?s+f(n-1,'*'+s):s.
ETHproductions

19

05AB1E , 7 6 바이트

CP-1252 인코딩을 사용합니다 .

'*×.p»

8 바이트 비 별표 버전 :

žQTè×.p»

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

설명

입력을 사용하는 예 n = 5

'*      # push "*"
        # STACK: "*"
  ×     # repeat input number times
        # STACK: "*****"
   .p   # get prefixes of string
        # STACK: ['*', '**', '***', '****', '*****']
     »  # join by newlines
        # implicit print

@TheBitByte 10žQSè×.p»는 바운티에 원하는 것을 얻기 위해이 답변의 논리적 확장이며 10 바이트입니다. 아무도 10 바이트를 헥타르 지 않으면 Emigna에게 현상금을주십시오.
매직 문어 Urn

1
@carusocomputing : TžQè×.p»은 8 바이트입니다.
Emigna

여전히 언어를 배우려고했지만 T 명령을 놓쳤다. Base2 푸시가 많이 있지만베이스 10이없는 것이 이상하다고 생각했습니다. 나는 그 언어로 무엇이든 할 수 있으려면 info.txt의 전체 내용을 닦아야합니다.
매직 문어 Urn

@carusocomputing 일부 명령은 특히 놓치기 쉽습니다. 특히 다른 방법을 알고 있다면 :)
Emigna

1
@carusocomputing : 무슨 말인지 잘 모르겠습니다. 여기서 사용하는 유일한 목록 명령은 »구분 기호가있는 목록을 문자열로 병합하는 명령입니다 (그리고 S망치는 것입니다). 그러나 많은 05AB1E 명령이 벡터화됩니다.
Emigna

15

PowerShell, 21 바이트

1..$args[0]|%{'*'*$_}

루프로부터 1입력을 $args[0]문자열 승산을 이용하여 각각의 반복은 많은 캐릭터 구성하는 $_별표. Write-Output끝에 암시 적에 대한 기본 동작은 구분 기호에 줄 바꿈이 있으므로 무료로 얻을 수 있습니다.

PS C:\Tools\Scripts\golfing> .\draw-asterisk-pattern.ps1 5
*
**
***
****
*****

PS C:\Tools\Scripts\golfing> .\draw-asterisk-pattern.ps1 2
*
**

PS C:\Tools\Scripts\golfing> .\draw-asterisk-pattern.ps1 7
*
**
***
****
*****
******
*******

13

파이썬 2, 37 34 바이트

i=1;exec"print'*'*i;i+=1;"*input()

이데온

i로 초기화된다 1;
그런 exec다음 다음 코드 문자열을 실행하는 명령이므로 구성해야합니다.
문자열은 다음과 "print'*'*i;i+=1;"같지만 *다음은 문자열보다 우선하며 exec먼저 문자열 input()시간을 반복하도록 지시합니다 . 명령은 이제, 루프와 같은 역할을하는 긴 문자열 실행 다시 길이를 증가의 또 다른 문자열을 보내고 사용하여 문자를 반복 한 후 증가, 과를 .
execprint*'*'ii+=1

파이썬 3, 41 바이트 :
def f(n):i=1;exec("print('*'*i);i+=1;"*n) ; 또는
lambda n,i=1:exec("print('*'*i);i+=1;"*n)


13

젤리 , 6 5 바이트

”*ẋþY

TryItOnline

어떻게?

”*ẋþY - Main link: n
”*    - literal string "*"
   þ  - form outer product with the dyadic function:
  ẋ   -     repeat list (right input is an implicit range(n), Jelly defaults to 1-based)
            so the outer product is like:
            [[i*'*' for i in range(1,len("*")+1)] for x in range(1,n+1)]
    Y - join with line feeds
      - implicit print

현상금 :
문자 서수를 조회하기 때문에 서수 없음 절이 무엇인지 잘 모르겠습니다 .
직접 조회 그냥 것 42Ọẋþ³Y을 위해 7 바이트 (가) 어디에 - ³우리에게 입력을 취득)
짧은 약간 간접적 인 방법에 대한 것입니다 8 바이트 , “)’Ọẋþ³Y- 우리는 조회 곳 ')'입니다 젤리의 코드 페이지, 그렇게 1 인덱스 “)’(42)는 산출한다.


입력에 선행 0을 사용할 때 흥미로운 일이 발생합니다. "0414141"을 입력하십시오. 나는 골프 언어에 대한 실마리가 없으므로 그것을 설명하려고 어디에서 시작 해야할지 모르겠습니다.
Luke

나는 그것이 문자열로 평가되고 따라서 문자열이 반복 가능하기 때문에 그것을 가로 질러 반복된다고 생각합니다. 각 문자는 모든 숫자이므로 정수로 평가됩니다 (예 : "hi"로 오류가 발생합니다)
Jonathan Allan

11

C #, 42 바이트

f=n=>n<1?"":f(n-1)+"\n"+new string('*',n);

테스트 케이스가 포함 된 전체 프로그램 :

using System;

namespace DrawAnAsteriskPattern
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<int,string>f= null;
            f=n=>n<1?"":f(n-1)+"\n"+new string('*',n);

            Console.WriteLine(f(5));
        }
    }
}

재귀 함수이므로 필요합니다.
adrianmp

권리. 그것을 보지 못함
Cyoce


9

GNU sed , 25 24 20 + 1 (n 플래그) = 21 바이트

편집 : Riley 의 의견 에 따라 4 바이트 적음

x;G;:;P;s:\n.:*\n:;t

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

실행 예 : 입력이 단항 형식이며,이 합의에 따라 sed에 허용됩니다.

me@LCARS:/PPCG$ sed -nf draw_triangle.sed <<< "0000"

*
**
***
****

출력에 선행 줄 바꿈이 있지만 OP에서 허용합니다.

설명:

x;G             # prepend a newline to unary string
:               # start loop
   P            # print first line only
   s:\n.:*\n:   # shift one unary char from 2nd line to 1st, converted to a '*'
t               # repeat

이 경우 P대체 및 선도적 인 줄 바꿈이 허용 RINT 전에 필요하지 않습니다 /0$/. 줄 바꿈이 허용되지 않으면을 사용하여 바이트를 저장할 수 있습니다 x;G;:;/*/P;s:\n.:*\n:;t. 나는 새로운 개행에 대해 물었지만 아직 듣지 못했습니다.
Riley

8

MATLAB, 26 23 바이트

좋은 Matlab ...

@(n)tril(repmat('*',n))

공백이 있습니다. tril더 낮은 삼각 행렬을 제공합니다.

편집 : Luis Mendo 덕분에 2 명이 절약되었습니다.


당신은 맞습니다-감사합니다-여전히 경쟁이 치열합니다 : P
mathause

8

C ++- 92 96 바이트

#include<string>
int main(){int n;std::string s;scanf("%d",&n);for(;n--;)puts((s+="*").data());}

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

언 골프 드 :

//this one hurts, but c++ strings are mutable
#include<string> 
int main(){
    int n;
    //this one hurts as well
    std::string s; 
    //read input to n
    //longer than 'std::cin>>n', but no #include<iostream> needed
    scanf("%d",&n); 
    // same as 'while(n--)', also characterwise, but way cooler
    for(;n--;) 
        //add a '*' the string
        //data() does the same as c_str()
        //puts automatically adds an '\n'
        puts((s+="*").data()); 
}

+4 바이트의 경우 'int main () {}'이어야합니다.

사실, 젠장-gcc / ideone의 비표준 행동
Anedar

7

해파리 , 12 11 9 바이트

\P$'*
  i

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

설명

위의 프로그램은 다음 기능 의사 코드와 동일합니다.

\            P      $       i        '*
map_prefixes(print, reshape(input(), '*'))

$(모양 변경은)의 캐릭터 생성 N별표. \P목록 (또는 문자열)을 가져 와서 각 접두사를 P(print) 로 전달하는 함수를 만듭니다 . 따라서 연속적 1으로 N별표로 문자열을 인쇄합니다 .


7

R, 45 바이트

루프 접근 방식 :

for(i in 1:scan())cat(rep("*",i),"\n",sep="")

6

Brachylog , 12 바이트

yke:"*"rj@w\

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

이것은 후행 줄 바꿈이 허용되는 것으로 가정합니다.

설명

yk                The range [0, …, Input - 1]
  e               Take one element I of that range
   :"*"rj         Juxtapose "*" I times to itself
         @w       Write that string followed by a new line
           \      False: backtrack to another element of the range

후행 줄 바꿈 없음, 15 바이트

-:"*"rj:@[f~@nw

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

이것은 모든 접두사를 사용하여 작동합니다 "*" × Input.


6

하스켈, 35 38 바이트

nimi 덕분에 목록 이해력 :

f x=unlines[[1..n]>>"*"|n<-[1..x]]

구 버전:

f 0=""
f n=f(n-1)++([1..n]>>"*")++"\n"

대체 버전 :

g n=([1..n]>>"*")++"\n"
f n=[1..n]>>=g

바이트를 저장하는 ([1..n]>>"*")대신 사용할 수 있습니다 replicate n'*'. 또한 39 바이트 만 계산합니다.
Laikoni

멋진 대체 버전! 그러나 바이트 수는 여전히 1이고 38이어야한다고 생각합니다. (예 : 여기 참조 ) 문제는 개행 문자 f 0=""가 1 바이트로 계산되지만 일부 텍스트 편집기에서 2 바이트 / 문자로 표시 될 수 있습니다.
Laikoni

감사! 문자를 세면서 처음에 후행 줄 바꿈을 추가했음을 알았습니다. 그 실수를 다시하지 않을 것입니다!
Craig Roy

2
목록 이해로 전환 할 수 있습니다 : f x=unlines[[1..n]>>"*"|n<-[1..x]].
nimi

6

피 이스, 7 바이트

VQ*\*hN

@ETHproductions 덕분에 바이트를 떨어 뜨 렸습니다. 온라인 사용해보기

@ PIetu1998의 기술 사용

6 바이트

j*L*\*S

좋은 대답입니다! 당신은 대체 할 수 있습니다 "*"\*.
ETHproductions

@ETHproductions 나는 그것에 대해 전혀 몰랐습니다, 감사합니다!
Dignissimus

맵으로 다른 바이트를 제거 할 수 있습니다. j*L\*S(의 inclu의 SIVE 범위가 각각 곱 *L"*"에 의해 \*, jPyth이 결국 암시 Q 삽입 개행 OIN).
PurkkaKoodari

jm*\*h또한 6 바이트입니다.
hakr14

6

2sable , 24 11 바이트

>G')Ç>çJN×,

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

그리고 별표는 없습니다! @Emigna 덕분에 24에서 11까지 골프쳤다 .

설명:

>G')Ç>çJN×,
>            Push input+1
 G           For N in range (1,input+1)
  ')Ç>çJ     Push '*' by getting ascii code for ')' and adding 1
        Nx,  Print '*' repeated N times

1
몇 가지 팁. õVYI어떤 식 으로든 코드에 영향을 미치지 않으며 제거 할 수 있습니다. 1+와 동일합니다 >. 루프에서 별표를 작성하면을 제거 할 수도 있습니다 UX. ×내부 루프 대신 사용 하면 더 많은 바이트가 절약됩니다. 방법을 변경하지 않으면 11 바이트 이하로 줄일 수 있습니다.
Emigna

1
좋은! 곧 수정하겠습니다
Geno Racklin Asher

설명을 추가해 주시겠습니까?
버퍼 오버 읽기

멋진 코드, 현상금을 얻는 것을 축하합니다! 커뮤니티 봇은 마감일 이전에 현상금을 수여하는 것을 잊었 기 때문에 원래의 50이 아닌 25 만 수상한 것으로 보입니다. 죄송합니다.
버퍼 오버 읽기

1
걱정하지 마십시오. 100-rep 마크에 도달하게되어 기쁩니다. @TheBitByte
Geno Racklin Asher

6

Brain-Flak 75 바이트

에 +3 포함 -A

{(({})[()]<{({}[()]<(((((()()()){}()){})){}{})>)}{}((()()()()()){})>)}{}

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


설명:

{(({})[()]<                                                        >)}
#reduce the top element by one until it is 0 after doing the following
#Push this element back on to act as a counter for the next step.
#(counts down from input to 0 we'll call this counter)

           {({}[()]<                          >)}
           #reduce the top element by one until it is 0 after doing the following
           #(counts down from counter to 0)

                    (((((()()()){}()){})){}{})  
                    #push 42 (the ASCII code for *)

                                                 {}
                                                 #pop the counter used to push
                                                 #the right number of *s

                                                   ((()()()()()){})
                                                   #push a 10 (newline)

                                                                      {}
                                                                      #pop the null byte

이것은 출력에 널 바이트를 포함합니까? 나는 그것이 허용되지 않습니다 ...
Destructible Lemon

아니, 내가 널 바이트를 의미
파괴 가능한 레몬

@DestructibleWatermelon 그래, 그럴 것 같아. 그래도 쉬운 수정. 감사.
Riley

6

Dyalog APL , 8 바이트

'*'⍴⍨¨⍳

로 구성된 목록을 숙성하다

'*' 문자열 "*"

⍴⍨ 에 의해 재 형성

¨ 각각

인수를 통한 정수 1

TryAPL 온라인!


나에게 8 바이트처럼 보입니다.
Outgolfer Erik

1
단일 바이트 일 수있는 경우 :(,⍕⊢)⌸⍳
ngn

@ngn 매우 영리합니다! 자신의 것으로 게시하십시오. 실제로 작성하는 단일 바이트로 계산할 수 있습니다 7 bytes<sup>SBCS</sup>.
Adám

5

V , 8 바이트

Àé*hòlÄx

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


오 예 Àé hòlÄ!
Jonathan Allan

2
@JonathanAllan Hey, 적어도 Jelly보다 더 읽기 쉽습니다. (나에게);)
DJMcMayhem

젤리의 코드 페이지는 꽤 잘 조직되어 있다고 생각합니다. Lynn이 최근에 만든 Wiki의 Atoms 페이지를 살펴보십시오 .
Jonathan Allan

3
@JonathanAllan 네, 믿습니다. 그것은 보이지 않을 수도 있지만 V의 니모닉은 vim에 키를 입력하는 데 사용하는 키 때문에 잘 구성되어 있습니다. 따라서 vim-key lingo의 내 솔루션은 <M-@><M-i>*h<M-r>l<M-D>x(m은 메타를 의미하며 alt를 의미합니다)입니다. 그것들은 모두 명령이 수행하는 것에 대한 좋은 니모닉입니다.
DJMcMayhem

5

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

f=x=>x?f(x-1)+`
`+'*'.repeat(x):''

5

펄 6 , 23 바이트

{.put for [\~] '*'xx$_}

(줄 바꿈없이 출력이 "줄"목록이 .put for 될 수있는 경우 제거 할 수 있음)

설명:

# bare block lambda with implicit parameter 「$_」
{
  .put            # print with trailing newline
    for           # for every one of the following
      [\~]        # produce using concatenation operator
        '*' xx $_ # list repeat '*' by the input
}

( produce무엇 [\~] ...을하고 있는지 이해하지 못하는 경우 설명서를 참조하십시오 )


5

펄 5, 22 20 바이트

say"*"x$_ for 1..pop

-E스위치를 사용하여 실행하십시오 say.

$ perl -E 'say"*"x$_ for 1..pop' 5
*
**
***
****
*****

전체 프로그램으로 작성하면 다음과 같습니다.

use strict;
use feature 'say';

# get the argument
my $limit = pop @ARGV;

foreach my $i (1 .. $limit) { 
    say "*" x $i; 
}

명령 행 스위치에 추가 바이트가 필요한지 확실하지 않습니다.
simbabque

나는 생각 -E하나 추가 바이트로 플래그 수를.
ETHproductions

매개 변수 대신 숫자를 입력으로 사용하는 것은 어떻습니까? perl -E 'say"*"x$_ for 1..<>' <<< 5
manatwork

@manatwork 그렇습니다. 나는 계산에 좋지 않다. 그것이 허용되는지 확실하지 않습니다.
simbabque

1
-E무료입니다 ( -e어쨌든 필요한 것으로 대체 합니다). 명령 행에서 실제로 숫자를 가져 오려면 ( <>1 바이트가 더 짧고 허용 되더라도 ) (2 바이트 더 짧음) pop대신 사용해야 합니다 shift! 어쨌든 PPCG에 오신 것을 환영합니다. 골프를 see 게되어 반갑습니다!
Dada

5

펄, 19 바이트

@Ton Hospel 과 그의 솔루션 재 작업 덕분에 -4 바이트 !

eval"s//*/;say;"x<>

실행하려면 무료 -E(또는 -M5.010) 플래그가 필요합니다. 입력에서 숫자를 가져옵니다.

perl -E 'eval"s//*/;say;"x<>' <<< "5"

1
당신은 할 수 있습니다 eval같은 길이 for(사용 솔루션 <>대신을 pop포함)eval"s//*/;say;"x<>
톤 Hospel

@TonHospel Ineed, 좋습니다! 감사!
Dada

5

J, 11 8 바이트

마일 덕분에 3 바이트를 절약했습니다!

]\@#&'*'

분해는 다음과 같습니다.

(]\@#&'*') x
x (]\@#) '*'
]\ (x # '*')

이제이 마지막 내용은 " 사본으로 ]\구성된 문자열 의 접두사 ( ) "로 읽습니다 . 관찰 :x'*'

   5 ]\@# '*'
*
**
***
****
*****
   ]\ 5# '*'
*
**
***
****
*****
   ]\ 5 # '*'
*
**
***
****
*****
   ]\@#&'*' 5
*
**
***
****
*****

테스트 사례

   f =: ]\@#&'*'
   f 3
*
**
***
   f 5
*
**
***
****
*****
   f 1
*
   f 2
*
**
   f &. > ;/1+i.10
+-+--+---+----+-----+------+-------+--------+---------+----------+
|*|* |*  |*   |*    |*     |*      |*       |*        |*         |
| |**|** |**  |**   |**    |**     |**      |**       |**        |
| |  |***|*** |***  |***   |***    |***     |***      |***       |
| |  |   |****|**** |****  |****   |****    |****     |****      |
| |  |   |    |*****|***** |*****  |*****   |*****    |*****     |
| |  |   |    |     |******|****** |******  |******   |******    |
| |  |   |    |     |      |*******|******* |*******  |*******   |
| |  |   |    |     |      |       |********|******** |********  |
| |  |   |    |     |      |       |        |*********|********* |
| |  |   |    |     |      |       |        |         |**********|
+-+--+---+----+-----+------+-------+--------+---------+----------+

오래된 11 바이트 솔루션

'*'#~"+1+i.

이것은 동등하다

'*' #~"0 1 + i.

1 + i.범위 [1, x]입니다. 그런 다음 '*' #~"0의이 범위 모양 (요소) 복사본에 적용 '*'됩니다.

보너스 프로그램 :

[:#&'*'\#&1

입력 #&'*'\결과에 적용되는 뚜껑이있는 포크 #&1입니다. #&1의 배열주는 x사람, 그리고 #&'*'\모양 '*'이 배열의 접두사로.

테스트 사례

   f1 =: '*'#~"+1+i.
   f2 =: [:#&'*'\#&1
   f1 1
*
   f2 2
*
**
   f1 3
*
**
***
   f2 4
*
**
***
****
   f2 5
*
**
***
****
*****
   f1 5
*
**
***
****
*****
   (f1;f2)3
+---+---+
|*  |*  |
|** |** |
|***|***|
+---+---+
   f1;f2
f1 ; f2
   (f1;f2)5
+-----+-----+
|*    |*    |
|**   |**   |
|***  |***  |
|**** |**** |
|*****|*****|
+-----+-----+
   (f1;f2)10
+----------+----------+
|*         |*         |
|**        |**        |
|***       |***       |
|****      |****      |
|*****     |*****     |
|******    |******    |
|*******   |*******   |
|********  |********  |
|********* |********* |
|**********|**********|
+----------+----------+

또한n'*']\@#&'*'
miles

@ 마일 : 그리고 다른 9 바이트 버전 :'*'"0\@i.
Jonah

5

Vim, 22 , 18 키 스트로크

O <esc>J:h r<cr>lyEZZ<C-v>{@"

내가 확장 한 멋진 vim 답변 을 생각해 낸 @Udioica 에게 큰 신뢰 . 현상금을 얻기 위해이 답변에는 별표가 없습니다.

설명:

입력은 프로그램의 나머지 부분보다 먼저 입력됩니다. Udioica는이 멋진 트릭을 생각해 냈습니다. 입력 <n>O <esc>하면 사용 가능한 한 피라미드 피라미드와 빈 줄이 생성됩니다 :set autoindent. 이 옵션은 기본적으로 vim 8 및 neovim에서 제공되지만 이전 버전의 vim은 아닙니다. 이것은 또한 추가 라인을 생성 J하기 때문에이 라인을 다음 라인과 결합 하는 데 사용 합니다.이 라인은 효과적으로 우리 아래 라인을 제거합니다.

이제이 공간을 모두 별표로 바꿔야합니다. 내 코드에서 별표를 사용하는 것에 대해 걱정하지 않으면 선택 항목의 각 문자를 별표로 대체 하는 전체 항목 <C-v>{과 유형을 시각적으로 선택합니다 r*. 그러나 나는 그것을 할 수 없습니다.

도움말 페이지가 열립니다 :h r. 이것에 대한 흥미로운 점은 vim 창에서이 페이지가 다음과 같이 표시된다는 것입니다.

                            r
r{char}         Replace the character under the cursor with {char}.
                ...

첫 번째 'r'에 커서를 놓습니다. 그러나 파일 자체에는 실제로 다음 텍스트가 포함됩니다.

                            *r*
r{char}         Replace the character under the cursor with {char}.
                ...

꽤 편리합니다. 따라서 우리는로 한 문자 위로 이동 하고 ([y] nd to the this word)로 l텍스트 r*를 잡아 yE당깁니다.

이 버퍼를 닫으려면 바로 가기를 사용하여 파일을 저장하십시오 ZZ. 이제 공간을 시각적으로 선택하고 마치 마치 텍스트를 입력 한 것처럼 생겼습니다 @". "@"은 vim-keystrokes로 다음 레지스터를 실행하고 "yanking의 기본 레지스터"이기 때문에 작동합니다.


그것이 어떻게 작동하는지 설명해 주시겠습니까?
corvus_192

@ corvus_192 좀 더 광범위한 설명과 골프를 더 추가했습니다.
DJMcMayhem

데이터 파일의 크기를 바이트 수에 추가해서는 안됩니까?
aross

@ 도움말 파일의 크기는? 아니요,이 파일은 vim과 함께 설치되며 기본 기능이기 때문입니다.
DJMcMayhem

5

C, 47 46 45 43 바이트

명령 행에서 입력을받습니다.

f(n){for(n&&f(n-1);~n;putchar(n--?42:10));}

기본적으로 n이 0이 아닌 경우 n-1에서 되풀이됩니다. 재귀의 맨 위에 n이 0이면 개행을 인쇄하고, for 루프는 n이 -1이거나 ~ n이 0 일 때 종료되고, 그렇지 않으면 '*'인 ASCII 42를 인쇄합니다. 이데온에서 사용해보십시오

iostream을 포함하는 C ++ 58 바이트 + 19는 77

#include<iostream>
int f(int n){for(n&&f(n-1);~n;std::cout<<(n--?"*":"\n"));}

main(c,v)char**v;
{
    f(atoi(v[1]));
}

a.exe 3
*
**
***

나에게 일하는 것 같습니다 &&: n?f(n-1):0n&&f(n-1).
manatwork

@manatwork 감사합니다. 다른 바이트 절약
cleblanc

이데 오네 끝에 2 개의 삼각형 쇼가 인쇄되면 '\ n'이 하나 더 있습니다. * ** *** * ** *** **** ***** 소생, 하나 더 인쇄
RosLuP

@RosLup 예, 선행 및 후행 줄 바꿈을 인쇄합니다. 나는 OP가 그의 의견에서 괜찮다고 말했다.
cleblanc

4

레티 나 , 14 바이트

바이트 수는 ISO 8859-1 인코딩을 가정합니다.

.+
$**
.
$`$&¶

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

설명

.+
$**

입력 NN별표 로 바꿉니다.

.
$`$&¶

각 별표를 별표 (이것은 $`$&) 및 줄 바꿈 (이것은)을 포함하여 최대의 모든 것으로 바꿉니다 .



4

Cubix , 22 바이트

?(.;I:^;/-.@o;(!\>'*oN

온라인으로 테스트하십시오! 후행 줄 바꿈을 출력합니다.

처음에 나는 이것을 2 큐브에 맞출 수 있는지 확실하지 않았지만 결국에는 잘 작동했습니다.

    ? (
    . ;
I : ^ ; / - . @
o ; ( ! \ > ' *
    o N
    . .

시간이 있으면 오늘 나중에 설명을 추가하겠습니다.


언제라도 곧 설명할까요? : P
FlipTack
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.