Построй мне кирпичную стену!


73

Вызов

Мне нужна помощь в строительстве кирпичной стены! Сложите для меня некоторый код без ввода и создайте следующую строку вывода, показанную ниже:

_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

Теперь эта стена точно 10высотой 70символов и шириной символов.

Как указано выше, никаких входов, только код. Наименьшее количество байтов мы должны эффективно построить эту кирпичную стену. Очевидно, что эта программа должна функционировать, чтобы построить стену ..? или это очевидно не будет строить себя! Удачи!


победитель

Победитель отправляется в Маринус, используя APLязык, требующий целых 12байтов! https://codegolf.stackexchange.com/a/99028/61857


Спасибо всем за участие!



8
Также связанные. (странно, что это должно появиться сегодня, ха-ха)
Конор О'Брайен

1
Это нормально. Я дам вам знать, когда у меня будет рабочий переводчик. Я работаю над этим прямо сейчас, на самом деле :)
ETHproductions


30
За бонусные баллы заставьте Мексику платить за это.
Дауд ибн Карим

Ответы:


46

APL, 12 байт

10 70⍴'_|__'

Выход:

      10 70⍴'_|__'
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

1
Я только заметил этот ответ, когда я поставил свой J ответ. они в основном то же самое, ха-ха
Конор О'Брайен

2
Это выводит что-то еще в дополнение к стене ASCII. Это разрешено?
Чтение буфера

при использовании tryapl.org я получил вывод на стену. что вы получили @TheBitByte?
FivePixels

4
@Dylan Он, вероятно, сбит с толку, так как ответчик включил программу в вывод, не зная природу APL REPL.
Конор О'Брайен

191

Trumpscript , 303 285 244 231 226 байт

make i 1000005-1000000
as long as,i;:
make i,i - fact;
say "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
say "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"!
America is great

Я хотел бы сказать, что это один из самых многословных языков, где почти все не скомпилируется в работающую программу.

Очевидно, -работает ли вместо minusполностью зависит от переводчика и иногда работает. На этот раз это было сделано, поэтому я ставлю это как игру в гольф.

Злоупотребляет тем фактом, что Trumpscript написан на Python и, следовательно, factпри использовании в качестве целого числа равен единице.

Гольф советы приветствуются.


48
Я так понимаю, Trumpscript не допускает числа менее 1 000 000? ;-)
ETHproductions

3
ты прав.
Blue

2
Вы можете использовать i is 1000005-1000000и i is i-fact? (Только что взглянул на readme Trumpscript.)
AlexRacer

19
Я удивлен, что это позволяет вам использовать 1000000. Документация гласит All numbers must be strictly greater than 1 million. The small stuff is inconsequential to us..
Безумный физик

9
Factи lies(и другие константы истина / ложь) имеют случайный, основанный на времени шанс перевернуть флоп (быть обращенным) во время токенизации (см. tokenizer.py, search flip_flop), возможно, поэтому он, кажется, не работает minus, хотя на самом деле это нужно было делать с factв тот момент
pinkfloydx33


18

BBC BASIC, 28 байтов

Токенизированный размер файла 23 байта.

WIDTH70P.STRING$(175,"_|__")

WIDTH70обычно сопровождается переводом строки. Он устанавливает ширину поля равной 70. Затем мы просто печатаем 175 копий строки, которые оборачиваются вокруг.


2
Лучшее (ab) использование ШИРИНЫ, которое я видел :)
ElPedro

Это должно иметь "23 байта" в заголовке.
Адам

@ Adám Только в том случае, если в качестве ответа размещена токенизированная версия.
ErikE

17

Brainfuck, 171 байт

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

Brainfuck это весело, вот мое представление.

Вот вывод:

_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

Вот ссылка, чтобы попробовать это

https://repl.it/EW2Z/0


16

WinDbg, 45 байт

f2000000 L2bc 5f 7c 5f 5f;da/c46 2000000 L2bc

Как это устроено:

f 2000000 L2bc 5f 7c 5f 5f; *Repeat the pattern _|__ (5F 7C 5F 5F) to fill 2BC (700) bytes 
                            *starting at 2000000
da /c46 2000000 L2bc        *Show 2BC (700) ASCII chars starting from 2000000 in lines 
                            *of length 0x46 (70)

Выход:

0:000> f2000000 L2bc 5f 7c 5f 5f;da/c46 2000000 L2bc
Filled 0x2bc bytes
02000000  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
02000046  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"
0200008c  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
020000d2  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"
02000118  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
0200015e  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"
020001a4  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
020001ea  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"
02000230  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
02000276  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"


10

Python 2, 37 байт

s="_|__"*17;print(s+"_|\n__%s\n"%s)*5

Разлагает две строки как 17 копий _|__, плюс еще одну копию, прерванную новой строкой, плюс еще 17 копий, плюс еще одну новую строку.

Более длинные альтернативы:

print"%s_|\n__%s\n"%(2*("_|__"*17,))*5

s="_|__"*17;print"%s_|\n__%%s\n"%s%s*5

for i in[0,2]*5:print("_|__"*18)[i:i+70]

