Буква Е з Е


19

Ваше завдання - відобразити внизу букву "E" у формі ASCII мистецтва, надавши п'ять входів.

Приклади:

Введення: 7,2,+,|,-(Примітка. Вам не доведеться дотримуватися цього точного формату введення, і якщо ви не використовуєте його, ви повинні пояснити, як працює ваш власний формат введення)

Пояснення:

  • 7 загальна ширина, включаючи символи лівого та правого краю.

  • 2 Кількість вертикальних символів.

  • + Символ, який повинен відображатися по краях.

  • | Символ, який повинен відображатися вертикально між краями.

  • - Символ, який повинен відображатися горизонтально.

Вихід з вищевказаного прикладу:

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


Інші приклади:

Вхід: 7,2,@,|,-

Вихід:

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


Вхід: 7,2,+,|,#

Вихід:

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


Вхід: 8,3,+,|,#

Вихід:

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


Вхід: 8,3,+,@,#

Вихід:

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


Вхід: 9,4,^,$,!

Вихід:

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


Обман і стандартні лазівки не дозволяються.

Ваш код не повинен друкувати нічого на STDERR.

Ваш код може приймати будь-яке кодування символів, яке ви вибрали як вхідне, але будь-яке кодування символів, яке ви вибрали, повинно, як мінімум, підтримувати всі 95 друкованих символів ASCII.

Найкоротший код у байтах, який успішно завершує цей виклик, - це виграшний код.

Таблиця лідерів


27
Мені не подобається особливий випадок "не введено даних". На мою думку, це нічого не додає до виклику і багато чого ускладнює.
Yytsi

3
Чи є назва тому , що ви могли б дати в Eякості вхідних даних, і зробити Eз Eс?
трихоплакс

3
Незважаючи на те, що мені це не подобається, що насправді означає "без входу"? Моє рішення Floroid просто зависне на всю вічність, якщо ви не передасте введення. Щоб моє рішення було конкурентоспроможним, вам доведеться пройти 5 нулів, і мені доведеться перевірити, чи є вхідні нулі, і ставитись відповідно ...? -1.
Yytsi

4
@TheBitByte Перегляньте мій другий коментар, щоб побачити, що я думаю, що це насправді не так. Тепер, коли ви це відредагували, +1.
Yytsi

1
@Kevin Yup У мене просто було трохи плутанини з інтерпретацією "немає вводу". Порожній рядок у моїй свідомості не дорівнює "без вводу". І я був так звик запускати код всередині інтерпретатора, на якому я буквально чекаю, коли введення буде подано, тому я його викинув туди.
Yytsi

Відповіді:


6

05AB1E , 16 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

Спробуйте в Інтернеті!

Збережено 4 байти завдяки Аднану.


1
З цікавості, чому ви використовуєте ©реєстр: p?
Аднан

1
@Adnan: Добрий улов! Я збирався, але в кінцевому підсумку не користувався ним і забув його видалити :)
Emigna

1
@muddyfish: Читання пояснення з питання, що частина не була очевидною, тому я її пропустив. Дякую що дали мені знати!
Емінья

1
Там також спеціальна об'ємна команда , яка працює тут: Í×s.øU×S»X»D»Xr».
Аднан

2
@Adnan: Право ти є. Гарне мислення! Я ніколи цього не використовував :)
Emigna

6

Пітона, 53 51 55 байт

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

+4 байти завдяки @nimi

функція анонімної лямбда, щоб викликати її, написати 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 дякую за пораду. (+4 байти :() Перший приклад ОП - дещо заплутаний. (Деякі з інших відповідей також мають цю помилку)
KarlKastor

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
ставить ("") -> 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,'+','@','#'))


Чи обробляє це особливий випадок без введення?
Conor O'Brien

{ "message": "Script error.", "filename": "", "lineno": 0, "colno": 0 }при запуску в рядку.
noɥʇʎԀʎzɐɹƆ

@AgentCrazyPython - Запустити на IE? Він не має ніякої підтримки для.repeat()
Arnauld

@Arnauld naw, safari
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 байти, спростивши генерацію першого рядка, щоб спочатку зробити рядок без кутів, а потім додати кути, оскільки це зменшує кількість необхідних індексування.

  • Ще один байт збережено, починаючи з першого кута.

  • Ще 6 байт замінивши repmat(a,3,1)дзвінок на [a;a;a].

  • Збережено 4 байти за допомогою aбез конкретної ініціалізації (це вже оголошено у декларації функції) - дякую @LuisMendo


