EとE


19

あなたの仕事は、5つの入力が与えられたときに、下の文字「E」の形をしたASCIIアートを表示することです。

例:

入力:(7,2,+,|,-注:この正確な入力形式に従う必要はありません。使用しない場合は、独自の入力形式の仕組みを説明する必要があります)

説明:

  • 7 左端と右端の文字を含む合計幅。

  • 2 垂直文字の数。

  • + 端に表示する文字。

  • | エッジの間に垂直に表示される文字。

  • - 水平に表示する文字。

上記の例の出力:

+-----+ 
|
|
+-----+
|
|
+-----+


他の例:

入力: 7,2,@,|,-

出力:

@-----@
|
|
@-----@
|
|
@-----@


入力: 7,2,+,|,#

出力:

+#####+
|
|
+#####+
|
|
+#####+


入力: 8,3,+,|,#

出力:

+######+
|
|
|
+######+
|
|
|
+######+


入力: 8,3,+,@,#

出力:

+######+
@
@
@
+######+
@
@
@
+######+


入力: 9,4,^,$,!

出力:

^!!!!!!!^
$
$
$
$
^!!!!!!!^
$
$
$
$
^!!!!!!!^


不正行為や標準的な抜け穴は許可されていません。

コードはSTDERRに何も出力してはなりません。

コードは、選択した文字エンコードを入力として受け入れますが、選択した文字エンコードは、少なくとも95個の印刷可能なASCII文字すべてをサポートする必要があります

このチャレンジを正常に完了する最短のコード(バイト単位)が勝者コードです。

リーダーボード


27
「入力なし」という特殊なケースは嫌いです。私の意見では、それはチャレンジに何も追加せず、無料で多くを複雑にします。
Yytsi

3
あなたはE入力として与え、Ewith Es を作ることができるので、タイトルはありますか?
-trichoplax

3
それにもかかわらず、私はそれを嫌いますが、「入力なし」とはどういう意味ですか?入力を渡さないと、Flooidのソリューションは残りの部分だけハングします。私のソリューションが競合するためには、5つのゼロを渡す必要があり、入力がゼロであるかどうかを確認し、それに応じて処理する必要があります...?-1。
Yytsi

4
@TheBitByte 2番目のコメントを参照して、実際に間違っていると思うことを確認してください。これで編集したので、+ 1。
-Yytsi

1
@ケビンうん。「入力なし」の解釈について少し混乱していました。空の文字列は、私の考えでは「入力なし」とは異なります。そして、私はインタープリター内でコードを実行するのに非常に慣れていて、その上で文字通り入力が送られるのを待っていたので、そこにそれを捨てました。
Yytsi

回答:


6

05AB1E16 14バイト

Í×s.ø©|`×`»D®»

説明

Í×                  # create a string of the correct nr of horizontal chars
  s.ø               # add the corner char on both sides
     ©              # save in register while keeping it on the stack
      |`            # push the remaining inputs to the top of the stack
        ×`          # push the correct nr of vertical chars on the stack
          »         # join on newline (joining the top vertical and horizontal sections)
           D        # duplicate this
            ®       # push the horizontal part again
             »      # join everything on newline

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

Adnanのおかげで4バイト節約されました。


1
好奇心から、なぜ©register:p を使用しているのですか?
アドナン

1
@アドナン:良いキャッチ!私は行くつもりだったが、結局それを使用せず、それを削除するのを忘れていた:)
エミグナ

1
@muddyfish:その部分が明らかではないという質問の説明を読んで、私はそれを見逃しました。知らせてくれてありがとうございます!
エミグナ

1
ここで機能する特別なサラウンドコマンドもありますÍ×s.øU×S»X»D»Xr»
アドナン

2
@アドナン:そうですね。いい考え!私は前にそれを使用したことがない:)
エミグナ

6

Python、53 51 55バイト

lambda a,b,c,d,e:d.join("\n"*-~b).join([c+e*(a-2)+c]*3)

