Muestra la carga restante de la batería, como porcentaje de la carga máxima
Recuerde que si no puede ejecutar su código en un teléfono, calculadora, etc., probablemente pueda instalar su entorno en una computadora portátil al menos. Si no puede ejecutar absolutamente en un dispositivo que tiene una batería, desafortunadamente su idioma no es elegible ya que no tiene un valor útil para imprimir.
Debe mostrar los resultados en la pantalla. En teoría, se supone que es una utilidad útil para que el usuario verifique la batería. Escribir el porcentaje de batería en un archivo es demasiado torpe, lo que requiere que el usuario compruebe el archivo. Por lo tanto, la visualización en pantalla es una parte de la especificación que no se puede anular por defecto IO. Dicho esto, puede suponer que nada impide que cosas como STDOUT se muestren en la pantalla de la manera habitual.
Si el sistema operativo ya muestra el porcentaje de batería todo el tiempo, como en muchos teléfonos, eso no significa que tenga una solución de cero bytes. Debe suponer que la pantalla integrada no existe y mostrar el porcentaje de batería nuevamente en otro lugar.
Editar: el formato de salida se está abriendo. Usted es libre de mostrar tan solo los dígitos del porcentaje, o los dígitos con alguna salida adicional también.
Edit2: los dígitos que representan el porcentaje deben aparecer en una ubicación conocida dentro de la salida, no más de 50 líneas desde el final de la salida, y esa ubicación no debe cambiar entre invocaciones. Los dígitos que representan el porcentaje deben estar separados de otra salida por al menos un carácter que no sea un dígito en cada lado.
Como referencia, aquí está el formato de salida anterior al cambio:
Remaining battery is ddd%
o
Remaining battery is ddd percent
Respuestas:
Bash,
706750464316 bytesSalidas:
<battery 0-100>: command not found
Lee el archivo
/sys/class/power_supply/BAT1/capacity
.Probado con Ubuntu 18.04 en un LENOVO ideapad 500.
Lleva un tiempo (ya que busca en todo el sistema de archivos), ¡pero ahorra un byte!
Vieja respuesta:
fuente
/so/apes/yadayada/Brunch/calamity
.echo {0.100}
JavaScript (navegador),
787750 bytes(-1 byte gracias a Benoit Esnard )
(-27 bytes ya que el formato de salida es flexible ahora)
JavaScript (navegador), 46 bytes, al devolver una promesa
(Sugerido por Shaggy , requiere un encabezado y pie de página)
Nota: Solo funciona en Google Chrome> = 38 (computadora de escritorio y Android) o en cualquier otro navegador que admita Battery API . Firefox ha eliminado esta API debido a problemas de privacidad.
Ejemplo en Android (formato de salida anterior):
Ejemplo en una computadora portátil con Windows (formato de salida anterior):
fuente
`Remaining battery is ${b.level*100}%`
PowerShell , 28 bytes
-26 (!) Gracias a AdmBorkBork. Versión anterior -3 gracias a colsw.
gwmi
es la abreviatura deGet-WmiObject
|%
toma el patróne*g
y encuentra la única propiedad coincidente;estimatedChargeRemaining
fuente
((gwmi win32_battery)|% e*g)
.Remaining battery is 98 96%
"abc"+(def)+"ghi"
a"abc$(def)ghi"
para guardar un poco más.Bash + acpi,
434 bytesNuevas reglas
salida en forma
No estoy seguro de si el cambio de regla hace las cosas más interesantes, ¿no podría volcar cualquier texto que contenga todas las cadenas de 0 a 100 que serían resultados válidos? Parece perder la intención original si es así.
Viejas reglas
salida en forma
No me preguntes por qué set funciona así, pero lo hace.
fuente
acpi
que @Wilf simplemente no está allí en Mac.Python 3.6 +
psutil
, 80 bytesPruébalo en línea!
Si la máquina no tiene batería (como en TIO), el programa arrojará un error, porque
psutil.sensors_battery()
regresaNone
.Esto requiere Python 3.6 para la interpolación de cadenas .
fuente
C (win32, gcc i686-w64-mingw32), 78 bytes
Abusa de la API win32 al dejar
GetSystemPowerStatus()
escribir "en algún lugar" en la pila, el miembro interesante está en el tercer byte, de acuerdo con laSYSTEM_POWER_STATUS
estructura .Desafortunadamente,
#include
parece ser necesario, probablemente debido a la convocatoria de convenciones.Salida de ejemplo:
Se muestra
255
en sistemas sin batería.fuente
kernel32.dll
. Es por eso que creo que es la convención de llamadas, las funciones de la API win32 no usan el "estándar"cdecl
. Entonces, incluso si pudiera engañar al enlazador de alguna manera, el código probablemente no funcionaría de todos modos./Gz
(predeterminado a__stdcall
)?printf()
sin un prototipo?-mrtd
, pero no sé qué pasaríaprintf()
; tal vez hay una inclusión más corta para ello?Excel VBA, 150 bytes
Restringido a las instalaciones de Office de Windows de 32 bits, porque la llamada Kernel32 de Windows no es segura para punteros de 64 bits.
Salidas a la celda
A1
en la ActiveSheet.-26 bytes gracias a la salida flexible
-7 bytes gracias a @Neil por usar un Int en lugar de 2 bytes
fuente
Declare PtrSafe Sub GetSystemPowerStatus Lib"kernel32"(f As t)
_SYSTEM_POWER_STATUS
estructura , que contiene valores de byte y dword, lo que significa que, en este caso, la estructura debe emularse desde vba, y no se puede usar una matriz de bytes .QPython para Android , 133 bytes
No
+"%"
es estrictamente necesario ya que de todos modos usa el formato de salida más nuevo y flexible, pero ofrece una salida ligeramente más agradable con solo +4 bytes.fuente
d.notify
(crear alerta de notificación) hubiera sido mucho más corto que crear y mostrar el diálogo, pero por alguna razón no funciona, al menos en mi dispositivo (posiblemente, no se ha actualizado para las API de Android más recientes).]Emacs Lisp, 9 bytes
Muestra el estado actual de la batería en el mini-buffer en la parte inferior (o en la salida estándar cuando se usa
--batch
) en formato tales como:Power N/A, battery Unknown (99.1% load, remaining time N/A)
.Debería funcionar en Windows, OSX, BSD y Linux.
fuente
Japt , 60 bytes
Pruébalo
fuente
Java, 546 bytes (Windows XP o superior)
La utilidad powercfg entró en juego para Windows XP, no tengo idea de qué utilidades estaban disponibles antes de esto. También debo ser ejecutado como administrador. Esto es horrible y no hice un intento extremo de golf ...
Formateado / comentado ...
Honestamente, estaba más interesado en ver si era posible en Java.
fuente
{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}