Побудуй мені цегляну стіну!


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 відповідь. вони в основному ті ж ха-ха
Conor O'Brien

2
Це виводить щось інше крім стіни ascii. Це дозволено?
Буфер над

під час використання tryapl.org я отримав стінний висновок. що ти отримав @TheBitByte?
FivePixels

4
@Dylan Він, ймовірно, заплутався, оскільки відповідач включив програму у висновок, не знаючи природи APPL APL.
Conor O'Brien

191

Трупскрипт , 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
Ви праві.
Блакитний

2
Чи можете ви використовувати i is 1000005-1000000і i is i-fact? (Тільки погляньте на ритм 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, пошук flip_flop), можливо, тому, здавалося, це не працює minus, коли це дійсно потрібно було робити з factцього моменту
pinkfloydx33


18

BBC BASIC, 28 байт

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

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

WIDTH70зазвичай слід новий рядок. Він встановлює ширину поля на 70. Потім ми просто друкуємо 175 копій рядка, які обмотуємо.


2
Найкраще (ab) використання WIDTH, що я бачив :)
ElPedro

Тоді це повинно мати "23 байти" у заголовку.
Адам

@ Adám Тільки якщо токенізована версія розміщена як відповідь.
ЕрікЕ

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
Те саме. Я не використовую багатобайтових символів.
манатура


2
@pajonk, Виправлено за допомогою PPCG - Закреслено 44 стилю користувача на моїй машині: i.stack.imgur.com/czn5h.png
manatwork

Ви можете зберегти байт, використовуючи str_padзамість str_repeat, багато в чому тому _, що трактується як константа зі значенням _.
користувач59178

7

Вим, 30 24 19 натискань клавіш

18a___|<esc>YP2x}h.yk4P

Дякуємо DrMcMoylex та nmjcman101 за збереження цінних натискань клавіш!


1
Приємна відповідь, ласкаво просимо на сайт! Деякі поради: 1) aприймає підрахунок, тому ви можете зробити 18a___|<esc>замість макросу. 2) <cr>у звичайному режимі еквівалентно j0, тому ви можете зняти один байт свого другого макросу.
DJMcMayhem

Класно, дякую за поради!
karpfen

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

Приємно, я оновлю відповідь! Я просто заміню другий на останній ключ на 4, інакше стіна стає занадто високою :)
karpfen

6

Perl, 47 34 29 байт

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

Можна 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'oh! Не бачив цього! Крім того, то побачив , що це було використано багато інших відповідей .. Ну да ладно!
Дом Гастінгс

@DomHastings Так, я про це не думав спочатку, і це вже було у відповіді Габріеля, тому я не оновлював свою відповідь після;)
Дада

5

V , 24 , 16 байт

175i_|__ò70|lé

Спробуйте в Інтернеті! Він містить <esc>символи ( 0x1B), тому ось шістнадцятковий:

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

8 байт опосередковано збережено завдяки Йорданії!


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

@Jordan Wow, дуже приємно! \{-}Ярлик не працюватиме в будь-якому випадку, так як ви не можете змінити номер всередині. Однак ви можете встановити високий біт на, \{щоб отримати це замість. Не соромтеся розмістити це як відповідь.
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

Пітон 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 байти завдяки Conor!


Чи .{70}буде коротше для цих регексів?
Conor O'Brien

splitпрацює так, як на інших мовах - ви завжди отримуєте незрівнянні частини, хочете ви їх чи ні. Деякі мови мають matchоператора, який може бути використаний для повернення масиву лише відповідних результатів, але я не бачу для цього еквівалента PowerShell.
Ніл

@Neil Виконання 'abc'-split'(.)'повернеться ('','a','','b','','c',''). Немає нічого незрівняного, але завдяки тому, як алгоритм обробляє вхідний рядок, ви отримуєте порожні рядки назад. Дивіться тут .
AdmBorkBork

Так, і я кажу, що ви не повинні дивуватися такому результату, тому що саме це повинно зробити розкол.
Ніл

@Neil Здивований? Ні, не дуже. Це не означає, що я повинен бути щасливим з цього приводу. : D
AdmBorkBork

4

С, 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

СпробуйтеItOnline!

Як?

“_|__”ṁ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
За визначенням, Jelly не може бути довше J.
Adám

Я зробив щось подібне без особливих : “_|__”ẋ175œs⁵Y(14 байт)
Ерік Позашляховик



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")стає приєднатися <backtick> <буквальний новий рядок> <backtick>
Stephen


3

Bash, 44, 41 , 40 байт

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

У printf довжина одного рядка становить 700 символів, егреп відповідає їй 70 символів одночасно.





2

Рубін, 30 байт

Завдяки манастирству за це рішення

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

Рубін, 39 байт

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

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

@manatwork велике спасибі! Я рідко думаю про використання, scanтому що мені не так зручно з регексами. Ви знаєте, що ви могли розмістити це як власну відповідь ...
Level River St

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.