@nimiのおかげで+4バイト

無名ラムダ関数、それを呼び出すには、そのf=前に書き込みます。例:

>>> print f(4,1,"€","|","-")
€--€
|
€--€
|
€--€

代替、53バイト

lambda a,b,c,d,e:((c+e*a+c+"\n"+(d+"\n")*b)*3)[:-b*2]

入力なしの特別な場合、69 65 63バイトの古いバージョン

チャレンジ中に要件を変更することに賛成...

lambda a=1,b=1,(c,d,e)="+|-":d.join("\n"*-~b).join([c+e*a+c]*3)

2
小さなバグ:最初の引数(この2例では)は、角を含む線の全長であるため、形状の正しい入力はf(4,1 ...)です。
nimi

@nimi、ヒントをありがとう。(+4バイト:()OPの最初の例は少し
わかり

4

C、167の 161 159バイト

うん。

#define p putchar
i,j;g(a,c,e){p(c);for(i=2;i++<a;)p(e);p(c);p(10);}h(b,d){for(i=0;i++<b;){p(d);p(10);}}f(a,b,c,d,e){g(a,c,e);h(b,d);g(a,c,e);h(b,d);g(a,c,e);}

いくつかのテストケースを使用して、Ideoneで試してください


2
puts( "")-> p( '\ n')?または、p(10)でも機能する場合
-RiaD

どうしてそれを見逃したの!ありがとう、@ RiaD。
-betseg

また、2でループを開始すると、より多くのバイトに保存されます
-RiaD

3

ルビー、54 45 42バイト

->x,y,c,v,h{[c+h*~-~-x+c+$/]*3*((v+$/)*y)}

これは、入力のさまざまな部分を個別のパラメーターとして受け取り、結果を完全な文字列として返す匿名関数です。

例えば、

f=->x,y,c,v,h{[c+h*~-~-x+c+$/]*3*((v+$/)*y)}
puts f[6, 2, 'Ø', 'V', '>']

プリント

Ø>>>>Ø
V
V
Ø>>>>Ø
V
V
Ø>>>>Ø

3

Javascript(ES6)、64バイト

(h,v,e,V,H)=>(v=(h=e+H.repeat(h-2)+e)+`
${V}`.repeat(v)+`
`)+v+h

let f =
(h,v,e,V,H)=>(v=(h=e+H.repeat(h-2)+e)+`
${V}`.repeat(v)+`
`)+v+h

console.log(f(8,3,'+','@','#'))


これは、入力がないという特殊なケースを処理しますか?
コナーオブライエン

{ "message": "Script error.", "filename": "", "lineno": 0, "colno": 0 }インラインで実行する場合。
noɥʇʎԀʎzɐɹƆ

@AgentCrazyPython-IEで実行しますか?それは何のサポートがないために.repeat()
アルノー

@Arnauld NAW、サファリ
noɥʇʎԀʎzɐɹƆ

ああ、それは... ES6だ
noɥʇʎԀʎzɐɹƆ


3

R、80バイト

かなり繰り返し:

function(h,v,a,b,c)cat(t<-c(a,rep(c,h),a,"\n"),d<-rep(c(b,"\n"),v),t,d,t,sep="")

アンゴルフド:

function(h,v,a,b,c)

cat(t<-c(a,rep(c,h),a,"\n"),
    d<-rep(c(b,"\n"),v),
    t,d,t,
    sep="")


2

Pyth、19バイト

jP*3,++Jw*-E2wJj*Ew

コーナー文字、水平文字数、水平文字、垂直文字数および垂直文字のSTDINで改行で区切られた入力を取得し、結果を出力するプログラム。

オンラインで試す

使い方

jP*3,++Jw*-E2wJj*Ew  Program.
       Jw            Get the corner character. Store in J
           E         Get the number of horizontal characters
          - 2        -2
         *   w       Get the horizontal character and repeat it that many times
      +              Add J at the beginning of that
     +         J     and at the end
                 E   Get the number of vertical characters
                * w  Get the vertical character and repeat it that many times
               j     Join the above on newlines
    ,                Construct a 2-element list from the horizontal and vertical strings
  *3                 Repeat it 3 times
 P                   Everything except the last element
j                    Join the above on newlines
                     Implicitly print

2

MATLAB、95 92 91 85 81バイト

MATLAB 'E'関数。(編集:Octaveでは機能しません)

function a=e(n,m,c,h,v);a(1:n)=h;a=[c a c];a(2:m+1,1)=v;a=[a;a;a];a=a(1:3+2*m,:);

そして、無制限:

function a=e(n,m,c,h,v); %Declare the function
a(1:n)=h;                %Initialise return with top line excluding the corners
a=[c a c];               %Then add corner pieces
a(2:m+1,1)=v;            %Next add the first vertical part
a=[a;a;a];               %Repeat three times vertically to get an E with a tail
a=a(1:3+2*m,:);          %And then lop off the tail

関数は次のように呼び出す必要があります。

e(5,2,'*','-','|')

どちらが返されます:

+-----+
|      
|      
+-----+
|      
|      
+-----+

これはおそらく少し簡略化できますが、引き続き作業します。入力を取得するために関数宣言全体が必要ではないので、それを改善できるかどうかを確認します。


  • 最初の行の生成を簡素化して最初に角のない線を作成し、次に角を追加することで3バイトを節約しました。これにより、インデックス作成が必要になる回数が減りました。

  • 最初のコーナーから開始して保存された別のバイト。

  • repmat(a,3,1)callをに置き換えて、さらに6バイト[a;a;a]

  • a特定の初期化なしで使用することで4バイトを節約しました(関数宣言で既に宣言されています)-@LuisMendoに感謝します


1
@LuisMendo面白い。私は元々a=[c a c]そこにいましたが、通常は存在しない変数にインデックスアクセスしてプロセスで作成できないため、物事を縮小するためにそれを削除しました。これは関数であることを忘れてaいたので、関数宣言で戻り値として既に宣言されています。ありがとう:)
トムカーペンター

