刑務所で今


18

チャレンジ

入力として整数n(where 4<=n<=10**6)を指定すると、以下の例のシンボルを使用して、n-1文字の幅とn高さを測定するASCIIアート「刑務所の扉」*が作成されます。


╔╦╗
╠╬╣
╠╬╣
╚╩╝

使用される文字は次のとおりです。

┌───────────────┬─────────┬───────┐
│ Position      │ Symbol  │ Char  │
├───────────────┼─────────┼───────┤
│ Top Left      │    ╔    │ 9556  │
├───────────────┼─────────┼───────┤
│ Top           │    ╦    │ 9574  │
├───────────────┼─────────┼───────┤
│ Top Right     │    ╗    │ 9559  │
├───────────────┼─────────┼───────┤
│ Right         │    ╣    │ 9571  │
├───────────────┼─────────┼───────┤
│ Bottom Right  │    ╝    │ 9565  │
├───────────────┼─────────┼───────┤
│ Bottom        │    ╩    │ 9577  │
├───────────────┼─────────┼───────┤
│ Bottom Left   │    ╚    │ 9562  │
├───────────────┼─────────┼───────┤
│ Left          │    ╠    │ 9568  │
├───────────────┼─────────┼───────┤
│ Inner         │    ╬    │ 9580  │
└───────────────┴─────────┴───────┘

ルール

  • 標準のI / Oルールで許可されている限り、合理的で便利な手段で入力を行うことができます
  • この課題のために、「ドア」を構築するために使用される記号がマルチバイト文字である言語では、それらはそれぞれシングルバイトとしてスコアにカウントされます。
  • 他のすべての文字(シングルバイトまたはマルチバイト)は、通常とカウントされる必要があります。
  • 出力には末尾のスペースを含めることはできませんが、どうしても必要な場合は末尾の改行を使用できます。
  • これはので、バイト数が最も少なくなります。

テストケース

Input: 4
Output:
╔╦╗
╠╬╣
╠╬╣
╚╩╝

Input: 8
Output:
╔╦╦╦╦╦╗
╠╬╬╬╬╬╣
╠╬╬╬╬╬╣
╠╬╬╬╬╬╣
╠╬╬╬╬╬╣
╠╬╬╬╬╬╣
╠╬╬╬╬╬╣
╚╩╩╩╩╩╝

Input: 20
Output:
╔╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╗
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣
╚╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╝

*はい、大きくなればなるほど刑務所のドアのように見えなくなることを知っています!:D


4
あなたが入力xとyの大きさの両方をできた場合、これは良いされているだろう
ベータ崩壊

15
それはあなたがそれを提案するのに十分な長さ以上にサンドボックスにありました。
シャギー

私のプログラムは、コードページにトラフさえも含むことができますか?そうでない場合、"'Z“ζ1バイトのコスト(または2)として許可されますか?(プッシュ9580、ユニコードに変換)?
-dzaima

@dzaima この課題の目的のために、「ドア」に使用される記号が複数バイトを使用する言語では、それらはそれぞれ単一バイトとしてスコアにカウントされます。
Okx

@Okx `╬` -任意のバイト量のrepresetableない、"'Z“ζ1バイトに等しいことは、JavaScriptでのようになる"╬"原価計算1バイト
dzaima

回答:


9

Java 8、156 151 148 118バイト

n->{String a="╔",b="╠",c="╚";for(int i=n;i-->3;a+="╦",b+="╬")c+="╩";a+="╗\n";for(b+="╣\n";n-->2;)a+=b;return a+c+"╝";}

5バイトをゴルフした後、@ raznagul C#(.NET Core)answerのポートを作成して-30バイト。

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

古い148バイトの回答:

n->{String r="╔";int i=n,j;for(;i-->3;r+="╦");r+="╗\n╠";for(i=n;i-->2;r+="╣\n"+(i>2?"╠":"╚"))for(j=n;j-->3;r+="╬");for(;n-->3;r+="╩");return r+"╝";}

@raznagulのおかげで-5バイト。

説明:

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

