녹는 차가워 요 그리는 방법


23

조각가는 그린란드의 새로운 박물관을위한 고드름 조각품을 만드는 임무를 맡고 있습니다. 그는 그의 상사에게 사양을 받았는데, 그것은 [s, m] 또는 크기와 용해의 두 숫자로 구성됩니다. 크기 홀수 여야합니다 . 그는 실제 고드름 사진을 받았다.

vvvvv [5, 0]
 vvv 
  v


vvvvvvv [7, 0]
 vvvvv 
  vvv
   v


vvvvvvv [7, 2]
 vvvvv 



vvvvvvv [7, 3]




vvv [3, 1]

그는 그리는 데 도움이되는 프로그램이 필요합니다. 모든 언어가 허용됩니다. 프로그램은 S와 M을 받아 들여야하며, 모든 입력 방법이 허용됩니다. 그런 다음 아스키 아트 표현을 인쇄해야합니다.

S는 v첫 번째 레이어에 몇 개 입니까? M은 바닥에서 몇 층이 잘려나 갔는지입니다.

이것은 이므로 평상시처럼이 경쟁은 바이트 기반 입니다. 공백은 바이트 계산에 포함됩니다. 최소 바이트가 이깁니다.

편집 : [5, 3]과 같이 아무 것도 그리는 숫자 집합을 얻지 못합니다. 그러나 코드 확인은 필요하지 않습니다 .


당신은 말할 수를 않습니다 공백 있지만, 예제에 몇 줄이 후행 공백을했다. 허용 되나요?
Luis Mendo

답변:


8

05AB1E , 11 바이트

;-Ý·¹+'v×.c

;-          Compute x = Input[1]-Input[0]/2  (e.g. 7,2 -> -1.5)
  Ý         Push [0, ..., x]                 (e.g. 7,2 -> [0, -1])
   ·        Multiply each value by 2         (e.g. 7,2 -> [0, -2])
    ¹+      Add Input[0] to each value       (e.g. 7,2 -> [7, 5])
      'v×   String multiply by 'v'
         .c Center all strings and implicitly display them  

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


1
잘 하셨군요. 05AB1E에 @Adnan의 12 바이트를 넣었습니다!
yummypasta

2
@ yummypasta 잘, 나는 그의 닉이 우연의 일치가 아니라고 생각합니다 :)
Bacco

감사! Adnan과 Emigna는 보통 내가 도울 수있는 것보다 더 많은 것을 도와줍니다. 그리고 당신은 바로, 내 별명이되어있어 매우 05AB1E 관련).
Osable

16

V , 15 바이트

Àévò^lYp2x>òÀñd

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

매우 간단합니다.

À               " Arg1 times:
 év             "   Insert a 'v'
   ò       ò    " Recursively:
    ^l          "   Break if there is only one character on this line
      Y         "   Yank this line
       p        "   Paste it below us
        2x      "   Delete two characters
          >     "   Indent this line
            À   " Arg2 times:
             ñd "   Delete a line

5
V가 "가장 난독 한 언어"에서이기는 것 같습니다.
Nissa

1
언어는 디버그에 재미를 보이는 것을
BlueWizard

4
소스 코드는 무작위로 생성 된 해시처럼 보입니다. 안전한 비밀번호로 사용할 수 있습니다.
totymedli

8
이 문제를 해결할 수있는 V라는 언어가있는 것이 좋습니다.
djechlin

9

05AB1E , 12 바이트

암호:

ÅÉ'v×R²F¨}.c

설명:

ÅÉ             # List of uneven numbers: [1, 3, 5, ..., input]
  'v×          # String multiply by 'v', giving ['v', 'vvv', 'vvvvv', ...]
     R         # Reverse the array
      ²F }     # Second input times, do...
        ¨      #   Remove the first element of the array
          .c   # Centralize the array

CP-1252 인코딩을 사용합니다 . 온라인으로 사용해보십시오!


