EDIT
Tampaknya ada beberapa kebingungan mengikuti kesalahan ketik saya di posting asli yang menggunakan huruf kecil untuk mendefinisikan pesawat dan kemudian huruf besar kemudian. Sayangnya bug ini tidak dijemput di Sandbox. Karena banyak anggota telah menulis jawaban dengan keduanya dan karena kesalahan ketik itu adalah kesalahan saya, saya akan mengizinkan huruf besar atau kecil dalam definisi pesawat. Saya telah menambahkan aturan baru untuk ini.
Latar Belakang
Saya suka animasi seni ascii karena saya cenderung memanggil mereka jadi di sini ada satu lagi. Saya rasa ini tidak terlalu sulit untuk diterapkan, semoga akan mendapatkan jawaban singkat dan menarik.
Untuk semua anggota komunitas
Jika Anda meningkatkan jawaban Anda, ubah hitung byte Anda sebagai
byte lama menghitung byte baru
sehingga kami dapat melihat kemajuan Anda. Terima kasih!
Tantangan
Ini pesawat ascii
--O--
Inilah landasan pacu ascii
____| |____
Pesawat mulai di 5 baris baru di atas landasan. Untuk mencegah bentrokan antara sistem metrik dan imperial dan menjadikannya tantangan internasional, saya tidak akan menyebut meter atau kaki. Contoh:
--O--
____| |____
Pesawat harus mendarat tepat di tengah landasan seperti yang ditunjukkan di bawah ini:
____|--O--|____
Memasukkan
Posisi horisontal awal pesawat didefinisikan oleh input integer yang digunakan untuk merujuk ujung sayap kiri yaitu antara 0 dan 10 inklusif.
Keluaran
Setiap tahap penerbangan pesawat harus ditunjukkan. Contoh di bawah ini (input = 10):
--O--
____| |____
--O--
____| |____
--O--
____| |____
--O--
____| |____
--O--
____| |____
____|--O--|____
Untuk mempermudah, kami mengabaikan hukum perspektif. Landasan pacu tetap ukuran yang sama saat Anda semakin dekat.
Aturan
- Pembaruan Bagian tengah pesawat dapat berupa huruf besar atau huruf kecil tetapi yang dipilih harus konsisten di seluruh kode. Jika bahasa Anda tidak mendukung karakter di atas jangan ragu untuk menggunakan karakter ascii alternatif saja.
- Pesawat turun 1 baris per frame.
- Pesawat hanya dapat memindahkan 1 ruang ke kiri atau kanan setiap kali turun satu garis. Itu tidak harus bergerak pada setiap garis keturunan. Selama selesai di landasan pacu, itu terserah Anda ketika bergerak ke kanan atau kiri. Kamu pilotnya!
- Tidak diperlukan penanganan kesalahan. Anda dapat mengasumsikan bahwa input akan selalu berupa bilangan bulat yang valid dari 0-10 inklusif.
- Keluaran harus terdiri dari hanya karakter yang ditunjukkan di atas (jika bahasa Anda tidak mendukungnya, aturan pertama yang diedit lihat) dan harus berukuran sama yaitu harus mulai tinggi 6 baris dengan lebar 15 karakter. Ketinggiannya dapat berkurang karena berlangsung seperti pada contoh di atas.
- Program atau fungsi baik-baik saja tetapi harus menghasilkan keluaran seperti yang ditunjukkan di atas.
- Ruang memimpin / mengikuti / baris baru baik-baik saja oleh saya.
- Silakan hapus layar di antara frame-frame keluaran jika Anda mau. Ini bukan persyaratan.
- Lubang standar dilarang seperti biasa (walaupun saya pikir tidak banyak yang akan membantu dengan tantangan semacam ini).
- Ini adalah kode golf sehingga jawaban terpendek jelas merupakan pemenang dan mungkin akan mendapatkan suara terbanyak tetapi mungkin belum tentu diterima sebagai jawaban terbaik jika beberapa solusi yang sangat menarik datang dalam beberapa bahasa yang tidak terduga, bahkan jika itu lebih lama. Jangan ragu untuk memposting apa pun yang memenuhi aturan selama itu berhasil.
Implementasi referensi yang tidak digabungkan dalam Python 2 tersedia di Coba online! sehingga Anda dapat melihat tampilannya untuk nilai input yang berbeda.
Jawaban:
TI-BASIC, 61 byte
sumber
TI-BASIC, 62 byte
Perhatikan bahwa TI-BASIC tidak mendukung _ atau | dan karena itu saya ganti dengan modal I dan -. Ini seharusnya tidak mempengaruhi jumlah byte.
sumber
Python 2, 107 byte
Cobalah online
Cukup hardcodes baris terakhir untuk pesawat pendaratan. Ini mungkin dapat golf dengan menggunakan bagian-bagian sebelumnya atau diintegrasikan ke dalam loop.
sumber
Perl, 94 byte
93 byte kode +
-p
bendera.Cobalah online!
sumber
}{
(dan mengutak -$"
atik penyorotan sintaks).JavaScript (ES6), 108 byte
Menguji
Tampilkan cuplikan kode
Pemakaian
Panggil saja
f
dengan indeks pesawat.Keluaran
sumber
Scala,
224181 byteEDIT : Saya tidak tahu Anda bisa lakukan
"string"*n
untuk mengulanginya n kali! Scala terus meniup pikiranku. Melewatkan yangif(t>0)
bukanif(t==0)
adalah kesalahan pemula. Terima kasih atas tipsnya, Suma !Komentar asli:
Saya pikir solusi rekursif akan menyenangkan untuk dicoba. Saya relatif baru di Scala, jadi saya yakin ini masih jauh dari optimal.
sumber
:Unit=
. Menghilangkan tanda sama dengan akan mengatur jenis kembali ke Unit.o
di baris pertama ?. Dan karenai
selalu> = 0, Anda dapat mengubahi!=0&&i==t
kei>0&i==t
(baris ke-3).Batch, 230 byte
x
adalah jumlah spasi yang harus dihapus dari awal strings
, jadi saya kurangi parameter dari 10. Baris terakhir adalah Batch terdekatx-=sgn(x-5)
.sumber
sed, 181 byte + 2 untuk
-nr
benderaTidak disatukan
Pemakaian:
$ echo 2 | sed -nrf flightsim.sed
sumber
Retina ,
8683 byteCobalah online!
Mungkin ada semacam kompresi yang bisa saya gunakan di landasan pacu dan ruang kosong di atasnya, tetapi apa pun yang saya coba muncul lebih mahal daripada plaintext (di Retina line adalah baris baru, sehingga Anda dapat melihat status awal dalam plaintext pada baris kedua).
sumber
Scala ,
177, 163, 159137 byteBerdasarkan jawaban lain , dengan pengurangan yang signifikan.
sumber
Perl 6 ,
979081 byteBertolak belakang dengan tampilannya, ia mengeluarkan versi * lebih rendah dari pesawat (
--o--
), sebagaimana diizinkan oleh deskripsi tugas yang diperbarui.Cobalah online!
Bagaimana itu bekerja
Operator string bitwise, FTW!
Ini bekerja karena operator string bitwise menggunakan nilai-nilai codepoint karakter pada posisi tertentu dalam dua string, untuk menghitung karakter baru pada posisi itu dalam string output.
Pada kasus ini:
Untuk
O
bidang huruf besar , kita bisa menggunakan~^
(string bitwise XOR), dengan mask bidang\r\ro\r\r
(+4 byte untuk garis miring terbalik):Rumus untuk offset pesawat
h + v*(17 - h/5)
,, disederhanakan dari:sumber
Python 2 , 160 byte
Cobalah online!
Berikut ini adalah implementasi referensi yang diturunkan ke 160 dari 384. Saya pikir masih jalan. Baru diposkan untuk bersenang-senang dan untuk mendorong jawaban Python yang lebih baik.
sumber
while-~x
?i
sebagaii+=(i<5)-(i>5)
Befunge-93,
136130 byteCobalah online!
Penjelasan
sumber
Ruby, 94 byte
Mencetak posisi pesawat diikuti oleh baris baru dan kemudian bandara. Kemudian memindahkan pesawat dengan 1, -1, atau 0, tergantung pada posisinya relatif ke 5.
Setelah mengulang 5 kali di atas, ia mencetak pesawat di bandara.
sumber
8 ,
177172 byteKata
f
mengharapkan bilangan bulat antara 0 dan 10.Pemakaian
Penjelasan
sumber
Mathematica, 111 byte
Fungsi anonim. Mengambil angka sebagai input dan mengembalikan string sebagai output. Mungkin bisa bermain golf lebih lanjut.
sumber
QBIC ,
939184 byteTurun beberapa byte dengan mengganti deklarasi X $; dioptimalkan loop FOR yang mencetak jarak di atas tanah. Penjelasan di bawah ini untuk versi lama, tetapi pada dasarnya berfungsi sama.
Untuk pengujian (dan estetika) saya memiliki versi yang sedikit berbeda, yaitu 103 byte:
Ini identik secara fungsional. Yang kedua memiliki tambahan bahwa layar akan dihapus antara frame dan berhenti selama 0,5 detik antara frame.
Output sampel
Perhatikan bahwa saya telah menambahkan dua baris baru di antara bingkai. Kode paling golf di atas tidak menambahkan garis kosong di antara bingkai, yang lebih dingin membersihkan layar.
Penjelasan
Karena saya merasa ini menyentuh banyak hal yang saya sukai tentang QBIC, dan memberikan wawasan yang baik tentang bagaimana beberapa fungsinya bekerja di bawah tenda, saya sudah sedikit berlebihan dalam penjelasannya. Perhatikan bahwa QBIC, pada intinya, adalah juru bahasa QBasic untuk Codegolf. Kode QBIC masuk - kode QBasic keluar (dan selanjutnya dieksekusi).
sumber
SmileBASIC,
109105 bytesumber
PHP 7, 139 byte
masih sangat panjang
mengambil input dari argumen baris perintah; jalankan bersama
-r
.kerusakan
sumber