람다 블라 존 그리기


16

기원전 480 년 살라미에서 그리스 승리 2497 주년을 축하합니다. 람다 blazon을 그립니다.

람다 blazon은 그리스 방패에 그려진 람다였습니다.

원형 흰색과 금색 방패 배경에 붉은 자본 람다의 이미지

퍼즐 : 양의 홀수 정수 n이 주어지면 위의 방패의 아스키 아트 이미지를 만듭니다.

명세서:

n = 1 :

( /\ )

n = 3 :

(   /\   )
|  /  \  | 
( /    \ )

n = 5

(     /\     )
|    /  \    |
|   /    \   |
|  /      \  |
( /        \ )

그래프 : n = 3

          2|   (   /\   )
y-axis    1|   |  /  \  | 
          0|   ( /    \ )
               ___________  
               0123456789

                 x-axis

기술:

정확히 n \ 자 및 n / 자 여야합니다 . /S와 \S는 실드의 모서리를 터치 안된다. 차폐 장치의 하부 및 상부 모서리가 함께 표시 될 것이다 (또는 )않는 N = 1 여기서 하나있을 것이다 )하나 (. 하단 모서리와 람다 사이에는 항상 하나의 간격이 있으며 y 축까지 1까지 증가합니다 y + 1 == n. 실드 쪽의 모서리가 아닌 것으로 표시됩니다 |. 쉴드 상단이 없습니다.


7
왜 공감해야합니까? (2 더 이동)
user202729 2016 년

3
2가 더 무엇을 의미합니까?
jacksonecac

4
SE에는 주석 문자 제한이있어 주석은 15 자 이상이어야합니다.
user202729 2016 년

7
2.5 주년을 맞이하여 3 년을 기다린 이유는 무엇입니까?
HyperNeutrino

5
왜 홀수 정수입니까? : o
Felix Palmen

답변:


8

,  17  13 바이트

4 바이트를 절약 해 준 @Neil에게 감사합니다!

(↙↓⊖θM↑(→↗N‖M

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

설명:

(↙                // Print '(' and move one step down and to the left.
  ↓⊖θ             // Print n-1 '|'s downwards.
     M↑          // Move one step up.
        (→        // Print '(' and move one step to the right.
          ↗N      // Print n '/'s towards the upper right corner.
            ‖M    // Mirror the left half to produce the right half.

1
바이트를 절약하고 s의 절반 이 필요하지 않습니다.
Neil

1
또한 다른 바이트를 저장할 Iθ수 있습니다 .
Neil

Neil의 제안을 요약하면 13 바이트
Mr. Xcoder

@ Mr.Xcoder 감사하지만 이미 그 일을하고 있습니다.
Steadybox

그것은 작은, 그러나 나는 당신의 설명을 믿지 (→의미 "... 그리고 한 단계 이동해야 권리를 "
카밀 Drakari

6

SOGL V0.12 , 17 14 바이트

┐*ƨ(Κm«@.╚┼┼╬³

여기 사용해보십시오!

설명:

example input: 3
┐*              push a string of input amount of "|"                      "|||"
  ƨ(            push "("                                                  "|||", "(("
    Κ           prepend that to the vertical bar string                   "((|||"
     m          mold that string as the input (remove excess characters)  "((|"
      «         put the first character at the end                        "(|("
       @        push a space                                              "(|(", " "
        .╚      create a diagonal of input length                         "(|(", " ", ["  /", " / ", "/  "]
          ┼┼    append those three horizontally together                  ["(   /", "|  / ", "( /  "]
            ╬³  palindromize that all                                     

4

C (gcc) , 103 96 바이트

f(n,j,b){for(j=n;j--;printf("%c%*c%*c%*c\n","|("[b],j+2,47,n+n-j+~j,92,j+2,"|)"[b=j<1|n-2<j]));}

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


우리는 요점을 변명하고 지금 포함합니까? 이 커뮤니티가 변경되었습니다.
Alec Teal

2
@AlecTeal 전체 프로그램이 아닌 지정된 작업을 수행하는 함수를 작성할 수 있습니다. 일반적으로 포함 바이트 수 계산에 일부 C 컴파일러 그러나, 일치가 존재하지 않는 경우 포함 된 기능의 정의를 추측 시도.
Jonathan Frech

잘못된 번호를
넘겼다고

@Veskah True. ._.
Jonathan Frech

3

레티 나 , 41 바이트

.+
$* 
 
( $'/$`$`\$' )¶
G`.
sT`()`|`¶.*¶

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

.+
$* 

단항으로 변환하지만 공백을 사용하십시오.

 
( $'/$`$`\$' )¶

일치 접두사 및 접미사 연산자를 사용하여 각 줄의 중심 공간이 증가하는 일련의 줄을 생성합니다.

G`.

그러나 빈 줄이 추가되어 최종 음역이 중단되므로 여기서 삭제하십시오.

sT`()`|`¶.*¶

첫 번째와 마지막을 제외한 모든 행에서 ()s를 |s로 변경하십시오 .







2

배치, 218 바이트

@echo off
set s=
for /l %%i in (1,1,%1)do call set s= %%s%%
set s=%s%/\%s%
echo (%s%)
for /l %%i in (2,1,%1)do call:l %1 %%i
exit/b
:l
set s=%s: /=/ %
set s=%s:\ = \%
if %1==%2 (echo ^(%s%^))else echo ^|%s%^|

마치 |의 충분히 나쁜 아니었다 ()들과 잘 작동하지 않습니다 if... else.


2

05ab1e (27 바이트)

F"|("0NQ¹<NQ~èð¹N-×'/ðN×J∞,

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

설명

F                                                #Loop n times        
 |("0NQ¹<NQ~è                                    #Use ( or |        
             ð¹N-×                               #put spaces (1)        
                  '/                             #put /                
                    ðN×                          #put more space                
                       J∞,                       #reverse image        

'/¹N-ú바이트보다 짧은 바이트 라고 생각 ð¹N-×'/합니다.
Neil

좋은 접근 방법이지만 골프에는 몇 가지가 있습니다. 하나는 @Neil이 위에서 제안한 것입니다. 또한 : "|("될 수있다 „|((1 내장 명령, 2가, 그리고 3 문자 스트링이되고 ', 그리고 각각); 그리고 0NQ¹<NQ~될 수있다 ΂Nåè( ÎTIO의 기존 버전에서 도청 것 같다,하지만 당신은 또한 교체해야하는 경우 05AB1E의 최신 버전에서 작업 수행 과를º ). 따라서 총 ( 21 바이트 ) : F„|(΂Nåè'/¹N-úðN×Jº, 온라인으로 사용해보십시오 .
Kevin Cruijssen



1

C # (. NET 코어) , 188 바이트

n=>{int y=0,i=-1;var s="";while(y<n){var r=new char[n*2+4];r[n+1-y]='/';r[n+2+y]='\\';if(y<2|y++>n-2)i++;r[0]="(|("[i];r[n*2+3]=")|)"[i];s+=new string(r)+"\n";}return s.Replace("\0"," ");}

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

탈고

n=>{
    int y=0,i=-1;
    var s="";

    while(y<n){
        var r=new char[n*2+4];
        r[n+1-y]='/';
        r[n+2+y]='\\';

        if(y<2 | y++>n-2)
            i++;

        r[0] = "(|("[i];
        r[n*2+3] = ")|)"[i];

        s += new string(r)+"\n";
    }

    return s.Replace("\0"," ");
}

1

파이썬 3, 110 바이트 93 바이트

b=c=int(input())*2
d,e='/\\'
while b:print('(|%%ss)|'[2<b<c::2]%f' {d+e:^{c}} ');d+='  ';b-=2

1

PowerShell , 93 91 90 89 바이트

-2 여분의 parens를 지적한 ASCII 전용
덕분에 -1 스왑 로직을 조정 한 Mazzy 덕분에

param($n)0..--$n|%{"|("[!($x=($n-$_)*$_)]+($y=" "*($n-$_+1))+"/"+"  "*$_+"\$y"+"|)"[!$x]}

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

$x=비트 를 조정하려고합니다 . 첫 번째 줄과 마지막 줄을 몇 바이트 미만으로 줄이려면 더 현명한 방법이있을 것입니다. 더 낫지 $x=만 훨씬 저렴하지는 않습니다.



0

캔버스 , 12 바이트

┤|×(e⟳ +╴/+║

여기 사용해보십시오!

설명:

┤             decrease the input by 2
 |×           repeat "|" vertically - if the amount is -1 (for input of 1), ir just removes the item currently
   (          push "("
    e        encase in that parentheis - if that first string isn't there, currently it just fails doing anything and leaves the parenthesis on the stack
     ⟳       rotate clockwise
       +     append horizontally a space
        ╴/   get a diagonal the length of the input
          +  append it horizontally to the current result
           ║  and palindromize horizontally with 0 overlap
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.