;-Ý·¹+'v×.c1 바이트를 절약 할 수 있음
Osable

@Osable은 완전히 다른 대답이 아닙니까?
djechlin

좋은 지적은 두 답변 뒤에 큰 알고리즘이 없기 때문에 나는 정말로 모른다. 필요한 경우 다른 답변으로 게시하겠습니다.
Osable

1
@Osable Nice find! 나는 이것과 매우 다르기 때문에 다른 대답으로 넣어야한다고 생각합니다.
Adnan

7

MATL , 22 바이트

'v'itQ2/i-wX"R2&PRZ{Zv

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

설명

'v'   % Push character 'v'
it    % Input first number. Duplicate
Q2/   % Add 1 and divide by 2
i-    % Input second number. Subtract
w     % Swap
X"    % Char matrix of 'v' repeated those many times along each dim
R     % Upper triangular part
2&P   % Flip horizontally
R     % Upper triangular part
Z{    % Split char matrix along first dimension into a cell array of strings 
Zv    % Remove trailing spaces from each string. Implicitly display

6

젤리 , 19 바이트

Rm-2”vẋµLḶ⁶ẋżðḣL_¥Y

TryItOnline!

방법?

Rm-2”vẋµLḶ⁶ẋżðḣL_¥Y - Main link: s, m
       µ            - monadic chain separation
R                   - range(s)  [1,2,3,...s]
 m-2                - mod -2    [s,s-2,s-4,...,1]
    ”v              - 'v'
      ẋ             - repeat    ['v'*s,...,'vvv','v']  (call this y)
             ð      - dyadic chain separation
        L           - length, effectively (s+1)/2
         Ḷ          - lowered range [0,1,2,...length-1]
          ⁶         - ' '
           ẋ        - repeat ['', ' ', ... ' '*(length-1)]
            ż       - zip with y
                 ¥  - last two links as a dyad
               L    -     length
                _   -     subtract m
              ḣ     - head
                  Y - join with line feeds
                    - implicit print

나는 중간에 길이 길이 체인을 좋아한다 ;-)
ETHproductions

네, J’(길이의 범위 감소)도 같은 효과를 가질 것이지만, 거기에서 더 낮아 버전입니다 J, 그리고이 LḶ종류 : 귀여운입니다
조나단 앨런

5

배치, 142 바이트

@set/ah=%1-%2-%2
@set s=v
@for /l %%i in (3,2,%1)do @call set s=%%s%%vv
@for /l %%i in (1,2,%h%)do @call echo %%s%%&call set s= %%s:~0,-2%%

5

루비, 46 44 바이트

->s,m{0.upto(s/2-m){|i|puts' '*i+?v*s;s-=2}}

GB 덕분에 2 바이트 절약


puts공백이 필요하지 않음
GB

1
그리고 s를 줄임으로써 하나 이상의 캐릭터를 절약 할 수 있습니다 : 대신 ?v*(s-2*i)사용?v*s;s-=2
GB

4

파이썬, 76 73 바이트

def f(s,m):print"\n".join([' '*(s/2-i/2)+'V'*i for i in range(s,m*2,-2)])

편집 : @TuukkaX 및 @ Challenger5 덕분에 3 바이트가 절약되었습니다 (감사합니다!)


2
후에 print는 쓸모없는 공백이 있습니다. :)
Yytsi

1
람다를 사용하지 않는 이유는 무엇입니까? lambda s,m:"\n".join([' '*(s/2-i/2)+'V'*i for i in range(s,m*2,-2)])
0WJYxW9FMN

1
함수 코드를 바로 뒤에 넣어 def f(s,m):2 바이트를 절약 할 수 있습니다 .
Esolanging 과일

@ J843136028 같은 바이트 수입니다. def f()7 lambda 은 7입니다. Challenger5의 팁으로 def는 실제로 더 짧습니다. 적어도 그것이 당신이 생각하는 것과 같은 의미
라면

