В тюрьме сейчас


18

Вызов

Используя целое число n(где 4<=n<=10**6) в качестве входных данных, создайте художественную «тюрьму» ASCII *, измеряющую n-1ширину и nвысоту символов, используя символы из примера ниже.


пример

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

Используемые символы:

┌───────────────┬─────────┬───────┐
│ 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  │
└───────────────┴─────────┴───────┘

правила

  • Вы можете принять ввод любым разумным и удобным способом, если это разрешено стандартными правилами ввода / вывода .
  • Для выполнения этой задачи на языках, где символы, используемые для построения «двери», являются многобайтовыми символами, они могут быть засчитаны в ваш счет в виде одного байта каждый.
  • Все остальные символы (одно- или многобайтовые) должны учитываться как нормальные.
  • Вывод может не содержать завершающих пробелов, но завершающий перевод строки разрешается, если это абсолютно необходимо.
  • Это поэтому выигрывает меньшее количество байт.

Тестовые случаи

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

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

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

* Да, я знаю, что чем больше он становится, тем меньше он выглядит как тюремная дверь! : D


4
Это было бы хорошо, если бы вы могли ввести оба значения x и y
Beta Decay

15
Это было в Песочнице более чем достаточно долго, чтобы вы могли это предположить.
Лохматый

Может ли моя программа содержать даже корыто не в своей кодовой странице? Если нет, то "'Z“ζразрешается ли стоимость одного байта (или 2)? (нажмите 9580, конвертировать в юникод)?
Дзайма

@dzaima Для целей этой задачи на языках, где символы, используемые для «двери», занимают несколько байтов, они могут быть засчитаны в ваш счет как один байт каждый.
Okx

@Okx `╬` - не подлежит представлению ни в каком количестве байтов, "'Z“ζравное одному байту будет как в javascript "╬"стоимостью 1 байт
dzaima

Ответы:


9

Ява 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+"╝";}

-30 байт, создав порт ответа @raznagul C # (.NET Core) , после того, как я набрал 5 байтов.

Попробуйте онлайн.

Старый 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+"╝";}

-5 байт благодаря @raznagul .

Объяснение:

Попробуй это здесь.

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

Можете ли вы сохранить байты с кодами escape / char вместо жесткого их кодирования?
TheLethalCoder

@TheLethalCoder Возможно, но, поскольку в состоянии правила вызова мы можем считать символы по 1 байту каждый, он, вероятно, короче (отсюда 156 байтов вместо фактического 176). Но не стесняйтесь попробовать некоторые вещи, чтобы сделать его короче с помощью кодов символов.
Кевин Круйссен

Ах, я пропустил эту часть правил.
TheLethalCoder

2
+1 для -->оператора go ( ).
Разнагул

1
Если вы используете i-->3, i-->2а j-->3´ you can save 5 bytes by removing the n- = 3` и n+1.
Разнагул

7

Древесный уголь , 34 - 5 = 29 байт

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

Попробуйте онлайн! Ссылка на подробную версию кода. 5-байтовое сокращение предназначено для символов рисования прямоугольников.

ReflectOverlapOverlap(0)должен быть эквивалентен, ReflectMirror()но вместо этого Charcoal просто делает ReflectTransform()вместо этого, в противном случае это решение также будет работать n=3. Вот обходной путь, который показывает, что произойдет n=3для 38 - 5 = 33 байта:

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

Еще лучше, если бы ReflectOverlapOverlap(0)работал, но я не потрудился поддержать n=3, тогда я мог бы сделать это для 31 - 4 = 27 байт:

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

1
Хм, не знал , что древесный уголь также отражает / зеркала в и такие. « Счетчик байтов Charcoal по какой-то причине не работает. » Может быть, счетчик байтов Charcoal не работает, потому что эти символы не являются частью его кодовой страницы? Вы можете считать их как 1 байт каждый в соответствии с правилами вызова, так что это действительно 27.
Кевин Круйссен

@KevinCruijssen Это зависит от того, какой оператор вы используете. (Я должен возвращаться и перепроверять каждый раз; их несколько, и это сбивает с толку ...)
Нил,

@ Нил Ой, это ошибка, исправлю как можно скорее. Спасибо, что нашли это!
Только для ASCII

@Neil Также по какой-то причине он ломается, когда n = 4
только для 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второй элемент и cостальная часть списка, и создает новый список a, за которым следуют i-3копии b, а затем c. Подать заявлениеwСначала к каждому элементу списка, ["╔╦╗\n","╠╬╣\n","╚╩╝"]а затем снова (с iувеличением на 1) в результирующем списке. Объединить в один список.


Что такое оператор <$? Это просто >> с аргументами перевернул?
Аниш Дург

@AneeshDurg: <$родом из Data.Functorи был введен в Prelude. Это почти так же, как >>. a <$ bзаменяет каждый элемент на bwith a, тогда как 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 Да, выдает ошибку Python о Latin-1, а не ошибку Vim. (Я использовал страницу V только потому, что у TIO нет простой страницы Vim, и я думаю, что V использует Latin-1.) Vim на моей машине не имеет проблем с символами.
Иордания

5

GNU sed, 74 + 1 = 75 байт

+1 байт за -rфлаг. Вводит в виде одинарного числа.

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

Попробуйте онлайн!

объяснение

Это довольно просто. Предположим, что ввод 6 (унарный 111111). Первая строка сбрасывает четыре 1с и преобразует оставшиеся входные данные в это:

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

Третья строка в цикле заменяет каждую 1на символ, предшествующий ей. Это создает наши столбцы:

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

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

...

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

Обратите внимание, что это также дублирует ;характер. Наконец, пятая строка в цикле заменяет каждый ;символ копией следующей строки:

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

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

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

4

Желе , 33 байта

... это 33? - преобразование однобайтовых строковых литералов (индексов кодовых страниц) в символы Юникода стоит 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 байтов для представления символов внутри строковых литералов - это индексы кодовых страниц. 5 байтов перед Yв конце, +⁽"7Ọдобавляет 9556 к ним, а затем приводит к символам. Они (5) бесплатно? Я чувствую, что это было бы так же, как если бы я мог использовать символы Unicode напрямую. (Я мог бы также использовать реальные символы, а не индексы кодовой страницы и использовать отображение для большего количества байтов).
Джонатан Аллан

Нет. После обсуждения был сделан вывод, что только 1 символ всегда может быть засчитан как 1, а не любое другое представление.
Эрик Outgolfer


3

Дьялог АПЛ, 71 байт

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

Попробуйте онлайн!


Вы можете определенно сыграть в гольф. Например, вы всегда можете заменить (some expr)f Yна Y f⍨ some expr.
Адам

@ Adám Я знаю, это происходит, я сейчас не на компьютере
Уриэль

3

Japt , 60 52 49 48 36 байт

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

Попробуйте онлайн!

Другая версия (47 байт + -Rфлаг)

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

Нужен -Rфлаг (добавлен в поле ввода). Попробуйте онлайн!

Как это работает?

Поскольку я изначально предполагал, что «дверные символы» стоят больше, чем один байт, я решил, что смогу сэкономить немало байтов, кодируя их. Затем я вычел 9500 из кодов символов, которые оставили меня с символами 8J; DPG >MA, которые стоят только один байт каждый. Тогда я мог бы просто добавить 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))╝")}

Un-golfed:

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 за использование языка, который фактически имеет их как однобайтовые символы в кодовой странице по умолчанию.
Джошуа

Можете ли вы добавить TIO (или эквивалент)?
Лохматый


1
О, да! Я запомню это в конце концов, обещаю! : D
Лохматый

@ Ладно, не слишком привыкни к этой идее. Я только что нашел работающую Emscripten-сборку Dosbox под управлением QBasic. Я постараюсь перевести это на 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)}╝`