print("_|__"*17+"_|\n"+"___|"*17+"__\n")*5

for s in["_|__","___|"]*5:print(s*18)[:70]

s="_|__"*99;exec"print s[:70];s=s[2:];"*10

print("%s"*70+"\n")*10%(175*tuple("_|__"))

Ваш последний вариант короче, как print(("%s"*70+"\n")*10%(175*(*"_|__",)))в Python 3.
mbomb007


7

PHP, 44 42 41 символов

<?=chunk_split(str_pad(_,700,"|___"),70);

(Просто потому, что не было возможности использовать chunk_split()когда-либо раньше.)

Благодаря:

  • user59178 за предложение использовать str_pad()(-1 символ)

Образец прогона:

bash-4.3$ php <<< '<?=chunk_split(str_pad(_,700,"|___"),70);'
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

байты, а не количество символов.
FivePixels

2
Такой же. Я не использую многобайтовые символы.
manatwork


2
@pajonk, исправлено с PPCG - вычеркнуто 44 стиля пользователя на моей машине: i.stack.imgur.com/czn5h.png
manatwork

Вы можете сохранить байт, используя str_padвместо str_repeat, в основном потому, что _обрабатывается как константа со значением _.
user59178

7

Vim, 30 24 19 нажатий клавиш

18a___|<esc>YP2x}h.yk4P

Спасибо DrMcMoylex и nmjcman101 за сохранение ценных нажатий клавиш!


1
Хороший ответ, добро пожаловать на сайт! Несколько советов: 1) aберет счет, так что вы могли бы сделать 18a___|<esc>вместо того, чтобы сделать макрос. 2) <cr>в обычном режиме эквивалентно j0, так что вы можете снять один байт со второго макроса.
DJMcMayhem

Круто, спасибо за советы!
Карпфен

1
Я немного поиграл с твоим решением для развлечения. Форматирование стены перед копированием / вставкой экономит все байты не создания макроса: 18a___|<esc>YP2x}h.yk5Pэто 19 байтов.
nmjcman101

Хорошо, я обновлю ответ! Я просто заменю второй на последний ключ на 4, иначе стена становится слишком высокой :)
karpfen

6

Perl, 47 34 29 байт

$_="_|__"x175;say for/.{70}/g

Вы можете сыграть в гольф до 29:say for("_|__"x175)=~/.{70}/g
Дада

По какой-то причине, это раньше не производило никакого вывода каждый раз, когда я пытался это сделать, но я нашел другое решение с таким количеством байтов. Однако, спасибо!
Габриэль Бенами

Ну, код, который я предложил, дает правильный результат ... Может быть, вы забыли круглые скобки "_|__"x175или что-то в этом роде?
Дада

Я думаю, что это то, что есть. Я подумал, что скобки должны были куда-то пойти, я просто не мог понять, где, лол
Габриэль Бенами

Ху, трудно вспомнить приоритет каждого оператора ( =~имеет более высокий приоритет, чем x)!
Дада

5

Perl, 31 байт

say+($@="_|__"x17,"_|
__$@
")x5

Вам понадобится -Eфлаг, чтобы запустить его:

perl -E 'say+($@="_|__"x17,"_|
__$@
")x5'

Мысль о несколько ином подходе для 29 байтов: say for("_|__"x175)=~/.{70}/g:). Мне нравится трюк, который ты там использовал!
Дом Гастингс

@DomHastings, хуху, я написал точно такой же код в комментариях к ответу Габриэля Бенами!
Дада

D'о! Не видел этого! Кроме того, то увидел , что это было использовано много других ответов .. Ну да ладно!
Дом Гастингс

@DomHastings Да, я сначала не думал об этом, и это было уже в ответе Габриэля, поэтому я не обновлял свой ответ после;)
Дада

5

V , 24 , 16 байтов

175i_|__ò70|lé

Попробуйте онлайн! Он содержит <esc>символы ( 0x1B), так что вот hexdump:

0000000: 3137 3569 5f7c 5f5f 1bf2 3730 7c6c e90a  175i_|__..70|l..

8 байтов косвенно сохранены благодаря Джордану!


19 байт: v.tryitonline.net/… Хотя я не мог понять, как использовать .\{-}ярлык, упомянутый в V документах .
Иордания

@ Джордан Вау, очень мило! \{-}Ярлык не будет работать в любом случае, так как вы не можете изменить номер внутри. Однако вы можете установить старший бит, \{чтобы получить это вместо этого. Не стесняйтесь опубликовать это как ответ.
DJMcMayhem

Ах, это имеет смысл. Опубликовано здесь: codegolf.stackexchange.com/a/99070/11261
Иордания

Черт, мне все еще нужно взбодрить этот язык: 25 байтов
statox

5

V , 18 байт

-1 байт благодаря DJMcMayhem.

175i_|__<Esc>Ó.û70}/°ò

Вот это с непечатными символами в формате xxd:

0000000: 3137 3569 5f7c 5f5f 1bd3 2efb 3730 7d2f  175i_|__....70}/
0000010: b0f2                                     ..

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


Хорошо, я больше не единственный человек, который использовал V! Теперь мне нужно посмотреть, смогу ли я снова взять на себя инициативу, ха-ха
DJMcMayhem

