Динамически создавать ящики


22

Соревнование:

Нарисуйте прямоугольник ASCII-блоков: []

Правила:

Принимает ширину и высоту ввода

Вы можете предположить, что оба эти числа

Необходимо создать строку с символами новой строки, \ n

Примеры:

2, 2:

[][]
[][]

2, 3:

[][]
[][]
[][]

Побеждает несколько байтов.


2
Хороший первый пост! Добро пожаловать в PPCG!
MD XF

1
Могу ли я предположить, что цифры положительные? Могут ли быть последние строки?
Дзайма

@dzaima Положительные целые числа, без трейлинга и лидирующих
Robinlemon

мы можем вывести на консоль или нам нужно вернуть строку?
Джузеппе

5
Что делать, если мы буквально не можем не печатать завершающие строки? Хорошей практикой является использование одного завершающего символа новой строки
Destructible Lemon

Ответы:


6

SOGL , 5 байт

Ƨ[]*∙

Просто:

Ƨ[]    push "[]"
   *   multiply horizontally (repeating width times)
    ∙  get an array with input (height) items of that
       implicitly output the array joined with newlines



4

Pyth - 7 5 байт

Умный трюк -2 байта благодаря insert_name_here

VE*`Y

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

Объяснение:

VE*`Y
V      # Loop
 E     # <input> number of times
   `Y  # String representation of empty list (used to be "[]", but insert_name_here pointed out this shorter alternative)
  *    # repeat string implicit input number of times
       # implicit print

3
Вы можете сохранить 2 байта, используя `Y(строковое представление пустого списка) вместо "[]".
insert_name_here

@insert_name_here Гениальный !! Я обновил ответ. Спасибо что подметил это!
Мария

1
Придумали этот точный код самостоятельно. Красиво сделано.
Исаак

4

C, 47 46 байтов

f(w,h){for(h*=w;h--;)printf(h%w?"[]":"[]\n");}

или

f(w,h){for(h*=w;h--;)printf("[]%c",h%w?0:10);}

Моя первая попытка игры в гольф, я что-то упустил?


Это для 45, но в начале есть f(w,h){h*=w;while(h--)printf("\n[]"+!(h%w));}
Conor O'Brien

Это работает только при ширине 2.
Дбандстра

Так оно и есть, моя ошибка
Конор О'Брайен

Отличный первый гольф! Добро пожаловать на сайт!
MD XF

1
Разве использование forцикла не сократит код еще больше?
Spikatrix


3

; # + , 197 байт

