Tampilkan sisa daya baterai, sebagai persentase dari daya maksimum
Ingatlah jika Anda tidak dapat menjalankan kode Anda di telepon, kalkulator, dll, Anda mungkin dapat menginstal lingkungan Anda di laptop setidaknya. Jika Anda benar-benar tidak dapat berjalan pada perangkat yang memiliki baterai, maka sayangnya bahasa Anda tidak memenuhi syarat karena Anda tidak memiliki nilai berguna untuk dicetak.
Anda harus menampilkan hasilnya di layar. Ini secara teoritis seharusnya menjadi utilitas praktis bagi pengguna untuk memeriksa baterai. Menulis persen baterai ke file terlalu kikuk, mengharuskan pengguna untuk memeriksa file. Oleh karena itu, tampilan di layar adalah bagian dari spesifikasi yang tidak dapat ditimpa secara default oleh IO. Yang mengatakan, Anda dapat menganggap tidak ada yang mencegah hal-hal seperti STDOUT ditampilkan di layar dengan cara biasa.
Jika persen baterai sudah ditampilkan di layar setiap saat oleh OS, seperti pada banyak ponsel, itu tidak berarti Anda mendapatkan solusi nol-byte. Anda harus mengasumsikan bahwa tampilan bawaan tidak ada, dan menampilkan persen baterai lagi di tempat lain.
Sunting: Format keluaran sedang dibuka. Anda bebas untuk menampilkan sesedikit hanya digit persen, atau digit dengan beberapa output tambahan juga.
Sunting2: Digit yang mewakili persen harus muncul di lokasi yang diketahui dalam output, tidak lebih dari 50 baris dari akhir output, dan lokasi itu tidak boleh berubah di antara permintaan. Digit yang mewakili persen harus dipisahkan dari output lain oleh setidaknya satu karakter non-digit di setiap sisi.
Untuk referensi di sini adalah format keluaran lama dari sebelum perubahan:
Remaining battery is ddd%
atau
Remaining battery is ddd percent
Jawaban:
Bash,
706750464316 byteOutput:
<battery 0-100>: command not found
Membaca file
/sys/class/power_supply/BAT1/capacity
.Diuji menggunakan Ubuntu 18.04 pada LENOVO ideapad 500.
Butuh beberapa saat (karena mencari seluruh sistem file) - tetapi menghemat satu byte!
Jawaban lama:
sumber
/so/apes/yadayada/Brunch/calamity
.echo {0.100}
JavaScript (browser),
787750 byte(-1 byte terima kasih kepada Benoit Esnard )
(-27 byte karena format output fleksibel sekarang)
JavaScript (browser), 46 byte, dengan mengembalikan janji
(Disarankan oleh Shaggy , membutuhkan header dan footer)
Catatan: Hanya berfungsi di Google Chrome> = 38 (desktop dan Android) atau browser lain yang mendukung API Baterai . FireFox telah menghapus API ini karena masalah privasi.
Contoh di Android (format output lama):
Contoh pada laptop Windows (format output lama):
sumber
`Remaining battery is ${b.level*100}%`
PowerShell , 28 byte
-26 (!) Terima kasih kepada AdmBorkBork. Versi sebelumnya -3 terima kasih kepada colsw.
gwmi
kependekan dariGet-WmiObject
|%
mengambil polanyae*g
dan menemukan satu-satunya properti yang cocok;estimatedChargeRemaining
sumber
((gwmi win32_battery)|% e*g)
.Remaining battery is 98 96%
"abc"+(def)+"ghi"
untuk"abc$(def)ghi"
menyimpan lebih banyak.Bash + acpi,
434 byteAturan baru
output pada formulir
tidak yakin jika perubahan aturan membuat hal-hal lebih menarik, tidak bisakah Anda membuang teks yang berisi semua string 0 hingga 100 yang akan menjadi output yang valid? Tampaknya kehilangan niat awal jika demikian.
Aturan lama
output pada formulir
Jangan tanya saya mengapa set berfungsi seperti ini, tetapi ya.
sumber
acpi
tidak ada di Mac.Python 3,6 +
psutil
, 80 byteCobalah online!
Jika mesin tidak memiliki baterai (seperti pada TIO), program akan melempar kesalahan, karena
psutil.sensors_battery()
kembaliNone
.Ini membutuhkan Python 3.6 untuk interpolasi string .
sumber
C (win32, gcc i686-w64-mingw32), 78 byte
Menyalahgunakan win32 API dengan membiarkan
GetSystemPowerStatus()
menulis "di suatu tempat" di stack, anggota yang menarik berada di byte ketiga, menurutSYSTEM_POWER_STATUS
struct .Sayangnya,
#include
sepertinya diperlukan, mungkin karena mengadakan konvensi.Contoh output:
Menampilkan
255
sistem tanpa baterai.sumber
kernel32.dll
. Itu sebabnya saya pikir itu adalah konvensi pemanggilan, fungsi win32 API tidak menggunakan "standar"cdecl
. Jadi, bahkan jika saya bisa mengelabui linker, kode mungkin tidak akan bekerja./Gz
(default ke__stdcall
)?printf()
tanpa prototipe?-mrtd
, tetapi saya tidak tahu apa yang akan terjadi padaprintf()
; mungkin ada yang lebih pendek termasuk untuk itu?Excel VBA, 150 byte
Terbatas untuk Pemasangan Windows kantor 32-Bit, karena panggilan windows Kernel32 tidak aman 64-bit.
Output ke sel
A1
pada ActiveSheet.-26 byte berkat output yang fleksibel
-7 byte terima kasih kepada @Neil untuk menggunakan Int, bukan 2 byte
sumber
Declare PtrSafe Sub GetSystemPowerStatus Lib"kernel32"(f As t)
_SYSTEM_POWER_STATUS
struktur , yang memegang nilai byte dan kata, yang berarti bahwa, dalam hal ini, struktur harus ditiru dari dalam vba, dan array byte tidak dapat digunakan .QPython untuk Android , 133 byte
Itu
+"%"
tidak sepenuhnya diperlukan karena menggunakan format output yang lebih fleksibel yang lebih baru, tetapi membuat output yang sedikit lebih bagus hanya dengan +4 byte.sumber
d.notify
(buat lansiran pemberitahuan) akan jauh lebih pendek daripada membuat dan menampilkan dialog, tetapi untuk beberapa alasan itu tidak berfungsi, setidaknya di perangkat saya (mungkin, itu belum diperbarui untuk API Android yang lebih baru).]Emacs Lisp, 9 byte
Menunjukkan status baterai saat ini di mini-penyangga di bagian bawah (atau ke stdout ketika menggunakan
--batch
) dalam format seperti:Power N/A, battery Unknown (99.1% load, remaining time N/A)
.Harus bekerja di Windows, OSX, BSD, dan Linux.
sumber
Japt , 60 byte
Menguji
sumber
Java, 546 byte (Windows XP atau lebih tinggi)
Utilitas powercfg mulai digunakan untuk WindowsXP, saya tidak tahu utilitas apa yang tersedia sebelum ini. Saya juga harus dijalankan sebagai administrator. Ini mengerikan sekali dan saya tidak melakukan upaya golf yang ekstrim ...
Diformat / dikomentari ...
Jujur saya lebih tertarik untuk melihat apakah itu mungkin di Jawa.
sumber
{Runtime.getRuntime().exec("powercfg energy").waitFor();x=new XMLSlurper(new File("C:\\windows\\system32\\energy-report.html"));x.html.table.tr[#].span[0] as int/x.html.table.tr[#].span[0] as int}