Bangunkan aku tembok bata!


73

Tantangan

Saya butuh bantuan membangun dinding bata! Lemparkan beberapa kode untuk saya tanpa menggunakan input dan hasilkan dinding keluaran berikut yang ditunjukkan di bawah ini:

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

Sekarang, tembok ini persis 10tinggi 70karakter dan lebar karakter.

Seperti yang dinyatakan di atas, tidak ada input, hanya kode. Jumlah byte terkecil, kita harus membangun tembok bata ini secara efisien. Jelas, program ini harus berfungsi untuk membangun tembok ..? atau itu jelas tidak akan membangun dirinya sendiri! Semoga berhasil!


Pemenang

Pemenang pergi ke Marinus menggunakan APLbahasa, membutuhkan seluruh 12byte! https://codegolf.stackexchange.com/a/99028/61857


Terima kasih semuanya telah berpartisipasi!



8
Juga Terkait. (Aneh bahwa ini akan muncul hari ini, haha)
Conor O'Brien

1
Tidak apa-apa. Saya akan memberi tahu Anda ketika saya memiliki juru bahasa yang berfungsi. Saya sedang mengerjakannya sekarang, sebenarnya :)
ETHproduk


30
Untuk poin bonus, buat Meksiko membayar untuk itu.
Dawood ibn Kareem

Jawaban:


46

APL, 12 byte

10 70⍴'_|__'

Keluaran:

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

1
Saya hanya memperhatikan jawaban ini ketika saya memasukkan jawaban J. mereka pada dasarnya sama haha
Conor O'Brien

2
Ini menghasilkan sesuatu yang lain selain dinding ascii. Apakah ini diizinkan?
Buffer Over Read

saat menggunakan tryapl.org, saya mendapatkan output dinding. apa yang sudah kamu terima @TheBitByte?
FivePixels

4
@Dylan Dia mungkin bingung, karena penjawab menyertakan program dalam output tanpa mengetahui sifat REPL APL.
Conor O'Brien

191

Trumpscript , 303 285 244 231 226 byte

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

Saya ingin mengatakan ini adalah salah satu bahasa paling verbose di mana hampir semuanya gagal dikompilasi menjadi program kerja.

Tampaknya apakah -pekerjaan minusitu benar-benar tergantung pada penerjemah dan kadang-kadang berhasil. Kali ini melakukannya jadi saya memasukkannya sebagai golf.

Menyalahgunakan fakta Trumpscript ditulis dalam Python dan karenanya factketika digunakan sebagai bilangan bulat adalah salah satunya.

Selamat datang tips golf.


48
Saya mengerti Trumpscript tidak mengizinkan angka kurang dari 1.000.000? ;-)
ETHproduk

3
Anda benar.
Biru

2
Bisakah Anda menggunakan i is 1000005-1000000dan i is i-fact? (Baru saja melihat readme dari Trumpscript.)
AlexRacer

19
Saya terkejut ini memungkinkan Anda untuk menggunakannya 1000000. Dokumentasi negara All numbers must be strictly greater than 1 million. The small stuff is inconsequential to us..
Fisikawan Gila

9
Factdan lies(dan konstanta kebenaran / salah lainnya) memiliki kesempatan acak, berbasis waktu untuk membalik kegagalan (dibalik) selama tokenization (lihat tokenizer.py, cari flip_flop) mungkin menjadi alasan mengapa hal itu tampaknya tidak berfungsi minus, padahal sebenarnya harus dilakukan dengan factpada saat itu
pinkfloydx33

20

J, 12 byte

10 70$'_|__'

Bentuk string di sebelah kanan menjadi bentuk 10 x 70. Sederhana!


18

BBC BASIC, 28 byte

File Tokenised berukuran 23 byte.

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

WIDTH70biasanya akan diikuti oleh baris baru. Ini mengatur lebar bidang menjadi 70. Kemudian kita hanya mencetak 175 salinan string, yang membungkus.


2
Penggunaan WIDTH (ab) terbaik yang pernah saya lihat :)
ElPedro

Ini harus memiliki "23 byte" di header itu.
Adem

@ Adám Hanya jika versi token yang diposting sebagai jawabannya.
ErikE

17

Brainfuck, 171 byte

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

Brainfuck itu menyenangkan, ini kiriman saya.

Berikut ini hasilnya:

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

Berikut ini tautan untuk mencobanya

https://repl.it/EW2Z/0


16

WinDbg, 45 byte

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

Bagaimana itu bekerja:

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)

Keluaran:

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

Pyth, 12 byte

Kode:

jcT*175"_|__

Penjelasan:

       "_|__    # For the string "_|__"
   *175         # Repeat it 175 times
 cT             # Chop into 10 equal pieces
j               # Join them by newlines

Coba di sini .


10

Python 2, 37 byte

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

Menguraikan dua baris sebagai 17 salinan _|__, ditambah salinan lain yang terganggu oleh baris baru, ditambah 17 salinan lainnya, ditambah baris baru lainnya.

