Pekerjaan Anda adalah menciptakan kembali karya seni ini:
_____
|
|
|
|
_____|
|
|
|
|
_____|
|
|
|
|
_____|
|
|
|
|
_____|
Jawabannya harus membuat ulang ini dan mencetak ini sebagai hasilnya. Semua bahasa diizinkan, tidak ada pencetakan seni langsung, ofc, beberapa tingkat manipulasi diperlukan. Jawaban dengan byte terkecil menang.
Ditutup pada hari Kamis 6:30 AM UTC atau lebih.
Hal asli ditunjukkan kepada saya oleh teman saya yang melakukan ini dengan Java, dia menolak untuk menunjukkan kepada saya kode sumber dan sekarang saya akan membuatnya terpesona dengan kecemerlangan bahasa lain mungkin. : D
Anda tidak dapat menggunakan karakter alternatif apa pun (membuatnya lebih mudah?).
Papan pemimpin saat ini
- Pyth - 28 bytes - isaacg
- CJam - 30 byte - Runer112
- CJam - 32 byte - Martin Büttner
Suara terbanyak: C - 73 byte - Paul R
isaacg mengambil mahkota untuk melewati Tantangan Tangga dengan Pyth. Waspadai lebih banyak tantangan seperti ini di PPCG!
sumber
Jawaban:
Pyth,
2928Coba di sini.
Solusi yang cukup mudah, dengan trik "tambahkan lima spasi atau lima garis bawah" dari solusi @ xnor, tetapi dengan loop dari 0 hingga 20, bukan 20 hingga 0.
sumber
C,
8680767573 bytesumber
for(i=25;i--;)
i=26
. Selain itu,' '
dapat diubah32
menjadi karakter tambahan. Solusi saya adalah 2 karakter lebih lama setelah optimasi ini :(main(i){for(i=21;i--;)printf("%*s%c\n",i/5*6+5,i%5?"":"_____",i<20?'|':0);}
1. Sederhanakan rumus untuk panjang 2. Seperti yang dikatakan @ Allbeert, Anda dapat menggunakan kode ascii untuk' '
tetapi mengapa berhenti di ASCII 32 ketika ASCII 0 akan melakukannya. Juga berjalan baik bagi saya dengan""
bukannya" "
'|'
pencetakan?c;main(i){for(i=21;i--;c='|')printf("%*s%c\n",i/5*6+5,i%5?"":"_____",c);}
Jawa,
198158156146 byteIni mungkin bisa dipersingkat banyak. Seperti biasa, saran dipersilahkan.
Diindentasi (agak):
Terima kasih Martin Büttner, Rainbolt, dan Geobits.
sumber
Brainfuck (1065 Bytes)
Itu tidak cantik, tidak pendek ... tapi saya akan mengoptimalkan nanti!
sumber
CJam,
3630 byteCobalah online.
Solusi 36-byte awal saya menghasilkan hasil dalam orientasi output. Meskipun saya berusaha untuk memeras lebih banyak byte dari algoritma, saya tidak bisa. Lalu aku melihat strategi brilian Martin menghasilkan kolom bukan baris dan mentranspos hasilnya. Saya menyadari bahwa itu mungkin pendekatan yang lebih baik, jadi saya berangkat untuk membuat solusi berbasis transposisi.
Namun, pendekatan saya untuk menerapkan strategi itu sedikit berbeda. Alih-alih menghasilkan kolom penuh, saya menggunakan solusi berulang yang indentasi setiap "langkah" yang sudah dihasilkan dan menambahkan menambahkan langkah baru di setiap iterasi. Jadi iterasi pertama dari loop utama menghasilkan ini:
Iterasi kedua dari loop utama indentasi langkah yang ada dan menambahkan yang baru setelahnya:
Dan lima iterasi penuh dari loop utama menghasilkan ini:
Setelah ini, semua yang perlu dilakukan adalah menghilangkan baris pertama, yang sebaliknya akan menjadi riser yang tidak diinginkan untuk langkah bawah, dan berubah.
sumber
Python 2,
807774 byteSingkirkan dobel
exec
dan muat semuanya menjadi satuprint
!sumber
Klip, 46
Penjelasan
sumber
CJam,
3632 byteUji di sini.
Saya juga mencoba menggunakan rumus eksplisit, tetapi lebih lama di CJam ... mungkin itu membantu orang lain:
Penjelasan
Saya menemukan bahwa tangga dapat dibangun lebih mudah jika Anda a) mengubah posisi grid dan b) membalikkan garis:
Jadi pertama saya membangun itu, lalu membalikkannya, kemudian pindah.
sumber
Python 2, 59
21 baris diindeks oleh
n
dalam[20,19,...,1,0]
. Pertama mencetak 6 spasi untuk setiap "langkah" kita naik (minus 1), dihitung sebagain/5*6
. Kemudian, cetak lima spasi, kecuali ini bukan garis bawah untuk kelipatan lima. Akhirnya, mencetak garis vertikal, kecuali untuk garis atasn=20
.sumber
JavaScript,
1151079694898783 byteIni terlalu lama untuk dimenangkan, tetapi ini pertama kalinya saya menemukan jawaban di PCG.SE, dan saya agak bangga telah membuat sesuatu yang dapat diposkan.
Dengan beberapa saran sintaksis yang membantu saya mempersingkat kode secara signifikan - bahkan di bawah ambang scrollbar!
sumber
alert
. Jika Anda menjalankannya di konsol berfungsi dengan baik tanpa itu. Juga, titik koma di dalam kurung kurawal terakhir tidak diperlukan. Anda dapat menyimpan 1 byte dengan menggunakan(y/5-.2)
bukannya((y-1)/5)
s+='\n'
setelahy--
dan menyingkirkan kurung kurawal sehingga terlihat sepertifor(s='',y=21;y>0;y--,s+='\n')
. Saya juga menginisialisasi s di dalam untuk loop sehingga kode Anda semua adalah satu pernyataanfor(s='',y=22;--y;s+='\n')for(x=0;++x<29;)s+=6*~~(y/5-.2)+5-x?5*~~(x/6)+1-y?' ':'_':'|'
jika Anda membalik ekspresi ternary Anda, Anda dapat mengujinumber - x
yang 0 jika kedua istilah sama menghemat Anda 2 byte lebih.for(s='',y=22;--y;s+='\n')for(x=0;++x<29;)s+=6*~(~-y/5)-~x?4+5*~(x/6)+y?' ':'_':'|'
adalah 83ECMAScript 6,
14213812991 byteTerima kasih khusus kepada @ edc65 untuk benar-benar mengerjakan ulang ini.
Tampilkan cuplikan kode
Logika dari versi asli memeriksa @ edc65 komentar untuk bagaimana ia berubah.
sumber
new
konstruktor dengan aman sebelumArray
menyimpan beberapa byte.new
itu perlu.repeat
[1,2,3,4].map((a,b)
dan hanya menggunakan b =>[0,1,2,3].map(b
(-4)MATLAB, 68 byte
Saya memiliki perasaan yang kuat bahwa MATLAB seharusnya dapat melakukan yang lebih baik, tetapi saya tidak dapat memikirkan caranya.
Buat tangga terbalik dan membalikkannya. Taumometer saya pecah karena semua konstanta sihir di sekitar.
'|'
sengaja dibiarkan apa adanya (bukannya codepoint ascii) untuk menginisialisasip
danw
sebagai array char.sumber
'|' = 124
lagi pula, jadi itu tidak memerlukan biaya tambahan.Ruby, 48
Pendekatan lama, 68
sumber
'_'
dapat ditulis sebagai?_
. 3. Baris baru dapat disematkan secara langsung dalam string (sehingga Anda dapat melakukannya"<linebreakhere>|"
). 4. Tanda kurung di sekitar itu tidak perlu. Finalputs
dapat diganti dengan$><<
(yang memungkinkan Anda untuk menyingkirkan ruang, bahkan setelah menggunakan?_
). Teruskan! :)(1..4).map
dengan4.times
dan kemudian menggunakan4-i
bukannya5-i
.Julia, 83 byte
Di Julia, penggabungan string dilakukan menggunakan
*
operator dan pengulangan string dilakukan menggunakan^
.sumber
> <> ,
108104100 byteSolusi>> sederhana, menggunakan strategi yang sama dengan jawaban Python saya . Perbedaan utama adalah bahwa> <> tidak memiliki perkalian string (atau bahkan string), jadi semua itu dilakukan dengan loop.
Penjelasan
sumber
Groovy,
9871 byteSaya cukup yakin, bahwa itu dapat dikurangi entah bagaimana :) disingkat oleh @Score_Under
sumber
' '*(i-(i-1)%5)
, kurung menghapus dari seluruh('_____'+(i==25?'':'|'))
, ganti'_____'
dengan'_'*5
, dan jika Anda membalik bersyarat terakhir yang Anda dapat menggunakan% sebagai operator ketidaksetaraan ortodoks:(i%25?'|':'')
. Ini akan membuat Anda turun ke 71.Perl, 50
Coba saya .
sumber
T-SQL, 276 byte
sumber
Visual FoxPro 9.0, 261 byte
n = Jumlah Langkah
total 175 karakter, tetapi harus menampilkan ke file untuk ditampilkan dengan benar - jadi minus 43 karakter untuk operasi file = 132 karakter.
Catatan untuk penjawab: Jumlah byte adalah untuk kode sumber kerja absolut, dan penghitung byte mengatakan bahwa itu 261 byte, begitu juga.
sumber
Bash (+ tac dari coreutils): 110 byte
Ini dapat ditempelkan langsung ke terminal.
sumber
|tac
, itu tidak akan berhasil. Dan saya menjalankan ini pada Git Bash, jadi saya harus bunuh diri.kode mesin x86, 48 byte
Setara kode perakitan:
Keluaran:
Maaf tentang hasilnya berbeda; Saya harap ini bisa diterima.
Ini dijalankan di DOSBOX
sumber