@nephi 그러나 또한을 제거 print하므로 기본적으로 암시 적 반환이 있으므로 4 자 더 짧습니다 ( lambda s,m:"\n".join(...)) lambda.
Artyer

3

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

f=(s,m,p=``)=>s<m+m?``:p+`v`.repeat(s)+`
`+f(s-2,m,p+` `)

후행 줄 바꿈을 출력합니다. 선행 줄 바꿈이 허용되는 경우 54 바이트입니다.

f=(s,m,p=`
`)=>s<m+m?``:p+`v`.repeat(s)+f(s-2,m,p+` `)

3

파이썬 2, 63 바이트

lambda s,m:'\n'.join((s-x)/2*' '+x*'v'for x in range(s,m*2,-2))

3

Turtlèd , 53 바이트

@v?,:l[v,l][ [ l]rr[ d,ur]ld' l]?<:d[ [ u]d[ ' d]luu]

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

설명:

@v,           set char var to v, write it to cell

   ?:l        take positive int input, move that many character right, move 1 left

      [v,l]   move left back to the v, writing v on all the cells it goes on

           [                   ]                      until the current cell is a space

             [ l]    move left until finding a space
                 rr  move two right

                   [     ]  until cell is a space
                     d,ur   move down, write v, move up and right


                          ld' l    move left, down, write space

                                [end of big loop]


                                  [that part made the "icicle", the next melts some]




                                ?<:    
           Take integer input again,
           rotate counterclockwise, move that number right (now up the icicle)

                                    d      move down
                                     [               ] until cell is space
                                       [ u]d   up until space is found, down 1
                                            [ ' d]  until space is found, write space to cell and move down
                                                  luu    move left, up, up
                                                   [end loop]

2

자바, (138) 137 바이트

void m(int l,int r){int f=l;do{String v="";for(int i=0;i++<l;v+="v");if(l/2<r)break;System.out.printf("%"+f--+"s%n",v);l-=2;}while(l>0);}

언 골프 드 :

void m(int l, int r) {
    int f = l;
    do {
        String v = "";
        for (int i = 0; i++ < l; v += "v");
        if (l / 2 < r) break;
        System.out.printf("%" + f-- + "s%n", v);
        l -= 2;
    } while (l > 0);
}

업데이트 : @ClaytonRamsey 덕분에 1 바이트 및 루프 본문이 사라졌습니다.


for-loop를 for (int i = 0; i ++ <l; v + = "v")로 다시 쓰면 1 바이트를 줄일 수 있습니다.
Clayton Ramsey

1

C, 83 바이트

i,j;f(s,m){for(i=-1;i++<s/2-m;)for(j=-1;++j<=s;)putchar(j<s?j>=i&&s-j>i?86:32:10);}

언 골프 및 사용법 :

i,j;
f(s,m){
  for(i=-1;i++<s/2-m;)
    for(j=-1;++j<=s;)
      putchar(j<s ?
                j>=i&&s-j>i ? 86 : 32
                : 10);
}


main() {

  f(5,0);
  f(7,0);
  f(7,2);
  f(7,3);
  f(3,1);

}

1

Pyth, 21 바이트

j<E.e+*kd*hyb\v_Uh/Q2

입력 한 S다음에 M개행으로 구분하여 결과를 인쇄 하는 프로그램입니다 .

테스트 스위트

작동 원리

j<E.e+*kd*hyb\v_Uh/Q2  Program. Inputs: Q, E
                  /Q2  Yield Q // 2
                 h      + 1
                U      Yield [0, 1, 2, ..., Q //2 +1]
               _       Reverse
   .e                  Map over with elements as b and zero-indexed indices as k:
           yb           2 * b
          h              + 1
         *   \v          "v" characters
     +                  prepended with
       k                k
      * d                spaces
 <E                    All but the last E elements
j                      Join on newlines
                       Implicitly print
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.