>;;;;;;~++++++++:>~;;;;:>~*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-::<-::::>-::(;)::>-::*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-:<~<;;;;;-+>-:<-:-(-:::~<-:::(~<#<-;;-#~;)-:<#-::<;>-:-)

Попробуйте онлайн! Требуется нулевой байт после каждого входного номера.

Я вроде не знаю, как это работает. То, что я могу вам сказать, это то, что эта часть кода:

 *(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-::<-::::>-::(;)::>-::*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)

Разбор входных чисел.


3

брейкфук, 145 байт

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

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

Мой первый в мире кодовый гольф! Ура!

Ввод в ascii + 48, поэтому, чтобы сделать 50, 50, вы должны ввести b, b (буквы ascii для 98)

объяснение

+++++++++[>++++++++++<-]>+ Get the opening square bracket into first position
[>+>+<<-] Get it into the second and third position
>>++ Get the third position to be the closing bracket
>
,>+++++++++[<----->-]<--- Get first number into fourth cell
>>>
,>+++++++++[<----->-]<--- Get second number into seventh cell
>++++++++++ get newline into 8th position
<

[ Start our height loop
<<<[>+>+<<-] Get the width into the fifth and sixth positions
>[ Start our width loop at the fifth position
<<<.>. Print the second and third positions
>>-] Decrement the fifth position
>
[<<+>>-] copy the sixth position into the fourth position
>>. print newline
<-]

Впечатляет. Добро пожаловать на сайт! :)
DJMcMayhem

Почему вход ASCII + 48? Вы можете сэкономить много байтов, просто используя вход ASCII + 0 (возможно, для удобства использования
CalculatorFeline

Я просто хотел соответствовать критериям ввода, @calculatorFeline
vityavv

...О верно. : |
CalculatorFeline



2

Желе , 7 байт

ẋ⁾[]ẋ$Y

Двоичная ссылка, возвращающая список символов (или полная программа, печатающая результат).

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

Как?

ẋ⁾[]ẋ$Y - Main link: number w, number h          e.g. 2, 3
ẋ       - repeat w h times                            [2,2,2]
     $  - last two links as a monad:
 ⁾[]    -   literal ['[',']'],                        "[]"
    ẋ   -   repeat list (vectorises)                  ["[][]","[][]","[][]"]
      Y - join with newlines                          "[][]\n[][]\n[][]"
        - if a full program, implicit print






2

Japt , 13 12 + 1 = 14 13 байт

+1 за -Rфлаг.

"[]"pN× òU*2

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

  • 1 байт спасен благодаря obarakon.


@ETHproductions: тот самый мультфильм, который я искал, но был слишком пьян, чтобы найти!
Лохматый

Хаха, надеюсь, что вы, ребята, веселитесь ночью. к вашему сведению, U*Vможно сократить до
Оливер

1
@obarakon: это две возможности работать с Nпрошлой ночью. Никогда не пейте и играйте в гольф, дети!
Лохматый


2

Древесный уголь , 8 7 байт

EN×[]Iη

Попробуйте онлайн! Ссылка на подробную версию кода. Принимает ввод в порядке высота, ширина. Примитивы рисования древесного угля не подходят для этого, так что это просто выбирает легкий путь и повторяет []строку соответствующим образом. Объяснение:

 N      First input as a number
E       Map over implcit range
      η Second input
     I  Cast to number
   []   Literal string
  ×     Repeat
        Implicitly print on separate lines

Ну, для этого есть примитивы рисования, но все еще 8 байтов : P
только для ASCII

@ Только для ASCII Извините, я не осознавал, что Облонг работает с произвольными строками. Ухоженная!
Нил

@ ASCII-only О, а каково подробное имя предопределенной пустой строковой переменной?
Нил


@ ASCII-only Тогда, что я тут делаю не так: попробуйте онлайн!
Нил

1

R 70 байт

p=paste
function(w,h)p(rep(p(rep('[]',w),collapse=''),h),collapse='
')

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

Возвращает анонимную функцию, которая создает и возвращает строку.

45 байт, не соответствует

function(w,h)write(matrix('[]',w,h),'',w,,'')

Анонимная функция, которая печатает строку в нужном формате.

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


1

Japt , 7 байт

6 байтов кода, +1 за -Rфлаг.

VÆç"[]

Не работает в последней версии из-за ошибки ç, но работает при коммитеf619c52 .Проверьте это онлайн!

объяснение

VÆ   ç"[]
VoX{Uç"[]"}  // Ungolfed
             // Implicit: U, V = input integers
VoX{      }  // Create the range [0...V) and replace each item X with
    Uç"[]"   //   U copies of the string "[]".
-R           // Join the result with newlines.
             // Implicit: output result of last expression


1

QBIC , 14 байтов

[:|?[:|?@[]`';

Объяснение:

[:|     FOR a = 1 to (read input from cmd line)
?       PRINT a newlne
[:|     FOR c = 1 to (read input from cmd line)
?@[]`   PRINT A$ (containing the box)
';         and inject a semicolon in the compiled QBasic code to suppress newlines

Это принимает аргументы в порядке #rows, #cols. Вывод начинается с новой строки.




1

C #, 78 байт

(w,h)=>"".PadLeft(h).Replace(" ","".PadLeft(w).Replace(" ","[]")+'\n').Trim();

Запустить в C # Pad

Это короче, чем с for-loop, и я не знаю ни одной функции в C #, которая может повторяться с меньшим количеством кода.



1

JavaScript (ES6), 43 36 байт

Из комментариев теперь разрешен завершающий перевод строки.

w=>h=>("[]".repeat(w)+`
`).repeat(h)

Попытайся

f=
w=>h=>("[]".repeat(w)+`
`).repeat(h)
oninput=_=>o.innerText=f(+i.value)(+j.value);o.innerText=f(i.value=2)(j.value=2)
*{font-family:sans-serif;}
input{margin:0 5px 0 0;width:50px;}
<label for=i>w: </label><input id=i type=number><label for=j>h: </label><input id=j type=number><pre id=o>



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