Alternatif yang lebih panjang:

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("_|__"))

Alternatif terakhir Anda lebih pendek seperti print(("%s"*70+"\n")*10%(175*(*"_|__",)))pada Python 3.
mbomb007

8

05AB1E , 13 byte

Kode:

"_|__"175×Tä»

Penjelasan:

"_|__"         # For the string "_|__"
      175×     # Repeat that 175 times
          Tä   # Split into 10 even pieces
            »  # And join them by newlines

Menggunakan pengkodean CP-1252 . Cobalah online!


7

PHP, 44 42 41 karakter

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

(Hanya karena tidak memiliki kesempatan untuk menggunakannya chunk_split()sebelumnya.)

Terimakasih untuk:

  • user59178 untuk menyarankan penggunaan str_pad()(-1 karakter)

Contoh dijalankan:

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

byte, bukan jumlah karakter.
FivePixels

2
Sama. Saya tidak menggunakan karakter multibyte.
manatwork


2
@pajonk, Diperbaiki dengan PPCG - Crossed Out 44 gaya pengguna di mesin saya: i.stack.imgur.com/czn5h.png
manatwork

Anda dapat menyimpan byte dengan menggunakan str_padalih-alih str_repeat, sebagian besar karena _diperlakukan sebagai konstanta dengan nilai _.
user59178

7

Vim, 30 24 19 penekanan tombol

18a___|<esc>YP2x}h.yk4P

Terima kasih kepada DrMcMoylex dan nmjcman101 untuk menghemat penekanan tombol yang berharga!


1
Jawaban yang bagus, selamat datang di situs ini! Beberapa tips: 1) amenghitung, jadi Anda bisa melakukan 18a___|<esc>alih - alih membuat makro. 2) <cr>dalam mode normal setara dengan j0, sehingga Anda dapat mengambil satu byte dari makro kedua Anda.
DJMcMayhem

Keren, terima kasih atas tipsnya!
karpfen

1
Saya memainkan solusi Anda sedikit untuk bersenang-senang. Memformat dinding sebelum menyalin / menempel menyimpan semua byte dari tidak membuat makro: 18a___|<esc>YP2x}h.yk5P19 byte.
nmjcman101

Bagus, saya akan memperbarui jawabannya! Saya hanya akan mengganti kunci kedua ke terakhir dengan 4, kalau tidak dinding semakin tinggi :)
karpfen

6

Perl, 47 34 29 byte

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

Anda dapat bermain golf hingga 29:say for("_|__"x175)=~/.{70}/g
Dada

Untuk beberapa alasan, yang digunakan untuk tidak menghasilkan keluaran setiap kali saya mencobanya, tetapi saya menemukan solusi lain dalam banyak byte. Terima kasih!
Gabriel Benamy

Nah, kode yang saya sarankan tidak menghasilkan output yang valid ... Mungkin Anda lupa kurung sekitar "_|__"x175atau sesuatu seperti itu?
Dada

Saya pikir itu adalah apa adanya. Saya pikir kurung harus pergi ke suatu tempat, saya hanya tidak tahu di mana, lol
Gabriel Benamy

Huhu, sulit diingat prioritas dari setiap operator ( =~memiliki prioritas lebih tinggi dari x)!
Dada

5

Perl, 31 byte

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

Anda harus -Emenandai untuk menjalankannya:

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

Memikirkan pendekatan yang sedikit berbeda untuk 29 byte: say for("_|__"x175)=~/.{70}/g:). Saya suka trik Anda bekerja di sana sekalipun!
Dom Hastings

@Hastings huhu, saya menulis kode yang sama persis di komentar jawaban Gabriel Benamy!
Dada

Doh! Tidak melihat yang itu! Juga kemudian melihat itu sudah banyak digunakan dalam jawaban lain .. Oh well!
Dom Hastings

@HomHastings Ya, saya tidak memikirkannya pada awalnya, dan itu sudah ada dalam jawaban Gabriel, jadi itu sebabnya saya tidak memperbarui jawaban saya setelah;)
Dada

5

V , 24 , 16 byte

175i_|__ò70|lé

Cobalah online! Ini berisi <esc>karakter ( 0x1B) jadi di sini adalah hexdump:

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

8 byte secara tidak langsung disimpan berkat Jordan!


19 bytes: v.tryitonline.net/... Saya tidak tahu bagaimana cara menggunakan .\{-}shortcut yang disebutkan dalam V docs .
Jordan

