ラムダ紋章を描く


16

紀元前480年のサラミスでのギリシャの勝利の2497周年を祝うため。ラムダ紋章を描きます。

ラムダブラゾンは、ギリシャの盾に描かれたラムダです。

円形の白と金の盾の背景に赤い首都ラムダの画像

パズル:正の奇数の整数nが与えられると、上記の盾のアスキーアートイメージを生成します。

仕様:

n = 1:

( /\ )

n = 3:

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

n = 5

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

グラフ: n = 3

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

                 x-axis

説明:

正確にn \文字とn /文字が必要です。/Sおよび\Sは、シールドの縁に触れてはなりません。シールドの下部と上部の角を用いて表記する(か、)しない限りN = 1ここで1が存在することになる)と一つ(。下端とラムダの間には常に1つのスペースがあり、y軸で1ずつ増加しy + 1 == nます。シールド側の非コーナーはで示され|ます。シールド上部はありません。


7
なぜ投票するのですか?(行くために2以上)
user202729

3
@ user202729あと2つどういう意味ですか?
jacksonecac

4
SEにはコメント文字の制限があり、コメントは少なくとも15文字にする必要があります。
user202729

7
2.5k周年記念に投稿するのに3年間待てなかったのはなぜですか。
ハイパーニュートリノ

5
なぜ奇数の整数だけなのですか?:o
フェリックスパルメン

回答:


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
バイトを節約し、あなたのの半分は不要です。
ニール

1
また、別のバイトを保存するIθこともできます。
ニール

ニールの提案を要約すると、13バイト
Xcoder氏

@ Mr.Xcoderありがとう。
Steadybox

それは小さなだが、私はあなたの説明を信じている(→意味「...と、1つのステップを移動する必要があります
カミルDrakari

6

SOGL V0.1217の 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]));}

オンラインでお試しください!


私たちはメインを言い訳し、今含まれていますか?このコミュニティは変更されました。
アレックティール

2
@AlecTeal完全なプログラムではなく、指定されたタスクを実行する関数を記述することは許容されます。一般的に含まDOのバイト数にはカウントされ、いくつかのCコンパイラは、しかし、一致が存在している含まれていない場合は、関数定義を推測しようとします。
ジョナサンフレッチ

間違った番号を消したと思います、チーフ
ヴェスカー

@Veskahはい。._。
ジョナサンフレッチ

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%^|

かのように|sが悪く十分ではありませんでした、()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-×'/
ニール

良いアプローチですが、ゴルフにはいくつかのことがあります。1つは、@ Neilが上で提案したことです。さらに、次のように"|("することができます„|((1、2、および3文字の文字列に'はそれぞれ、およびが組み込まれています)。そして、0NQ¹<NQ~することができ΂NåèÎTIOのレガシーバージョンで盗聴しているように見えるが、それはあなたにも交換する必要があります。その場合には05AB1Eの最新バージョンで作業を行うº)。合計(21バイト):F„|(΂Nåè'/¹N-úðN×Jº, オンラインで試してください
ケビンクルーッセン


1

Python 2、90バイト

n=input()
for i in range(n):m=-~i%n<2;s=' '*(n-i);print'|('[m]+s+'/'+'  '*i+'\\'+s+'|)'[m]

オンラインでお試しください!

-1 ovsに感謝します。


以下のために失敗したn=1が、交換することによって固定することが可能i%~-n<1-~i%n<2
ロッド

@ロッドのおかげで、修正
エリックアウトゴルファー

90バイト'<space>'*i*2->'<space><space>'*i
ovs

@ovs @ _ @なぜそう思わなかったのか
エリック・ザ・アウトゴルファー

1

C#(.NET Core)、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

Python 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

PowerShell93 91 90 89バイト

-2余分な括弧を指摘してくれたASCIIのみに
感謝-1スワップロジックを調整してくれたMazzyに感謝

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

オンラインでお試しください!

その$x=ビットを微調整しようとしています。おそらく、最初の行と最後の行をより少ないバイトで出力するより賢い方法があります。より良いもの$x=がありますが、それほど安くはありません。



0

Canvas、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.