Отображение оставшегося заряда батареи в процентах от максимального заряда
Помните, что если вы не можете запустить свой код на телефоне, калькуляторе и т. Д., Вы, вероятно, сможете установить свою среду как минимум на ноутбук. Если вы абсолютно не можете работать на устройстве с батареей, то, к сожалению, ваш язык не подходит, так как у вас нет полезного значения для печати.
Вы должны отобразить результаты на экране. Теоретически это удобная утилита для проверки батареи пользователем. Запись процента заряда батареи в файл слишком громоздка, поэтому пользователю необходимо проверить файл. Поэтому отображение на экране является частью спецификации, которая не может быть переопределена по умолчанию IO. Тем не менее, вы можете предположить, что ничто не мешает таким вещам, как STDOUT, отображаться на экране обычным способом.
Если процент заряда батареи уже отображается на экране операционной системой все время, как на многих телефонах, это не означает, что у вас есть решение с нулевым байтом. Вы должны предположить, что встроенный дисплей не существует, и снова отобразить процент заряда батареи где-нибудь еще.
Редактировать: выходной формат открывается. Вы можете отображать только цифры процента или цифры с дополнительным выводом.
Edit2: цифры, представляющие проценты, должны появляться в известном месте на выходе, не более чем на 50 строк от конца вывода, и это расположение не должно меняться между вызовами. Цифры, представляющие проценты, должны быть отделены от других выходных данных хотя бы одним нецифровым символом на каждой стороне.
Для справки вот старый формат вывода до изменения:
Remaining battery is ddd%
или
Remaining battery is ddd percent
Ответы:
Баш,
706750464316 байтВыходы:
<battery 0-100>: command not found
Читает файл
/sys/class/power_supply/BAT1/capacity
.Протестировано с использованием Ubuntu 18.04 на LENOVO ideapad 500.
Занимает некоторое время (так как он ищет всю файловую систему) - но сохраняет байт!
Старый ответ:
источник
/so/apes/yadayada/Brunch/calamity
.echo {0.100}
JavaScript (браузер),
787750 байт(-1 байт благодаря Бенуа Эснарду )
(-27 байт, поскольку формат вывода теперь гибкий)
JavaScript (браузер), 46 байт, возвращая обещание
(Предложено Shaggy , требуется верхний и нижний колонтитулы)
Примечание. Работает только в Google Chrome> = 38 (для ПК и Android) или в любом другом браузере, который поддерживает Battery API . FireFox удалил этот API из-за проблем конфиденциальности.
Пример на Android (старый формат вывода):
Пример на ноутбуке с Windows (старый формат вывода):
источник
`Remaining battery is ${b.level*100}%`
PowerShell , 28 байт
-26 (!) Благодаря AdmBorkBork. Предыдущая версия -3 благодаря colsw.
gwmi
коротка дляGet-WmiObject
|%
берет шаблонe*g
и находит единственное подходящее свойство;estimatedChargeRemaining
источник
((gwmi win32_battery)|% e*g)
.Remaining battery is 98 96%
"abc"+(def)+"ghi"
на,"abc$(def)ghi"
чтобы сохранить еще немного.Баш + акпи,
434 байтаНовые правила
вывод на форму
не уверен, что если изменение правила сделает вещи более интересными, не могли бы вы выкинуть какой-нибудь текст, содержащий все строки от 0 до 100, которые были бы верным выводом? Кажется, потерял первоначальное намерение, если так.
Старые правила
вывод на форму
Не спрашивайте меня, почему набор работает так, но это так.
источник
acpi
просто нет на Mac, кажется.Python 3.6 +
psutil
, 80 байтПопробуйте онлайн!
Если на машине нет батареи (как на TIO), программа выдаст ошибку, потому что
psutil.sensors_battery()
возвращаетсяNone
.Это требует Python 3.6 для интерполяции строк .
источник
C (win32, gcc i686-w64-mingw32), 78 байт
Злоупотребляет API-интерфейсом win32, позволяя
GetSystemPowerStatus()
писать «где-то» в стеке, интересный член находится в третьем байте, в соответствии соSYSTEM_POWER_STATUS
структурой .К сожалению,
#include
кажется, что это необходимо, вероятно, из-за соглашений о вызовах.Пример вывода:
Отображается
255
в системах без батареи.источник
kernel32.dll
. Вот почему я думаю, что это соглашение о вызовах, функции Win32 API не используют «стандарт»cdecl
. Так что даже если бы я мог как-то обмануть компоновщик, код, вероятно, не работал бы в любом случае./Gz
(по умолчанию__stdcall
)?printf()
без прототипа?-mrtd
, но я не знаю, что будет сprintf()
; может быть, есть более короткое включение для этого?Excel VBA, 150 байт
Ограничено 32-битной Windows. Установка офиса, поскольку вызов Windows Kernel32 не является безопасным для 64-битного указателя.
A1
Вывод в ячейку на ActiveSheet.-26 байт благодаря гибкому выводу
-7 байтов благодаря @Neil за использование Int вместо 2 байтов
источник
Declare PtrSafe Sub GetSystemPowerStatus Lib"kernel32"(f As t)
_SYSTEM_POWER_STATUS
структуры , который содержит значения как байтов, так и значений двойного слова, что означает, что в этом случае структура должна эмулироваться из vba, а байтовый массив не может использоваться ,QPython для Android , 133 байта
+"%"
Не является строго необходимым , поскольку он использует более новый более гибкий формат вывод в любом случае, но это делает немного более хороший выход составляет всего +4 байт.источник
d.notify
(создание уведомлений) было бы намного короче, чем создание и отображение диалогового окна, но по какой-то причине оно не работает, по крайней мере, на моем устройстве (возможно, оно не было обновлено для более новых API Android).]Emacs Lisp, 9 байт
Показывает текущее состояние батареи в мини-буфере внизу (или в стандартный вывод при использовании
--batch
) в формате, таком как:Power N/A, battery Unknown (99.1% load, remaining time N/A)
.Должен работать на Windows, OSX, BSD и Linux.
источник
Japt , 60 байт
Попробуй это
источник
Java, 546 байт (Windows XP или выше)
Утилита powercfg вошла в игру для WindowsXP, я понятия не имею, какие утилиты были доступны до этого. Я также должен быть запущен от имени администратора. Это ужасно, и я не делал экстремальных попыток игры в гольф ...
Отформатировано / прокомментировано ...
Честно говоря, мне было больше интересно посмотреть, возможно ли это даже на Java.
источник
{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}