実際、関数内になくても実行できます-存在しない変数のインデックス付けは作成します。毎日新しいことを学びましょう。
トムカーペンター

2

Perl、40 + 1(-n)= 41バイト

14バイトを節約し、プログラムが10を超えるエントリで動作できるようにしてくれた@Ton Hospelに感謝します。

/.$/;$,=$/.<>x<>;say+($`.$&x(<>-2).$`)x3

実行する必要-nがあります-E(または-M5.010)。例えば ​​:

perl -nE '/.$/;$,=$/.<>x<>;say+($`.$&x(<>-2).$`)x3' <<< '^$
!
4
9'

1
@TheBitByteわかりました、できました、ありがとう。
ダダ

2
これはすでに非常に良いです。ただし、入力形式を少し試して、ファイルを< 10入れて(使用するため)、48バイト(余分な2つ)としてカウントする(実際の改行を/(.)(.)/;$,=$' x<>;say+($1.$2x(<>-2).$1.$/)x3使用する$')ことでチャレンジが繰り返しであると言っていないという問題を解決することもできますperl -M5.010 -n prog.pl <<< '^!S\n4\n9'ハンディキャップと組み合わせることができないため-e))
トンホスペル

@TonHospelありがとう。右、私はこれが数字ではうまくいかないことにさえ気づいていませんでした>10..入力フォーマットでの素晴らしい仕事、ありがとう。
ダダ