1
@LuisMendo цікаво. Спочатку я a=[c a c]там був, але видалив його, щоб зменшити речі, оскільки зазвичай ви не можете індексувати доступ до неіснуючої змінної та створювати її в процесі. Я забув, що це була функція, тому aвже оголошується в декларації функції як повернене значення. Дякую :)
Том Карпентер

Насправді ви можете це зробити, навіть якщо не у функції - індексування неіснуючої змінної створює її. Щодня вивчайте нові речі.
Том Карпентер

2

Perl, 40 + 1 (-n ) = 41 байт

Завдяки @Ton Hospel економив 14 байт і дозволяв програмі працювати з записом більше 10.

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

Потрібно -n, а також -E(або -M5.010) бігати. Наприклад :

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

1
@TheBitByte Добре, чудово, спасибі.
Дада

2
Це вже дуже добре. Але ви можете трохи пограти з вхідним форматом, а також вирішити недолік, що виклик не говорить про повторення, - < 10додавши /(.)(.)/;$,=$' x<>;say+($1.$2x(<>-2).$1.$/)x3файл (оскільки він використовує $') та зателефонувавши за допомогою perl -M5.010 -n prog.pl <<< '^!S\n4\n9'(використовувати реальні нові рядки), що нараховує 48 байт (2 додаткові гандикап, оскільки його неможливо поєднати -e)
Тон Євангелія

@TonHospel Дякую Правильно, я навіть не помічав, що це не працюватиме з числами >10. Чудова робота з вхідним форматом, дякую.
Дада

Це наближається до зловживання свободою вибору формату введення, але: perl -nE '/.$/;$,=$/.<>x<>;say+($`.$&x(<>-2).$`)x3' <<< '^$\n!\n4\n9'становить 41 байт (не більше $'), а також позбавляється від хибної
проміжної нової лінії

@TonHospel Дійсно, я придумав це рішення після вашої першої пропозиції, але мені це було не надто комфортно через формат введення ... Оскільки ми обидва подумали про це, я змінив свою відповідь, але все-таки відчуваю, що це трохи хитро ...
Дада

2

Діялог АПЛ , 31 29 байт

Підказки для горизонтального символу, ширини, стику, висоти, вертикального символу - у такому порядку.

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

⎕⍴⍞введення-горизонтальний символ та повторення введення-ширина разів ( нижче)

⍞{... }символ введення-з'єднання, який буде у функції ...

∊⍺⍵⍺ згладити [[перехід], [горизонталі], [перехід]]

інкапсулювати, щоб він міг бути частиною списку

(... передбачити ),...

h←⎕ вхід-висота

⍞⍴⍨ введення-вертикальний символ і повторити його багато разів

складіть список рядків у таблицю символів

інкапсуляція (так це можна повторити в цілому)

3/ повторіть три рази

    
┗━ ┗━ ┗━

⍪/ з’єднайте три частини вертикально


┣━
┣━
┗━

(це теж інкапсулює їх, тому нам потрібно ...)

видаліть інкапсуляцію

h↓опустити перші години (рядки)

┏━
┣━
┗━

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


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позбутися останніх 2-х рядкових <Vertical Segment Length>*2+3рядків, вивівши лише перші рядки 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елементів. Це, у свою чергу, формулюється у масив із двох елементів із іншим оператором кома та залишається на конвеєрі. Потім горизонталь $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 байт

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

Здійснює введення з stdin як перші 5 введених символів. Перші два мають 48 віднятих з коду ASCII, тому 0-9 поводяться так, як очікувалося. Для чисел> 9 додайте до числа 48 і використовуйте відповідний символ. Інші три символи вказані в виклику.

Я впевнений, що це не оптимальне рішення, але життя для гольф brainf * ck занадто коротке.

З коментарями:

[
    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. Але макроси, які ведуть себе так само, як функція, цілком можливі. Зауважте також, що неперероблена версія не буде компілюватися, поки ви не додасте "\" до кожного, але останнього рядка макросу. Ви можете зберегти два додаткові байти, видаливши {}, але тоді ви не можете використовувати макрос двічі поспіль.

Використання:

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

Луа (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 @

Ви можете змінити вхідні параметри у проекті> компіляції та змінити значення, кожне значення як у прикладі, але не розділене комами, а пробілами.


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", ви можете скинути парен на трійку.
Тит

for($h++;$i<=2*$h;)і $i++%$hзберігає ще один байт.
Тит

$v-1дає лише 3 горизонтальних символи для [5,2,+,|,-]. Кількість горизонтальних символів, не враховуючи лівого та правого краю символів
Тіт

@Titus це правильно, я відкинув ваше редагування. 5 Горизонтальні засоби 3 Символи з 2 ребрами = 5. Складіть погляд на питання. А за інші ідеї Дякую
Йорг Хюльсерманн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.