@ Jordan Wow, sangat bagus! Cara \{-}pintas tidak akan berhasil, karena Anda tidak dapat mengubah nomor di dalamnya. Namun, Anda dapat mengatur bit tinggi pada \{untuk mendapatkan ini sebagai gantinya. Jangan ragu untuk memposting itu sebagai jawaban.
DJMcMayhem

Ah, itu masuk akal. Diposting di sini: codegolf.stackexchange.com/a/99070/11261
Jordan

Sial, saya masih perlu grok bahasa ini: 25 byte
statox

5

V , 18 byte

-1 byte berkat DJMcMayhem.

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

Ini dia dengan karakter yang tidak patut dicetak dalam format xxd:

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

Cobalah online!


Bagus, saya bukan lagi satu-satunya orang yang menggunakan V! Sekarang saya harus melihat apakah saya bisa memimpin kembali, haha
DJMcMayhem

5

MATL, 15 byte

'_|__'700:)70e!

Tentu saja, Anda dapat mencobanya secara online! Penjelasan:

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

OK, sebenarnya, ini berfungsi sebagai berikut:

'_|__' % 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.

Sudah selesai dilakukan dengan baik! Dan senyuman Anda lebih baik daripada milik saya
Luis Mendo

@LuisMendo Sungguh, menggunakan smiley dapat dianggap sebagai pola desain di MATL. xD Mungkin Anda bisa :)menggunakan C... tetapi itu akan menjadi titik kode 1 byte terakhir Anda hilang (atau apakah ada alasan lain Cyang tidak digunakan?)
Sanchises

Anda ingin menyingkirkan smiley ?? :-P
Luis Mendo

5

Python 2, 46 44 Bytes

Hanya menggunakan perkalian string untuk membangun string, dan mengiris untuk mendapatkan bit yang tepat :)

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

terima kasih kepada Antony Hatchkins karena telah menghemat dua byte :)


Bisa kurang dari 2 byte:print'\n'.join([k[:70],k[2:]]*5)
Antony Hatchkins

@AntonyHatchkins Terima kasih!
Kade

4

PowerShell v2 +, 34 30 byte

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

Algoritma pencocokan regex bodoh yang membutuhkan -ne''... buang lima byte!

'_|__'*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

Disimpan 4 byte berkat Conor!


Apakah .{70}akan lebih pendek untuk regex?
Conor O'Brien

splitberfungsi seperti itu dalam bahasa lain - Anda selalu mendapatkan bagian yang tidak cocok apakah Anda menginginkannya atau tidak. Beberapa bahasa memiliki matchoperator yang dapat digunakan untuk mengembalikan array hanya hasil yang cocok, tetapi saya tidak melihat PowerShell yang setara untuk itu.
Neil

@Neil Performing 'abc'-split'(.)'akan kembali ('','a','','b','','c',''). Tidak ada yang tak tertandingi, tetapi karena bagaimana algoritma memproses melalui string input, Anda mendapatkan string kosong kembali. Lihat di sini .
AdmBorkBork

Ya, dan saya katakan Anda tidak perlu terkejut dengan hasil itu, karena itulah yang seharusnya dilakukan split.
Neil

@Neil Terkejut? Tidak terlalu. Tapi bukan berarti saya harus senang karenanya. : D
AdmBorkBork

4

C, 131 115 113 103 97 95 Bytes

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

Saatnya memulai bermain golf ini ...

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

3

Jelly , 14 byte

“_|__”ṁ700s70Y

TryItOnline!

Bagaimana?

“_|__”ṁ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
Menurut definisi, Jelly tidak boleh lebih dari J.
Adám

Saya melakukan sesuatu yang serupa tanpa aneh : “_|__”ẋ175œs⁵Y(14 byte)
Erik the Outgolfer



3

Javascript REPL, 45 byte

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

1
Selamat datang di PPCG! Ini harus ditandai sebagai "JavaScript REPL" atau serupa, karena ini tidak mencetak apa pun di luar lingkungan konsol interaktif.
Martin Ender

1
Bukankah ini 45 byte?
akrolit

@daHugLenny Anda benar, saya menghitung \ n sebagai satu byte
Juan Tonina

di mana console.log?
cardeol

1
Selama Anda menggunakan ES6 (saya pikir demikian), Anda dapat menggunakan string template, jadi join("\n")bergabunglah dengan <backtick> <literal newline> <backtick>
Stephen

3

JavaScript (ES6), 48 byte

f=(n=350)=>n?(n%35?'_':`
_`)+"|_"[n%2]+f(n-1):""

Karena rekursi.


3

Bash, 44, 41 , 40 byte

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

Printf membuat satu baris sepanjang 700 karakter, egrep mencocokkannya dengan 70 karakter sekaligus.





2

Ruby, 30 byte

Berkat manatwork untuk solusi ini

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

Ruby, 39 byte

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

2
The menghasilkan-semua-kemudian-split pendekatan yang lebih pendek di sini juga: puts ("_|__"*175).scan /.{70}/.
manatwork

@manatwork terima kasih banyak! Saya jarang berpikir untuk menggunakan scankarena saya tidak nyaman dengan regex. Anda tahu Anda bisa memposting itu sebagai jawaban Anda sendiri ...
Level River St

2

Haskell, 56 47 byte

unlines$[1..5]>>take 70.cycle<$>["_|__","___|"]
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.