Semua Naik Kereta ASCII!
o O O ___ ___ ___ ___ ___ ___ ___ ___ ___
o | C | | O | | D | | E | | | | G | | O | | L | | F |
TS__[O] |___| |___| |___| |___| |___| |___| |___| |___| |___|
{======|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|
./o--000'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'
Anda sebaiknya bersiap untuk naik kereta, karena Anda akan membangun kereta Anda akan naik. Diberikan string s
, output kereta yang sepenuhnya terbentuk seperti yang digambarkan di atas. Output hal pertama adalah selalu mesin yang akan menarik tali Anda, seperti yang digambarkan sendiri di bawah ini:
o O O
o
TS__[O]
{======|
./o--000'
Mengikuti lokomotif adalah gerbong-gerbong yang berisi setiap karakter dari kargo berharga Anda. Untuk menghemat kebingungan saat menurunkan muatan, perusahaan Anda telah menugaskan Anda dengan memberi label bagian luar mobil-mobil ini. Mobil yang dimaksud akan selalu terlihat seperti ini:
___
| # |
|___|
_|"""""|
"`-0-0-'
Di mana #
perwakilan karakter yang ada di dalam "kargo" terus. Merantai mesin untuk setiap mobil juga merupakan bagian dari pekerjaan Anda, karena Anda telah ditugaskan untuk mengawasi kelancaran dan keberhasilan seluruh pengiriman ini. Jadi, setelah Anda memberi label semua mobil dan mendapatkan mesin di rel, Anda harus memastikan bahwa kereta sudah terpasang dan siap untuk bergulir.
Aturan
- Satu-satunya input yang harus diambil oleh program Anda adalah string tunggal.
- Mesin harus selalu berupa output, meskipun kiriman Anda kosong.
- Setiap mobil hanya dapat menampung satu karakter, jangan memaksakan keberuntungan Anda, Anda dapat merusak barang.
- Anda hanya perlu mendukung karakter ASCII yang dapat dicetak berikut:
_-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Jika Anda akhirnya melakukan lebih banyak, itu juga baik-baik saja, tetapi ini adalah jumlah minimum. - 1-2 ruang tambahan dapat diterima, seperti juga satu baris tambahan.
- Ini adalah kode-golf ascii-art , kemenangan byte-count terpendek.
Jawaban:
05AB1E ,
10199 byteUpaya pertama yang naif.
Cobalah online!
sumber
JavaScript (ES6),
149144 byteSaya tidak berpikir mesin itu sendiri dapat dikompresi, tetapi mungkin itu mungkin.
Cuplikan tes
Tampilkan cuplikan kode
sumber
Befunge,
276270 byteCobalah online!
Penjelasan
Mobil dan mesin dikodekan sebagai dua set lima string pada baris 3 hingga 12. Nilai karakter dimatikan oleh 1 sehingga untuk menghindari harus berurusan dengan tanda kutip ganda yang tidak dapat digunakan dalam string Befunge.
Kode berfungsi dengan membangun set karakter lengkap yang diperlukan untuk membuat kereta di tumpukan. Untuk setiap jalur output, string mobil yang sesuai pertama kali ditambahkan ke tumpukan, diulang sebanyak yang diperlukan untuk kargo, dan kemudian satu salinan dari string mesin yang sesuai.
Setelah setiap baris dibangun, sepasang panah ke kiri dari string diganti dengan panah kanan, sehingga iterasi berikutnya dari loop mengikuti jalur yang berbeda melalui kode, menggunakan sepasang string yang berbeda untuk mobil dan mesin.
Setelah semua data dibangun di stack, ada loop render akhir yang menuliskan karakter, mengurangi 1 setiap kali untuk memperhitungkan pengkodean awal.
Sebagai bonus, sumber dirancang dalam bentuk menara meriam , jika kereta diserang.Pegolf menghancurkan menara pistol saya.sumber
PHP,
218 211 204 187183 byteMengambil input dari STDIN; jalankan bersama
-nR
.Mengompresi mesin atau gerbong akan membutuhkan lebih banyak kode untuk didekompresi daripada menghemat penyimpanan.
Saya tidak melihat potensi di sini.
sumber
a&$c=$argn
bukannya""<$c=$argv[1]
Python 2, 176 byte
Contoh:
memberi
sumber
Powershell,
167166 BytesContoh:
Mungkin tidak valid! Jika dijalankan tanpa args, ia akan mencoba dan mencetak satu string kosong, dan terlihat seperti:
Namun jika dijalankan dengan string input kosong, string itu akan kembali dengan benar:
(agak) Tidak Disatukan:
Kompresi terpendek di Powershell adalah di
+'c'*x
mana c adalah char dan x adalah jumlah pengulangan, dan itu hanya untuk trailing atau pengulangan terkemuka, setiap pengulangan string-pusat akan membutuhkan tambahan+
dan tambahan"
- jadi tidak ada gunanya di mana Saya dapat melihat kompresi menghemat ruang apa pun, dan satu-satunya perangkat char yang diulang___
adalah hanya 3 karakter.Penjelasan:
$l=($a=$args[0]).Length
Ambil arg pertama, masukkan $ a, lalu ambil panjang $ a dan masukkan $ l, ini adalah satu-satunya variabel yang Anda butuhkan." o O O"+" ___ "*$l
sebagian besar bit lainnya mengikuti format bagian kiri ini dan kemudian bagian kanan dikalikan jumlah karakter yang diperlukan." o "+([char[]]$a|%{" | $_ |"})
loop (|%{}
) melalui $ a sebagai array char, jadiforeach (char $_ in $a)
untuk versi non-pipeline, kemudian masukkan char ke dalam teks.ini adalah pendekatan yang sangat sederhana, tetapi karena saya tidak dapat menemukan cara yang baik untuk memampatkan string melewati ini sepertinya itu yang paling berguna.
diselamatkan 1 Byte berkat briantist! dan di sini saya berpikir ini tidak akan menjadi lebih pendek ..
sumber
[char[]]$a
ke$a[0..$l]
:)$l
dan benar-benar lupa. Terima kasih untuk itu!Java, 361 byte
Contoh
sumber
interface C{static void main(String[]v){String n="\n",b=" o O O ",c=" o ",d=" TS__[O] ",e=" {======|",f="./o--000'";for(String x:new java.util.Scanner(System.in).nextLine().split("")){b+="___ ";c+="| "+x+" | ";d+="|___| ";e+="_|\"\"\"\"\"|";f+="\"`-0-0-'";}System.out.print(b+n+c+n+d+n+e+n+f);}}
( 318 bytes ) Atau bahkan lebih jika Anda menggantinyanew java.util.Scanner(System.in).nextLine()
denganv[0]
input alternatif ( 279 bytes ) Cobalah di sini .Perl, 137 byte
132 byte kode + 5 byte untuk
-pF
flag.ascii_train.pl
:Perhatikan bahwa saya menambahkan
-a
tanda pada kode, tetapi itu hanya karena versi lama dari Perl memerlukan-a
saat-F
digunakan.Untuk menjalankannya:
Input harus diberikan tanpa baris akhir final (
echo -n
misalnya dengan).Penjelasan:
Dari apa yang saya lihat, kira-kira ide yang sama dengan jawaban JavaScript ETHProduction.
Tidak banyak yang terjadi: sayangnya polanya sedikit terlalu pendek untuk membuat
x
operator layak digunakan.Pertama,
s/./ | $& | /g
mengelilingi setiap karakter dari input dengan|
(dan spasi) untuk membentuk tingkat kedua kereta.Kemudian di dalam tali panjang itu, segala sesuatu di antara
!
dan garis baru adalah pola yang ingin kami ulangi untuk membuat mobil. Pengulangan itu dilakukan berkat regexs/!(.*)/$1x@F/ge
. (Saya menggunakan!
karena input tidak dapat menampungnya).sumber
C #, 277 Bytes
Golf:
Tidak Disatukan:
Pengujian:
Dan...
sumber
C # 221 byte
tidak ada yang istimewa terjadi di sini .. hanya membuat setiap baris dan bergabung dengan mereka dengan baris baru.
sumber
C,
217212208 BytesCobalah online
Keluaran:
sumber
SOGL V0.12 ,
5756 byteCoba Di Sini!
Penjelasan:
sumber
Jq 1.5 , 178 byte
Diperluas
Contoh dijalankan
Cobalah online
sumber
Excel VBA, 218 Bytes
Fungsi jendela langsung VBE anonim yang mengambil input dari jarak
[A1]
dan keluaran ke jendela langsung VBEDiformat agar mudah dibaca
Output Sampel
sumber