5

MATL, 15 байт

'_|__'700:)70e!

Конечно, вы можете попробовать это онлайн! Объяснение:

'_|__' % Put a brick on the stack
700    % 700 times
:)     % Makes a happy mason...
70e!   % Secret freemason code

ОК, на самом деле, это работает следующим образом:

'_|__' % Put the first bit of the string on the stack
700:   % Put 1, 2, ..., 700 on the stack as array
)      % Index into the string, modularly. Result: '_|___|__ ... __'
70e    % Reshape into 70 rows (and consequently, 10 columns)
!      % Transpose to get the desired output.

Отлично сработано! И твой смайлик лучше моего
Луис Мендо

@LuisMendo Действительно, использование смайликов можно считать шаблоном дизайна в MATL. XD Может быть , вы могли бы :)на C... но это будет ваш последний 1 байт код точки ушел (или есть другая причина , Cне используется?)
Sanchises

Вы хотите избавиться от смайлика ?? :-P
Луис Мендо

5

Python 2, 46 44 байта

Просто используя умножение строк для построения строки и нарезки, чтобы получить правильные биты :)

k='_|__'*18
print'\n'.join([k[:70],k[2:]]*5)

спасибо Энтони Хаткинсу за сохранение двух байтов :)


Может быть на 2 байта меньше:print'\n'.join([k[:70],k[2:]]*5)
Энтони Хаткинс

@AntonyHatchkins Спасибо!
Каде

4

PowerShell v2 +, 34 30 байт

'_|__'*175-split"(.{70})"-ne''

Глупый алгоритм сопоставления регулярных выражений, требующий -ne''... тратит пять байтов!

'_|__'*175-split"(.{70})"-ne''
'_|__'*175                     # Repeat this string 175 times
          -split"       "      # Split on this regex pattern:
                  .{70}        # Match any character 70 times
                 (     )       # Encapsulated in parens so we keep the regex results
                         -ne'' # But don't select the empty strings
                               # Output with newlines via Write-Output is implicit

Сохранено 4 байта благодаря Конору!


Будет .{70}ли короче регулярное выражение?
Конор О'Брайен

splitработает так же и на других языках - вы всегда получаете непревзойденные порции, хотите вы их или нет. В некоторых языках есть matchоператор, который можно использовать для возврата массива только совпадающих результатов, но я не вижу аналога PowerShell для этого.
Нил

@Neil Performing 'abc'-split'(.)'вернется ('','a','','b','','c',''). Там нет ничего бесподобного, но из-за того, как алгоритм обрабатывает входную строку, вы получаете пустые строки обратно. Смотрите здесь .
AdmBorkBork

Да, и я говорю, что вы не должны удивляться этому результату, потому что именно это и должен делать сплит.
Нил

@ Нил Удивлен? Нет, не совсем. Но это не значит, что я должен быть счастлив. : D
AdmBorkBork

4

C 131 115 113 103 97 95 байт

i,j;main(){for(;i<10;puts(i++&1?"|__":"|"))for(j=0;j<18-(i&1);printf(&"|___"[j++?0:i&1?1:3]));}

Время начать играть в гольф ...

_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

3

Желе , 14 байт

“_|__”ṁ700s70Y

TryItOnline!

Как?

“_|__”ṁ700s70Y - Main link: no arguments
“_|__”         - literal ['_','|','_','_']
      ṁ700     - mould like something 700 long
          s70  - split into chunks of length 70
             Y - join with line feeds

1
По определению, желе не может быть длиннее, чем J.
Адам

Я сделал нечто подобное без особенного : “_|__”ẋ175œs⁵Y(14 байт)
Эрик Outgolfer



3

Javascript REPL, 45 байт

"_|__".repeat(175).match(/.{70}/g).join("\n")

1
Добро пожаловать в PPCG! Он должен быть помечен как «JavaScript REPL» или аналогичный, так как это ничего не печатает вне среды интерактивной консоли.
Мартин Эндер

1
Разве это не 45 байтов?
Акролит

@daHugLenny вы правы, я посчитал \ n как один байт
Хуан Тонина

где находится console.log?
cardeol

1
Пока вы используете ES6 (я думаю, что это так), вы можете использовать строки шаблонов, поэтому join("\n")становится join <backtick> <literal newline> <backtick>
Стивен


3

Баш, 44, 41 , 40 байт

printf _\|__%.0s {1..175}|egrep -o .{70}

Printf составляет одну строку длиной 700 символов, egrep соответствует 70 символам за раз.





2

Рубин, 30 байтов

Спасибо Manatwork за это решение

puts ("_|__"*175).scan /.{70}/

Рубин, 39 байт

10.times{|i|puts ("_|__"*18)[i%2*2,70]}

2
Генерировать-все-то расщепленный подход короче здесь: puts ("_|__"*175).scan /.{70}/.
manatwork

@ Manatwork спасибо большое! Я редко думаю об использовании, так scanкак мне не очень удобно с регулярными выражениями. Вы знаете, что могли бы опубликовать это как свой собственный ответ ...
Level River St

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