これは、入力フォーマットを選択する自由を乱用することに近づいていますが、:perl -nE '/.$/;$,=$/.<>x<>;say+($`.$&x(<>-2).$`)x3' <<< '^$\n!\n4\n9'41バイト(これ以上$')では、誤った末尾の改行も
削除し

@TonHospel確かに、最初の提案の後、私はその解決策を思いつきましたが、入力形式のためにあまり快適ではありませんでした...私たち両方がそれについて考えていたので、答えを変えましたが、それでもそれは少しチートです...-
ダダ

2

Dyalog APL31 29 バイト

水平文字、幅、ジャンクション文字、高さ、垂直文字のプロンプト-この順序で。

h↓⊃⍪/3/⊂↑(⍞⍴⍨h←⎕),⊂⍞{∊⍺⍵⍺}⎕⍴⍞

⎕⍴⍞ input-horizo​​ntal-characterおよびrepeat input-width回(以下の

⍞{... }入力ジャンクション文字機能に...

∊⍺⍵⍺ flatten [[junction]、[horizo​​ntals]、[junction]]

カプセル化してリストの一部にできる

(...), prepend ...

h←⎕ 入力高さ

⍞⍴⍨ 入力垂直文字とそれを何度も繰り返す

文字列のリストを文字テーブルにする

カプセル化(全体として繰り返すことができるように)

3/ それを3回繰り返します

    
┗━ ┗━ ┗━

⍪/ 3つのピースを垂直に連結します


┣━
┣━
┗━

(これもそれらをカプセル化しますので、...する必要があります)

カプセル化を削除します

h↓最初のh(行)をドロップします

┏━
┣━
┗━

TryAPLオンライン!


2

C、130バイト

#define p putchar
#define E for(o=0;o++<O;p(10))p(S);
#define W for(p(P),D=0;D++<C-2;)p(_);p(P);p(10);
f(C,O,P,S,_,D,o){W E W E W}

使用法:

main(){f(7,2,'+','|','-');}

出力

+-----+
|
|
+-----+
|
|
+-----+

defines のセミコロンを削除して追加するとf(C,O,P,S,_,D,o){W;E;W;E;W;}、バイトが節約されます。
betseg

2

C#、108バイト

(m,n,e,v,h)=>{string x=e+new string(h,m-2)+e+"\n",y=new string(v,n).Replace(v+"",v+"\n");return x+y+x+y+x;};

各水平線と垂直線を生成し、最終出力を作成する匿名関数。

ゴルフ機能なし:

(m,n,e,v,h)=>
{
    string x = e + new string(h, m - 2) + e + "\n",
        y = new string(v, n).Replace(v + "", v + "\n");
    return x + y + x + y + x;
};

テストケースを含む完全なプログラム:

using System;

namespace LetterEWithoutE
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<int,int,char,char,char,string>f= (m,n,e,v,h)=>{string x=e+new string(h,m-2)+e+"\n",y=new string(v,n).Replace(v+"",v+"\n");return x+y+x+y+x;};

            Console.WriteLine(f(7,2,'+','|','-'));
            Console.WriteLine(f(7,2,'@','|','-'));
            Console.WriteLine(f(7,2,'@','|','#'));
            Console.WriteLine(f(8,3,'+','|','#'));
            Console.WriteLine(f(8,3,'+','@','#'));
            Console.WriteLine(f(9,4,'^','$','!'));
        }
    }
}

2

MATL、15バイト

訂正してくれた@muddyfishに感謝

2-Y"yv!iiY"!yyy

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

説明

チャレンジの最初の例を使用して、各ステップの後のスタックの内容がわかりやすく示されています。

2-    % Implicitly input number of repetitions of the char of the horizontal line.
      % Subtract 2
      %   STACK: 5
Y"    % Implicitly input char of the horizontal line. Apply run-length decoding
      %   STACK: '-----' (string)
y     % Implicitly input (from below) the char of the corners. Duplicate onto the top
      %   STACK: '+', '-----', '+'
v!    % Concatenate all the stack horizontally. We now have the horizontal line
      % including the corners
      %   STACK: '+-----+'
iiY"  % Take two inputs: char of the vertical line and number of repetitions
      %   STACK: '+-----+', '||'
!     % Transpose. This tranforms the string into a vertical char array, which
      % gives the vertical line
      %   STACK: '+-----+', ['|';'|'] (vertical char array)