n->{                   // Method with integer parameter and String return-type
  String r="╔";        //  Result String (starting with the top-left corner)
  int i=n,j;           //  Indexes `i` and `j`
  for(;i-->3;          //  Loop (1) `n`-3 times:
      r+="╦"           //   Append result with top edges
  );                   //  End of loop (1)
  r+="╗\n╠";           //  Append result with the top-right corner, new-line and left edge
  for(i=n;i-->2        //  Loop (2) `n`-2 times
      ;                //     After every iteration:
      r+="╣\n"         //   Append result with right edge and new-line
      +(i>2?"╠":"╚"))  //    + either the left edge or bottom-left corner
    for(j=n;j-->3;     //   Inner loop (3) `n`-3 times:
        r+="╬"         //    Append result with middle section
    );                 //   End of inner loop (3)
                       //  End of loop (2) (implicit / single-line body)
  for(;n-->3;          //  Loop (4) `n`-3 times:
    r+="╩"             //   Append result with bottom edges
  );                   //  End of loop (4)
  return r+"╝";        //  Return result with its bottom-right corner
}                      // End of method

バイトをハードコーディングする代わりに、エスケープ/文字コードで保存できますか?
TheLethalCoder

@TheLethalCoderおそらく、チャレンジルールの状態ではシンボルをそれぞれ1バイトとしてカウントできるため、おそらくこのように短くなります(したがって、実際の176ではなく156バイトカウントになります)。しかし、文字コードで短くするためにいくつかのことを試してみてください。
ケビンCruijssen

ああ、ルールのその部分を逃した。
TheLethalCoder

2
移動先(-->)演算子の+1 。
raznagul