Вы можете считать символы как один байт каждый, делая это 80 байтов. И вы должны быть в состоянии лучше использовать литералы шаблонов, чтобы сэкономить несколько байтов;)
Shaggy

Вы можете считать символы только как один байт, если сможете найти реализацию ES6, которая будет принимать ввод CP437 изначально.
user5090812

@ user5090812, это пособие, специфичное для этой задачи.
Лохматый

@ user5090812 Не нужно искать эту реализацию, потому что правила вызова гласят: « Для целей этого вызова на языках, где символы, используемые для« двери », занимают несколько байтов, они могут учитываться для вашей оценки как один байт каждый». "Таким образом, это число байтов 80 байтов вместо 98 (если я посчитал правильно).
Кевин Круйссен

Ну, это плохое правило. Это устраняет все стимулы искать лучший способ хранения персонажей.
Люк

2

Руби, 54 52 байта

-2 байта благодаря ymbirtt.

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

Попробуйте онлайн!

Ungolfed

Это супер скучно

->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;}

Попробуйте онлайн!


Не плохо, вы можете сделать свой подход даже ниже, чем мой ответ. Прежде всего, вы можете уменьшить его до 78 + 72 байтов (всего 150), используя метод Java 7 вместо BiFunction: 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);} попробуйте это онлайн. И второй метод также может быть изменен на String r(String c,int n){String r=c;for(;n-->1;r+=c);return r;}(63 байта), так что в итоге он становится 141
байтом

Исправление, вы можете даже уменьшить его до 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+"╝";}

Попробуйте онлайн!

-5 байт благодаря @KevinCruijssen

Объяснение:

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 от меня. Я знаю , что это было некоторое время, но вы можете гольф 5 еще байт путем изменения b+="╣\n";c+="╝";for(;n-->2;)a+=b;return a+c;};в for(b+="╣\n";n-->2;)a+=b;return a+c+"╝";} Попробовать онлайн.
Кевин Круйссен

@KevinCruijssen: Спасибо.
Разнагул

2

Stax , 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 cloud отображает все символы в смешном искаженном виде, так что это не лучший способ представить такие задачи. Никаких дополнительных строк нет, и все выглядит хорошо в mathematica. Скопируйте и вставьте свой тестовый пример, чтобы проверить. Я сделал, и они выглядят одинаково
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

Сетчатка , 56 50 байт

.+
$*╬╣
^╬╬╬
╠
.?
$_¶
T`╠╬╣`╔╦╗`^.*
T`╠╬╣`╚╩╝`.*¶$

Попробуйте онлайн! Работает путем построения квадрата ╬s, а затем исправления краев (в частности, три столбца удаляются при добавлении сторон).


1

PowerShell , 67 байт

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

Принимает $args[0], вычитает 3, сохраняет это в$x , использует его в конструкции верхней части двери для вывода соответствующего количества средних секций. Затем мы выводим средние строки, из которых мы имеем $x+1. Наконец, нижний ряд похож на верхний ряд. Все они остаются на конвейере, и неявноеWrite-Output вставляет новую строку между элементами бесплатно.

Попробуйте онлайн!




Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.