y     % Duplicate from below: this pushes a new copy of the horizontal line
      % onto the top of the stack
      %   STACK: '+-----+', ['|';'|'], '+-----+'
y     % Duplicate from below: this pushes a new copy of the vertical line
      % onto the top of the stack
      %   STACK: '+-----+', ['|';'|'], '+-----+', ['|';'|'],
y     % Duplicate from below: this pushes a new copy of the horizontal line
      % onto the top of the stack
      %   STACK: '+-----+', ['|';'|'], '+-----+', ['|';'|'], '+-----+'
      % Implicitly display

1

Bash + coreutils、105バイト

printf -- "$3`printf -- "$4%.0s" $(seq $1)`$3`printf "\n$5%.0s" $(seq $2)`%.0s\n" {1..3}|sed -n 1,$(($2*2+3))p

これが保存されるファイルに名前が付けられていると仮定します A.sh使用法は次のようになります。

bash A.sh <Horizontal Segment Length w/out Edge Chars> <Vertical Segment Length> '<Left/Right Edge Char>' '<Char Between Edges>' '<Vertical Char>'

--文字入力のいずれかがあることを起こる念のために、必要とされ-、そしてprintf明らかにダブルダッシュなしの非常に素晴らしい文字列の先頭でダッシュを処理しません。

説明

入力が5 2 + * |...

  1. $3printf -- "$4%.0s" $(seq $1)$3printf "\n$5%.0s" $(seq $2)

    最初の水平セグメントと垂直セグメントをすべて一緒に作成します。これは次の結果になります。

    +*****+
    |
    |
    
  2. printf -- "$3printf -- "$4%.0s" $(seq $1)$3printf "\n$5%.0s" $(seq $2)%.0s\n" {1..3}

    以前に作成したパートを3何度も繰り返します。これにより、次の結果が得られます。

    +*****+
    |
    |
    +*****+
    |
    |
    +*****+
    |
    |
    
  3. printf -- "$3printf -- "$4%.0s" $(seq $1)$3printf "\n$5%.0s" $(seq $2)%.0s\n" {1..3}|sed -n 1,$(($2*2+3))p

    最後に、前の出力をパイプしてsed、の最初の<Vertical Segment Length>*2+3行のみを出力することにより、最後の2行のセグメントを取り除きEます。ついにE欲しいものが手に入ります:

    +*****+
    |
    |
    +*****+
    |
    |
    +*****+
    

1

PowerShell v2 +、60 59バイト

param($a,$b,$c,$d,$e)(,($x="$c$($e*($a-2))$c")+,$d*$b)*2;$x

入力を個々のコマンドライン引数として受け取ります。水平方向の文字列を作成し、$x後で使用するために保存してから、それをカンマ演算子で配列に形成します,。要素$dの配列に定式化された配列の連結(つまり、要素を最後に追加)を実行します$b。次に、別のコンマ演算子を使用して2つの要素の配列に定式化され、パイプラインに残ります。次に、水平線$xがパイプラインに残ります。のデフォルトのフォーマットを乱用しますWrite-Output要素間に改行を配置します。

PS C:\Tools\Scripts\golfing> .\the-letter-e-without-e.ps1 5 3 "z" "v" "d"
zdddz
v
v
v
zdddz
v
v
v
zdddz

1

Python 3、60バイト

機能

def p(a,b,c,d,e):q=c+e*(a-2)+c;return(q+'\n'+(d+'\n')*b)*2+q

テストケース

>>> print(p(8,2,'+','|','#'))
+######+
|
|
+######+
|
|
+######+

出力に2つのダッシュが多すぎます

1

Brainf * ck、147バイト

,>,>++++++++[<------<------>>-]<<-->>>,>,>,>+++>++>++++++++++<<[-<<<.<<<[->>+>>>.<<<<<]>>[-<<+>>]>.>>>>>.<[-<<<<<<[->+>>.>>>>.<<<<<<<]>[<+>-]]>>>>]