1
i-->3i-->2およびj-->3´ you can save 5 bytes by removing the n- = 3`およびを使用する場合n+1
raznagul

7

木炭34-5 = 29バイト

A⁻N³γUB╬↓×╠γ╠¶╚×╩γ‖BOγ‖BO↑⁺γ

オンラインでお試しください!リンクは、コードの詳細バージョンです。5バイト削減は、ボックス描画文字用です。

ReflectOverlapOverlap(0)と同等である必要がありますReflectMirror()が、代わりにCharcoalが代わりに行うだけReflectTransform()ですn=3。38-5 n=3= 33バイトで何が起こるかを示す回避策を次に示します。

A⁻N³γUB╬↓×╠γ╠¶╚×╩γ¿γ‖BOγ‖M‖BO↑⁺γ¹

それでも、うまくいけばReflectOverlapOverlap(0)、サポートを気にせず、31-4 n=3= 27バイトでこれを行うことができます:

A⁻N³γUB╬↓×╠γ╚×╩γ‖BOγ‖BO↑⁻γ¹

1
うーん、炭も反射/鏡などを知らなかった。「何らかの理由でチャコールのバイトカウンターが機能していません」チャコールのバイトカウンターが機能していないのは、これらの文字がコードページに含まれていないためでしょうか。これは確かに27あるので、あなたは、各けれどもチャレンジルールに従って、1つのバイトとしてそれらを数えることができる
ケビンCruijssen

@KevinCruijssen使用する演算子によって異なります。(私は毎回戻って再確認する必要があります;それらの多くがあり、それは混乱を招きます...)
ニール

@Neil Oops、それはバグですが、できるだけ早く修正します。見つけてくれてありがとう!
ASCIIのみ

また、いくつかの理由では、n = 4の場合壊れて@Neil
ASCIIのみ



6

Haskell、75バイト

w i(a:b:c)=a:(b<$[4..i])++c
f n=concat$w(n+1)$w n<$>["╔╦╗\n","╠╬╣\n","╚╩╝"]  

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

関数wは整数iとリストを受け取ります。ここで、リストaの最初のb要素、2番目の要素c、残りは、新しいリストを作成しa、その後にのi-3コピーがb続き、が続きcます。wリストの各要素に最初に適用し["╔╦╗\n","╠╬╣\n","╚╩╝"]、次に結果のリストに再度(をi増やして1)適用します。単一のリストに連結します。


<$演算子とは何ですか?引数を反転させただけで>>ですか?
アニーシュダーグ

@AneeshDurg:<$は元々でData.Functorあり、に入れられていPreludeます。それはほとんど同じです>>です。a <$ b内のすべての要素を置き換えるba、一方b >> aを期待はaのリストとを連結長さにbのコピーa[1,2] >> "aa"-> "aaaa""aa" <$ [1,2]-> ["aa","aa"]。注:'x' <$ [1,2]等しい[1,2] >> "x"
nimi

5

Vim、29バイト

3<C-x>C╔╦╗
╠╬╣
╚╩╝<Esc>h<C-v>kkx@-Pjyy@-p

制御文字があるため、xxdダンプを次に示します。

00000000: 3318 43e2 9594 e295 a6e2 9597 0de2 95a0  3.C.............
00000010: e295 ace2 95a3 0de2 959a e295 a9e2 959d  ................
00000020: 1b68 166b 6b78 402d 506a 7979 402d 70    .h.kkx@-Pjyy@-p

オンラインでお試しください!(Vインタプリタは、エキゾチックな文字に問題があるようです。そのため、そのリンクはより一般的な文字を使用します。)

説明

3<C-x>     " Decrement the number by 3
C╔╦╗
╠╬╣
╚╩╝<Esc>   " Cut the number (goes in @- register) and enter the "template"
h<C-v>kkx  " Move to the middle column, highlight and cut it
@-P        " Paste @- copies of the cut column
jyy        " Move to the middle line and copy it
@-p        " Paste @- copies of the copied line

確認するには:シンボルを窒息させているのはTIOインタープリターだけですか?
シャギー

@Shaggyええ、Vimエラーではなく、Latin-1に関するPythonエラーがスローされます。(TIOにプレーンなVimページがないため、Vページを使用しました。VはLatin-1を使用していると思います。)マシン上のVimには文字に関する問題はありません。
ヨルダン

5

GNU sed、74 + 1 = 75バイト

-rフラグ用に+1バイト。入力を単項数として受け取ります。

s/1111(1*)/╔╦\1╗\n;\1╠╬\1╣\n╚╩\1╝/
:
s/(.)1/\1\1/
t
s/;([^;\n]+)/\1\n\1/
t

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

説明

これは非常に簡単です。入力が6(単項111111)であるとします。最初の行は4をドロップし1、残りの入力を次のように変換します。

╔╦11╗
;11╠╬11╣
╚╩11╝

ループ内の3行目は、every 1をその前の文字に置き換えます。これにより、列が作成されます。

╔╦╦1╗
;11╠╬11╣
╚╩11╝

╔╦╦╦╗
;11╠╬11╣
╚╩11╝

...

╔╦╦╦╗
;;;╠╬╬╬╣
╚╩╩╩╝

これにより、;キャラクターも複製されていることに注意してください。最後に、ループ内の5行目は、すべての;文字を次の行のコピーに置き換えます。

╔╦╦╦╗
;;╠╬╬╬╣
╠╬╬╬╣
╚╩╩╩╝

╔╦╦╦╗
;╠╬╬╬╣
╠╬╬╬╣
╠╬╬╬╣
╚╩╩╩╝

╔╦╦╦╗
╠╬╬╬╣
╠╬╬╬╣
╠╬╬╬╣
╠╬╬╬╣
╚╩╩╩╝

4

ゼリー、33 バイト

... 33ですか?-1バイトの文字列リテラル(コードページインデックス)からUnicode文字に変換するには5かかります。

_2µ“€ðБẋ“¡Ø¤“©ßµ‘js3x€2¦€’+⁽"7ỌY

結果を印刷する完全なプログラム。

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

どうやって?

_2µ“€ðБẋ“¡Ø¤“©ßµ‘js3x€2¦€’+⁽"7ỌY - Main link: n
_2                                - subtract 2
  µ                               - start a new monadic chain with n-2 on the left
   “€ðБ                          - code page indexes [12, 24, 15] (middle row characters)
        ẋ                         - repeat n-2 times (make unexpanded middle rows)
         “¡Ø¤“©ßµ‘                - code page indexes [[0,18,3],[6,21,9]] (top & bottom)
                  j               - join (one list: top + middles + bottom)
                   s3             - split into threes (separate into the unexpanded rows)
                          ’       - decrement n-2 = n-3
                        ¦€        - sparsely apply to €ach:
                       2          -   at index 2
                     x€           -   repeat €ach (expand centre of every row to n-3 chars)
                            ⁽"7   - literal 9556
                           +      - addition (0->9556; 12->9568; etc...)
                               Ọ  - cast to characters (╠; ╔; etc...)
                                Y - join with newlines
                                  - implicit print

@Shaggy-文字列リテラル内の文字を表すために9バイトを使用しています-これらはコードページインデックスです。Y末尾の前の5バイトは+⁽"7Ọ、これらに9556を追加し、文字にキャストします。彼らは(5)無料ですか?Unicode文字を直接使用できるのと同じだと思います。(コードページインデックスではなく実際の文字を使用し、より多くのバイトのマッピングを使用することもできます)。
ジョナサンアラン

いや。議論の後、charのみが常に1としてカウントされ、他の表現はカウントされないと結論付けられました。
エリックアウトゴルファー


3

Dyalog APL、71バイト

{('╔',('╠'⍴⍨⍵-2),'╚'),((⍵-3)\⍪('╦',('╬'⍴⍨⍵-2),'╩')),'╗',('╣'⍴⍨⍵-2),'╝'}

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


これは間違いなくゴルフできます。例えばあなたはいつも置き換えることができ(some expr)f YY f⍨ some expr
アダム

@Adám私は知っています、それは進行中です、私は現在コンピューターにいません
Uriel

3

Japt60 52 49 48 36バイト

"╔{Uµ3 ç'╦}╗{UÄ ç"
╠{ç'╬}╣"}
╚{ç'╩}╝

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

別のバージョン(47バイト+ -Rフラグ)

"8{Uµ3 ç'J};{UÄ ç"D{ç'P}G"}>{ç'M}A"c_+9500ÃòU+2

-Rフラグが必要です(入力フィールドに追加)。オンラインでお試しください!

どのように機能しますか?

もともと「ドアキャラクター」のコストは1バイト以上であると想定していたため、エンコードすることでかなりのバイトを節約できると考えました。次に、文字コードから9500を減算しました。これにより、文字が残り8J; DPG >MA、それぞれ1バイトしかかかりません。次に、各文字コードに9500を追加するだけで、すべてうまくいきます。

 "8{   Uµ 3 ç'J}  ;{   UÄ  ç"D{   ç'P}  G"}  >{   ç'M}  A"c_+9500Ã òU+2
 "8"+((U-=3 ç'J)+";"+((U+1 ç"D"+(Uç'P)+"G")+">"+(Uç'M)+"A"c_+9500} òU+2
 "8"+           +";"+                      +">"+      +"A"              # Take this string of characters
     ((U-=3 ç'J)                                                        # Repeat "J" input - 3 times
                     ((    ç              )                             # Repeat the string
                            "D"+(Uç'P)+"G"                              # "D" + input-3 times "P" + "G"
                       U+1                                              # Input - 2 times
                                                (Uç'M)                  # Repeat "M" input - 3 times
                                                          c_     }      # Take the character code of every character
                                                            +9500       # Add 9500 to it
                                                          c_     }      # And convert it back to a character
                                                                   òU+2 # Split this string on every (input)th character
                                                                        # Print the resulting array, joined with newlines.

ああ、そう、あなたは正しい。
ルーク



2

Swift、161バイト

let f:(String,Int)->String={String(repeating:$0,count:$1)};var p={i in print("╔\(f("╦",i-3))╗\n\(f("╠\(f("╬",i-3))╣\n",i-2))╚\(f("╩",i-3))╝")}

ゴルフをしていない:

let f:(String,Int)->String = {
    String(repeating:$0,count:$1)
}
var p={ i in
    print("╔\(f("╦",i-3))╗\n\(f("╠\(f("╬",i-3))╣\n",i-2))╚\(f("╩",i-3))╝")
}

ここでこの回答を試すことができます


2

QBIC、78バイト

[:-3|X=X+@╦`]?@╔`+X+@╗`[b-2|Y=Z[b-3|Y=Y+@╬`]?@╠`+Y+@╣`}[b-3|W=W+@╩`]?@╚`+W+@╝`

幸いなことに、セル外のドアで使用されるすべてのシンボルはQBasicコードページにあります。

説明

            The TOP
[:-3|       FOR a = 1 to n-3 (-1 for the width, -2 for beginning and end)
X=X+@╦`]    Build out X$ with the parts of the middle-top
?@╔`+X+@╗`  Then print that preceded and followed by the corners
┘           Syntactic linebreak

            The MIDDLE
[b-2|       FOR c = 1 to n-2 (all the middle rows)
Y=Z         Reset Y$ to ""
            Build up the middle rows in the same way as the top,
            just with different symbols and once for each middle row
[b-3|Y=Y+@╬`]?@╠`+Y+@╣`
}           Close the FOR loop
            The BOTTOM
            The same as the top, just with different symbols
