별표 삼각형 그리기


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):0→ n&&f(n-1).
— manatwork

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

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

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

4

레티 나 , 14 바이트

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

.+
$**
.
$`$&¶

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

설명

.+
$**

입력 N을 N별표 로 바꿉니다.

.
$`$&¶

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



4

Cubix , 22 바이트

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

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

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

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

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


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