入力された最初の5文字として、stdinからの入力を受け取ります。最初の2つは、ASCIIコードから48を引いているため、0-9は期待どおりに動作します。数字が9を超える場合は、数字に48を追加し、対応する文字を使用します。他の3文字は、チャレンジで指定されたとおりです。

私はそれが最適な解決策ではないと確信していますが、人生はゴルフブレインフックには短すぎます。

コメント付き:

[
    Input: number number corner vertical horizontal
    Numbers are single digits; add 48 and use the ASCII character corresponding
    to the number you want for numbers > 9.
    First number is the number of characters across. Second is the number down.

    Layout: {first number-2} {second number} {temp} {a} {b} {c}
]

,>,>++++++++[<------<------>>-]<<-->>>,>,>,
now we should have the first five cells with the specified layout
the 6th will hold 3 as a counter and the 7th 2 and the 8th 10 '\n'

>+++>++>++++++++++<<
[  while the 6th cell is not 0
    -
    <<<.    print corner
    <<<[->>+>>>.<<<<<]  print horizontal characters
    >>[-<<+>>]         copy temp back to 1st cell
    >.>>>>>.           print corner and newline
    <
    [ If the second counter is not zero
        -
        <<<<<<[->+>>.>>>>.<<<<<<<]  print vertical and newline n times
        >[<+>-]           copy temp back to 2nd cell
    ]
    >>>>
]

実行例:

sean@SEANSBOX:~/Dropbox/Code/BF$ ./bf E.b
94^$!
^!!!!!!!^
$
$
$
$
^!!!!!!!^
$
$
$
$
^!!!!!!!^

1

PHP、97バイト

list(,$w,$h,$c,$v,$r)=$argv;echo$b=str_pad($a=str_pad($c,++$w,$r)."$c\n",--$h*2+$w,"$v\n"),$b,$a;

ループなし、組み込みのみ。

で実行しphp -r '<code>' <parameters>ます。


1

Java 7、205 129バイト

String c(int w,int h,String a,char b,char c){String r=a,n="\n",l="";for(;w-->2;r+=c);r+=a+n;for(;h-->0;l+=b+n);return r+l+r+l+r;}

匿名の見知らぬ人のおかげで-76バイト。
PS:次回は他の人の投稿を編集しないでください。あなたがゴルフに何かを持っている場合はコメントとしてそれを残してください、またはそれが完全に異なるアプローチを使用している場合は、独自の答えを作ることができます。それでも、これらすべてのバイトをゴルフで撃ってくれてありがとう。

未ゴルフ&テストケース:

ここで試してみてください。

class M {
    static String c(int w, int h, String a, char b, char c){
        String r = a,
               n = "\n",
               l = "";
        for(; w-- > 2; r += c);
        r += a+n;
        for( ;h-- > 0; l += b+n);
        return r+l+r+l+r;
    }

    public static void main(String[] a) {
        System.out.print(c(7, 2, "+", '|', '-'));
        System.out.print(c(9, 4, "?", '¡', '¿'));
    }
}

出力:

+-----+
|    
|    
+-----+
|    
|    
+-----+

?¿¿¿¿¿¿¿?
¡      
¡      
¡      
¡      
?¿¿¿¿¿¿¿?
¡      
¡      
¡      
¡      
?¿¿¿¿¿¿¿?

0

ラケット124バイト

(λ(w h a b c)(for((i 3))(display a)(for((i w))(display c))(display a)(when(< i 2)(displayln "")(for((j h))(displayln b)))))

より読みやすい形式:

(define(f w h a b c)
  (for((i 3))
    (display a)
    (for((i w))
      (display c))
    (display a)
    (when(< i 2)
      (displayln "")
      (for((j h))
        (displayln b)))))

テスト:

(f 7 2 "+" "|" "-" )

+-------+
|
|
+-------+
|
|
+-------+

0

C ++、121バイト