[b-3|W=W+@╩`]?@╚`+W+@╝`

サンプル出力

Command line: 7

╔╦╦╦╦╗
╠╬╬╬╬╣
╠╬╬╬╬╣
╠╬╬╬╬╣
╠╬╬╬╬╣
╠╬╬╬╬╣
╚╩╩╩╩╝

1
既定のコードページに実際に1バイト文字として含まれている言語を使用するための+1。
ジョシュア

TIO(または同等のもの)を追加できますか?
シャギー


1
そうそう!私は最終的にそれを覚えています、私は約束します!:D
シャギー

@Shaggy、アイデアにあまり慣れないでください。QBasicを実行しているDosboxのEmscriptenビルドを見つけました。私は来月にQBICに向けてそれをギア
リング


2

JavaScript(ES6)、86バイト

これは、 他のJSの回答が、別の方法で試してみたいと思いました。

n=>(g=i=>--i?`╬╣╠╩╝╚╦╗╔
`[(j=i%n)?!--j+2*!(n-j-2)+3*(i<n)+6*(i>n*n-n):9]+g(i):'')(n*n)

どうやって?

グリッドの各エッジに重みを割り当てます:右に1、左に2、下に3、上に6。重みの合計は、使用する文字のインデックスを提供します。

8666667    0 1 2 3 4 5 6 7 8
2000001    ╬ ╣ ╠ ╩ ╝ ╚ ╦ ╗ ╔
2000001
2000001
2000001
2000001
2000001
5333334

デモ


2

JavaScript(ES6)、80 74バイト

n=>`╔${"╦"[a="repeat"](n-=3)}╗${`
╠${"╬"[a](n)}╣`[a](n+1)}
╚${"╩"[a](n)}╝`

シンボルをそれぞれ1バイトとしてカウントし、80バイトにします。また、テンプレートリテラルを活用して数バイトを節約できるはずです;)
シャギー

CP437入力をネイティブに取得するES6実装を見つけることができる場合、シンボルを1バイトとしてカウントできます。
user5090812

@ user5090812、これはこのチャレンジに特有の手当です。
シャギー

@ user5090812その実装を見つける必要はありません。チャレンジルールには「このチャレンジの目的で、「ドア」に使用される記号が複数バイトを使用する言語では、それぞれ1バイトとしてスコアにカウントされる場合があるためです。 "したがって、これは98ではなく80バイトのバイトカウントになります(正しくカウントした場合)。
ケビンCruijssen

まあ、それは悪いルールです。キャラクターを保存するためのより良い方法を探すインセンティブがすべてなくなります。
ルーク

2

ルビー、54 52バイト

ymbirttのおかげで-2バイト。

->n{?╔+?╦*(n-=3)+"╗
"+(?╠+?╬*n+"╣
")*-~n+?╚+?╩*n+?╝}

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

非ゴルフ

これは非常に退屈です:

->n{
   ?╔ + ?╦ * (n-=3) + "╗\n" + 
  (?╠ + ?╬ * n      + "╣\n") * -~n + 
   ?╚ + ?╩ * n      + ?╝
}

(n+1)書くことで少し短くすることができます-~n-演算子の優先順位は括弧も節約します。
ymbirtt

2

Java 8、102 + 101バイト

java.util.function.BiFunction<String,Integer,String>r=(c,n)->"".valueOf(new char[n]).replace("\0",c);

n->{n-=3;return "╔"+r.apply("╦",n)+"╗\n"+r.apply('╠'+r.apply("╬",n)+"╣\n",-~n)+"╚"+r.apply("╩",n)+"╝";}

これは同じ長さの別の文字列リピーターです:

java.util.function.BiFunction<String,Integer,String>r=(c,n)->{String p=c;for(;--n>0;p+=c);return p;}

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


悪くない、あなたのアプローチを私の答えよりもさらに低くすることができます。まず、BiFunction:の代わりにJava 7メソッドを使用して、78 + 72バイト(合計150)に減らすことができます。オンラインn->{n-=3;return"╔"+r("╦",n)+"╗\n"+r("╠"+r("╬",n)+"╣\n",-~n)+"╚"+r("╩",n)+"╝";}String r(String c,int n){return c.valueOf(new char[n]).replace("\0",c);} 試してください。第2の方法はまた、に変更することができるString r(String c,int n){String r=c;for(;n-->1;r+=c);return r;}ことになるので、(63バイト)141バイトの合計
ケビンCruijssen

訂正、あなたもそれを下げることができます130バイトn->"╔"+r("╦",n-=3)+"╗\n"+r("╠"+r("╬",n)+"╣\n",-~n)+"╚"+r("╩",n)+"╝"String r(String c,int n){String r=c;for(;n-->1;r+=c);return r;} オンラインそれを試してみてください。
ケビンクルーッセン

2

C#(.NET Core)スコア123(141バイト)スコア118(136バイト)

n=>{string a="╔",b="╠",c="╚";for(int i=3;i++<n;a+="╦",b+="╬")c+="╩";a+="╗\n";for(b+="╣\n";n-->2;)a+=b;return a+c+"╝";}

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

@KevinCruijssenのおかげで-5バイト

説明:

n => 
{
    string a = "╔", b = "╠", c = "╚"; //Initialize the first, last and the middle lines with the starting character.
    for (int i = 3; i++ < n;          //Loop n-3 times
        a += "╦", b += "╬")           //Add the middle character to the first and middle line.
        c += "╩";                     //Add the middle character to the last line.
    a += "╗\n";                       //Add the end character to the first line.
    for (b += "╣\n";                  //Add the end character to the first line.
        n-- > 2;)                     //Loop n-2 times.
        a += b;                       //Add the middle line to the first line.
    return a + c + "╝";               //Add the last line and the final character and return.
}

1
いい答え、私からの+1。しばらく経ちましたが、オンラインで試すに変更b+="╣\n";c+="╝";for(;n-->2;)a+=b;return a+c;};すると、さらに5バイトゴルフできfor(b+="╣\n";n-->2;)a+=b;return a+c+"╝";} ます。
ケビンクルーッセン

@KevinCruijssen:ありがとう。
raznagul

2

スタックス、23 バイト

÷ÅoB↔╒╢Fm|╦a⌐á5µ┐»♫÷d╕Ñ

実行してデバッグする

これは、無料版です。面白いことに、stax がリテラル文字を使用しない方が実際には小さくなります。これは、リテラル文字をリテラルとして含めるとソースのパッキングが妨げられるためです。

"2Pfj_EQGG]T"!  packed representation of the 9 characters
3/              split into groups of 3
GG              call into trailing program twice
m               print each row
}               trailing program begins here
1|xv\           [1, --x - 1]; x starts as original input
:B              repeat each element corresponding number of times
                effectively, this repeats the internal row of the matrix
M               transpose door; this way it expands the two dimensions

これを実行する


1

Mathematica、106バイト

(T[a_,b_,c_]:=a<>Table[b,#-3]<>c;w=Column;w[{T["╔","╦","╗"],w@Table[T["╠","╬","╣"],#-2],T["╚","╩","╝"]}])&

TIO(または同等のもの)を追加できますか?
シャギー

1
goto sandbox.open.wolframcloud.com/app/objects コード(ctrl + v)を貼り付け、最後に[8]を追加し、shift + enterを押す
J42161217

各行の間に余分な改行があるように見えますが、出力自体ではなく、outpuのレンダリングに問題があると言ってもいいでしょうか?
シャギー

@Shaggy wolframクラウドはすべてのキャラクターをおかしく歪んだ方法で表示するため、このようなタスクを表示するのに最適な方法ではありません。テストケースをコピーして貼り付け、確認しました。同じように見えます
-J42161217


1

バッチ、126バイト

@set s=
@for /l %%i in (4,1,%1)do @call set s=%%s%%Î
@echo É%s:Î=Ë%»
@for /l %%i in (3,1,%1)do @echo Ì%s%¹
@echo È%s:Î=Ê%¼

CP437またはCP850で動作します。これらのコードページでは次のようになります。

@set s=
@for /l %%i in (4,1,%1)do @call set s=%%s%%╬
@echo ╔%s:╬=╦%╗
@for /l %%i in (3,1,%1)do @echo ╠%s%╣
@echo ╚%s:╬=╩%╝


1

PowerShell、67バイト

'╔'+'╦'*($x=$args[0]-3)+'╗';,('╠'+'╬'*$x+'╣')*($x+1);'╚'+'╩'*$x+'╝'

入力を取得し$args[0]、減算し3、保存し$x、ドア上部の構築でそれを使用して、適切な数の中間セクションを出力します。次に、中の行を出力しています$x+1。最後に、一番下の行は一番上の行に似ています。これらはすべてパイプラインに残されており、暗黙のうちにWrite-Output要素間に改行が無料で挿入されます。

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




弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.