Pintu garasi listrik saya berfungsi seperti ini:
- Hanya ada satu tombol untuk mengendalikan pintu
- Jika pintu tertutup sepenuhnya dan saya menekan tombol, pintu mulai terbuka. Dibutuhkan 10 detik untuk membuka sepenuhnya
- Jika pintu terbuka penuh dan saya menekan tombol, pintu mulai menutup. Dibutuhkan 10 detik untuk menutup sepenuhnya
- Jika pintunya terbuka atau dibuka dan saya menekan tombolnya, maka pintunya berhenti dan dibiarkan terbuka sebagian.
- Setiap kali pintu berhenti bergerak, baik dari penyelesaian otomatis tindakan terbuka atau tertutup, atau dari gangguan manual dengan menekan tombol di tengah-tengah tindakan, maka mekanisme akan mundur dan mengingat arahnya untuk tindakan selanjutnya.
- Jika tombol ditekan ketika pintu berhenti tetapi sebagian terbuka, maka jumlah waktu untuk menyelesaikan aksinya akan menjadi sebagian kecil dari 10 detik sebanding dengan jumlah yang dibutuhkannya untuk bergerak untuk menyelesaikan aksinya.
Anggap pintu tertutup sepenuhnya pada awalnya.
Daftar input bilangan bulat akan diberikan. Bilangan bulat ini adalah jumlah detik yang saya tunggu di antara tekanan tombol kontrol yang berurutan.
Keluarkan dua hal:
- persentase yang menunjukkan keadaan pintu setelah semua tombol ditekan dan pintu telah mencapai kondisi stabil. Output dari
%
simbol adalah opsional. - indikasi yang jelas tentang arah pintu yang akan dituju pada tombol berikutnya. Ini mungkin
up
/down
,U
/D
,+
/-
,1
/0
atau apa pun yang Anda pilih.
Anda dapat mengasumsikan bahwa pintu membutuhkan waktu sangat kurang dari 10 detik untuk menyelesaikan tindakan terbuka atau tertutup.
Input contoh:
<empty list> # button was pushed just once
20 # button was pushed twice with 20 seconds between
10
5
20 20
10 10
5 5
1 2 3
8 9 10 11
11 10 9 8 7
Output yang diharapkan sesuai dengan input di atas
100% D
0% U
0% U
50% D
100% D
100% D
0% U
100% D
0% U
20% U
Contoh tes terakhir yang berhasil
- Pintu mulai ditutup. Tombol ditekan
- Tunggu 11 detik. Pintu berakhir sepenuhnya terbuka. Tombol ditekan.
- Tunggu 10 detik. Pintu berakhir sepenuhnya tertutup. Tombol ditekan.
- Tunggu 9 detik. Tombol ditekan. Pintu berhenti di 90% terbuka.
- Tunggu 8 detik. Tombol ditekan. Pintu mulai menutup.
- Tunggu 7 detik. Tombol ditekan. Pintu berhenti di 20% terbuka. Arah selanjutnya akan naik.
Jawaban:
Lua,
258248242 byteTidak disatukan
Saya tidak melihat bagaimana kasus pengujian Anda bisa benar ...OP Tetapsumber
Pyth,
504539 byte6 byte berkat Sp3000.
Suite uji.
sumber
JavaScript (ES6),
109106 bytesumber
Ruby, 152 byte
Kasus uji:
sumber
->v{
ke->*v{
(saya pikir). Juga, apakah Anda memerlukan ruang sebelum itu:
serta setelah? Dan apakah Anda yakin itu:a<=0
tidak parsing(:a) <= 0
?:a<=0
, saya akan mendapatArgumentError: comparison of Symbol with 0 failed
jika itu tidak berhasil. Saya pikir karena mem-parsing?
dan tahu itu di operator ternary, itu hanya berfungsi. Aturannya memang aneh. Saya telah meletakkan spasi atau tanda kurung di tempat-tempat yang diperlukan untuk menghindari kesalahan sintaksis sepertiSyntaxError: unexpected tLABEL
danNoMethodError: undefined method
u? ''.a=u ? a+w : a-w
dan mengubahnya kea=a+w*d
manad
merupakan1
atau-1
tergantung pada arah, tapi saya belum bekerja itu belum.Python 3.5,
193187185181175173172 byte:Mengambil input dalam bentuk angka yang dipisah koma, misalnya
1,2,3,4,5
atau genap1.2,3.4,7.8,9.2
. Keluaran apakah pintu pada langkah berikutnya naik atau turun denganU
atauD
, masing-masing. Akan golf lebih banyak dari waktu ke waktu.Cobalah secara Online! (Ideone) (Di sini input diambil dalam bentuk daftar yang terdiri dari angka yang dipisahkan koma, mis
[1,2,3,4,5]
.)sumber
PHP,
128120 byteKode dibungkus di sini agar sesuai dengan kotak kode. Letakkan semuanya dalam satu baris, letakkan penanda PHP terbuka di depannya dan simpan ke dalam file. Atau jalankan dari baris perintah menggunakan
php -d error_reporting=0 -r '...the code...' [arguments]
.Kode sumber ungolfed, suite tes dan contoh penggunaan dapat ditemukan di github .
sumber