Exibe a carga restante da bateria, como uma porcentagem da carga máxima
Lembre-se, se você não pode executar seu código em um telefone, calculadora, etc, provavelmente pode instalar seu ambiente em pelo menos um laptop. Se você absolutamente não pode rodar em um dispositivo com bateria, infelizmente seu idioma não é elegível, pois você não tem um valor útil para imprimir.
Você deve exibir os resultados na tela. Teoricamente, é suposto ser um utilitário útil para o usuário verificar a bateria. Gravar a porcentagem da bateria em um arquivo é muito complicado, exigindo que o usuário verifique o arquivo. A exibição na tela é, portanto, parte da especificação que não pode ser substituída pelo IO padrão. Dito isso, você pode assumir que nada impede que coisas como STDOUT sejam exibidas na tela da maneira usual.
Se a porcentagem da bateria já estiver sendo exibida na tela o tempo todo pelo sistema operacional, como em muitos telefones, isso não significa que você tenha uma solução de zero byte. Você deve assumir que a tela embutida não existe e exibir a porcentagem da bateria novamente em outro lugar.
Edit: O formato de saída está sendo aberto. Você é livre para exibir apenas apenas os dígitos da porcentagem ou os dígitos com alguma saída extra também.
Edit2: Os dígitos que representam a porcentagem devem aparecer em um local conhecido na saída, a não mais de 50 linhas do final da saída, e esse local não deve mudar entre as chamadas. Os dígitos que representam a porcentagem devem ser separados de outras saídas por pelo menos um caractere não dígito de cada lado.
Para referência, aqui está o antigo formato de saída anterior à alteração:
Remaining battery is ddd%
ou
Remaining battery is ddd percent
Respostas:
Bash,
706750464316 bytesSaídas:
<battery 0-100>: command not found
Lê o arquivo
/sys/class/power_supply/BAT1/capacity
.Testado usando o Ubuntu 18.04 em um ideapad 500 do LENOVO.
Demora um pouco (já que pesquisa todo o sistema de arquivos) - mas salva um byte!
Resposta antiga:
fonte
/so/apes/yadayada/Brunch/calamity
.echo {0.100}
JavaScript (navegador),
787750 bytes(-1 byte graças a Benoit Esnard )
(-27 bytes, já que o formato de saída é flexível agora)
JavaScript (navegador), 46 bytes, retornando uma promessa
(Sugerido por Shaggy , requer cabeçalho e rodapé)
Nota: Funciona apenas no Google Chrome> = 38 (computador e Android) ou em qualquer outro navegador compatível com a API da bateria . O FireFox removeu esta API devido a questões de privacidade.
Exemplo no Android (formato de saída antigo):
Exemplo em um laptop Windows (formato de saída antigo):
fonte
`Remaining battery is ${b.level*100}%`
PowerShell , 28 bytes
-26 (!) Graças ao AdmBorkBork. Versão anterior -3 graças ao colsw.
gwmi
é curto paraGet-WmiObject
|%
pega o padrãoe*g
e encontra a única propriedade correspondente;estimatedChargeRemaining
fonte
((gwmi win32_battery)|% e*g)
.Remaining battery is 98 96%
"abc"+(def)+"ghi"
para"abc$(def)ghi"
para economizar um pouco mais.Bash + acpi,
434 bytesNovas regras
saída no formulário
não tenho certeza se a alteração da regra torna as coisas mais interessantes, você não poderia despejar qualquer texto que contenha todas as seqüências de 0 a 100 que seria uma saída válida? Parece perder a intenção original, se assim for.
Regras antigas
saída no formulário
Não me pergunte por que o set funciona assim, mas funciona.
fonte
acpi
simplesmente não existe no Mac, parece.Python 3.6 +
psutil
, 80 bytesExperimente online!
Se a máquina não tiver bateria (como no TIO), o programa lançará um erro, pois
psutil.sensors_battery()
retornaNone
.Isso requer o Python 3.6 para interpolação de strings .
fonte
C (win32, gcc i686-w64-mingw32), 78 bytes
Abusa a API do win32 deixando a
GetSystemPowerStatus()
gravação "em algum lugar" na pilha, o membro interessante está no terceiro byte, de acordo com aSYSTEM_POWER_STATUS
estrutura .Infelizmente,
#include
parece ser necessário, provavelmente por causa de convocar convenções.Exemplo de saída:
Exibe
255
em sistemas sem bateria.fonte
kernel32.dll
. É por isso que acho que é a convenção de chamada, as funções da API do win32 não usam o "padrão"cdecl
. Portanto, mesmo que eu pudesse enganar o vinculador de alguma forma, o código provavelmente não funcionaria de qualquer maneira./Gz
(padrão para__stdcall
)?printf()
sem um protótipo?-mrtd
, mas não sei o que aconteceriaprintf()
; talvez haja uma inclusão mais curta para isso?Excel VBA, 150 bytes
Restrito ao Windows de 32 bits Instalações do escritório, porque a chamada do Kernel32 do Windows não é um ponteiro de 64 bits seguro.
Saídas para a célula
A1
no ActiveSheet.-26 bytes graças à saída flexível
-7 bytes graças a @Neil por usar um Int em vez de 2 bytes
fonte
Declare PtrSafe Sub GetSystemPowerStatus Lib"kernel32"(f As t)
_SYSTEM_POWER_STATUS
estrutura , que contém valores de byte e dword, o que significa que, nesse caso, a estrutura deve ser emulada no vba e uma matriz de bytes não pode ser usada .QPython para Android , 133 bytes
A
+"%"
não é estritamente necessário uma vez que utiliza o formato de saída mais flexível mais recente de qualquer maneira, mas faz para a saída um pouco mais agradável em apenas 4 bytes.fonte
d.notify
(criar alerta de notificação) teria sido muito menor do que criar e exibir a caixa de diálogo, mas por algum motivo ela não funciona, pelo menos no meu dispositivo (possivelmente, não foi atualizada para as APIs Android mais recentes).]Emacs Lisp, 9 bytes
Mostra o estado de carga actual da bateria em mini-tampão, na parte inferior (ou para a saída padrão quando se utiliza
--batch
) em formato tal como:Power N/A, battery Unknown (99.1% load, remaining time N/A)
.Deve funcionar no Windows, OSX, BSD e Linux.
fonte
Japt , 60 bytes
Teste-o
fonte
Java, 546 bytes (Windows XP ou superior)
O utilitário powercfg entrou em ação no WindowsXP; não tenho idéia de quais utilitários estavam disponíveis antes disso. Também devo ser executado como administrador. Isso é horrível e eu não fiz uma tentativa extrema de golfe ...
Formatado / comentado ...
Honestamente, eu estava mais interessado em ver se isso era possível em Java.
fonte
{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}