#import<string>
#import<iostream>
#define f(w,h,C,W,H){std::string s(w,W),t;s=C+s+C+"\n";for(int i=h;i--;)t=t+H+"\n";std::cout<<s+t+s+t+s;}

ゴルフをしていない:

#import<string>
#import<iostream>
#define f(w,h,C,W,H){
    std::string s(w,W),t;  //define two strings, one empty, one with horizontal characters
    s = C+s+C+"\n";        //assemble a horizontal bar
    for(int i=h;i--;) 
        t=t+H+"\n";        //assemble a vertical bar
    std::cout<<s+t+s+t+s;  //print
}

C ++では、Cのように型のない関数を宣言することはできません。ただし、関数のように動作するマクロは完全に可能です。また、マクロの最後の行以外の各行に「\」を追加するまで、未ゴルフバージョンはコンパイルされないことに注意してください。{}を削除することでさらに2バイトを節約できますが、マクロを連続して2回使用することはできません。

使用法:

int main() {
    f(4,2,'+','-','|')
    f(2,1,'@','#','i')
    return 0;
}

出力:

+----+
|
|
+----+
|
|
+----+
@##@
i
@##@
i
@##@

オンラインで試す


0

CJam、23バイト

riri)N*r2*\r*\@r**a3*\*

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

入力は指定された順序ですが、コンマを使用する代わりにスペースで区切る必要があります。いくつかの困難は、入力をCJamの結合操作に*適切な順序にすることです。比較のために入力を再配置すると4バイト節約できます

入力がダビングされているA B C D E場合、プログラムは次のように動作します。

ri     e# get A as integer
ri)N*  e# create B+1 newlines
r2*    e# create 2 Cs
\r*    e# join newlines with D (hereafter ND)
\@     e# bring A & Cs to the front
r*     e# create A Es
*      e# join, puts Es between Cs (hereafter CEC)
a3*    e# makes 3 copies of CEC strings
\*     e# join, puts NDs between CECs

0

Lua(5.2)、144バイト

k,a,p,q=loadstring,arg,io.write,print l,d=k"for i=3,a[1]do p(a[5])end",k"for i=1,a[2]do q(a[4])end"b=a[3]p(b)l()q(b)d()p(b)l()q(b)d()p(b)l()p(b)

オンラインでお試しください!(コーディンググラウンド)

今すぐそのようなものを出力するはずです:

+@@@@@+
l
l
+@@@@@+
l
l
+@@@@@+

独自の入力: 7 2 + l @

project-> compileオプションで入力を変更すると、値が変更されます。各値は例のようになりますが、コンマではなくスペースで区切られます。


0

QBIC、44バイト

::;;;X=A[q,a-2|X=X+C]X=X+A ?X[1,2|[1,b|?B]?X

説明

::;;;                 Get the input parameters, 2 numbers and 3 strings
X=A[q,a-2|X=X+C]X=X+A Build the horizontal string: The corner string, x-2 times the filler string and another corner
?X                    Print the horizontal string
[1,2|                 Do the next thing twice
[1,b|?B]?X            Print the right number of vertical strings, then the horizontal string.

0

PHP、94バイト

<?list($v,$h,$p,$d,$r)=$_GET[a];for($h++;$i<=2*$h;)echo$i++%$h?$d:str_pad($p,$v-1,$r).$p,"\n";

入力フォーマットは、推奨される文字列と同じ順序で配列をフォーマットします


,"\n"代わりに使用する場合."\n"、3項の括弧を削除できます。
タイタス

for($h++;$i<=2*$h;)$i++%$h別のバイトを保存します。
タイタス

$v-1は、3つの水平文字のみを提供し[5,2,+,|,-]ます。左右のエッジ文字を含まない水平文字の数、
タイタス

@Titusが正しい、編集をロールバックしました。5水平とは、2つのエッジを持つ3つの文字= 5を意味します。質問を見てください。そして、他の人のアイデアありがとうございます
ヨルクヒュルサーマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.