Medidor de golfe de código © 2019
Hexdumps usados com xxd
algo parecido com isto:
00000000: 666f 6f20 6261 7220 7370 616d 2065 6767 foo bar spam egg
00000010: 730a s.
Sua tarefa é converter um hexdump neste formulário no número de bytes usados.
Regras:
- Falhas usuais proibidas.
- Isso é código-golfe , então a resposta válida mais curta em bytes vence.
- Você pode ou não incluir a nova linha no final do texto (
0a
). Isso significa que, se o hexdump terminar em uma nova linha (0a
), essa entrada poderá ter sua saída reduzida em um. - Uma entrada vazia (literalmente nada: lista vazia / string / etc.) Deve gerar 0.
- A entrada pode ser obtida de qualquer forma
- A entrada será ASCII válida sem caracteres de controle
- A entrada deve conter todo o hexdump
Casos de teste:
00000000: 4865 6c6c 6f2c 2077 6f72 6c64 2120 4865 Hello, world! He
00000010: 6c6c 6f2c 2077 6f72 6c64 210a llo, world!.
retorna 28 ou 27
00000000: 0a .
retorna 1 ou 0
00000000: 6368 616c 6c65 6e67 650a challenge.
retorna 10 ou 9
00000000: 4865 6c6c 6f2c 2077 6f72 6c64 21 Hello, world!
retorna 13
retorna 0 (literalmente nada: lista vazia / string / etc.)
Explicações seria bom para idiomas não-padrão.
code-golf
string
hexadecimal
gadzooks02
fonte
fonte
xxd
é alimentado com uma string vazia, ele não gera nada.objdump
desmontagem ounasm
listagens para obter respostas de código de máquina.) Acho que devo postar isso na caixa de areia ...Respostas:
Retina 0.8.2 , 8 bytes
Experimente online! Explicação:
Exclua os primeiros 51 caracteres de cada linha. (As linhas só podem ter entre 52 e 67 caracteres, portanto, isso sempre corresponde uma vez por linha.)
Conte os caracteres restantes que não são de nova linha.
7 bytes se a entrada vazia não tiver que ser suportada:
Experimente online! Explicação:
Exclua os primeiros 52 caracteres de cada linha. (As linhas só podem ter entre 52 e 67 caracteres, portanto, isso sempre corresponde uma vez por linha.)
Conte 1 mais que o número de caracteres restantes (incluindo novas linhas).
fonte
&`.{52}
.tcsh , 12 bytes
Experimente online!
fonte
V (vim) , 7 bytes
Experimente online!
Explicação:
Hexdump:
fonte
Retina , 7 bytes
Isso conta o número total de strings de linha única de comprimento 52. Talvez seja possível fazer algo semelhante
%52,`.
, mas não encontrei uma maneira de corrigir isso.Experimente online!
fonte
&`.{52}
para Retina 0.8.2.APL (Dyalog Extended) , 18 bytes
Programa completo. Solicita a lista de strings (ou seja, de listas de caracteres).
Experimente online!
⎕
pronto49↑¨
pegue os primeiros 49 caracteres de cada(
…)¨
Aplique a seguinte função tácita a cada um:⊢
o argumento⊆
pique em séries de caracteres que são≠
diferente do caractere de preenchimento (espaço)1↓
solte a primeira "palavra"∊
ε nlist (achatar)≢
registro2÷⍨
dividir por doisfonte
Gelatina , 5 bytes
Um link monádico que aceita uma lista de linhas que produz a contagem de bytes inteiros.
Experimente online!
Quão?
fonte
C (gcc) ,
6455 bytesExperimente online!
9 bytes raspados graças ao YSC!
Aqui está uma versão mais frágil inspirada na solução JavaScript de Arnauld, que provavelmente falha em entradas longas:
C (gcc) , 50 bytes
Experimente online!
fonte
return r
paral=r
main
), deve ser possível chamá-lo várias vezes.r;s[];f(l){while(*s=0,gets(s),l=strlen(s))r+=l-51;l=r;}
while()
tem o mesmo número de bytes quefor(;;)
. Assim,;while()
um byte é mais longo quefor(;;)
.Python 3,
4846 bytesA entrada é passada como uma sequência para a função. A função incrementa o comprimento da entrada (incluindo novas linhas) e subtrai 52 para cada linha.
Experimente online
fonte
f=
pode ser movido para o cabeçalho como `f =`, deixando apenas o lambda como código e economizando dois bytes: Experimente online!f=
é um hábito que peguei no servidor de discórdia Python.Japt
-x
, 5 bytesEntrada como uma matriz de linhas.
Tente
fonte
Perl 6 , 18 bytes
Experimente online!
Anônimo Qualquer lambda que pega uma lista de linhas e retorna a soma do número de caracteres, subtraindo 51 para cada linha
fonte
05AB1E ,
86 bytesExperimente online!
Entrada como uma lista de strings.
fonte
MathGolf ,
76 bytes (não concorrente)Não é concorrente (por enquanto), porque atualmente existe um erro no MathGolf para entradas de string contendo espaços. Eles são automaticamente transformados em uma lista (dividida por espaços). No TIO, substituí todos os espaços por um
B
para mostrar que ele funciona como pretendido.Entrada como uma lista de strings.
-1 byte localizando um método para gerar
51
em 2 bytes (consulte o histórico para mais de 10 maneiras de fazê-lo em 3 bytes.)Experimente online.
Explicação:
fonte
IBM / Lotus Notes Formula Language, 53 bytes
Não há TIO para a fórmula, então, aqui estão as capturas de tela dos casos de teste:
A fórmula está no campo calculado que fornece o valor após "Retornos".
Explicação
Esta é uma boa demonstração da maneira como a Formula aplicará recursivamente uma função a uma lista sem precisar de um loop. A fórmula está em um campo calculado no mesmo formato do campo de entrada editável `i '.
@Left
e@Right
permita que um delimitador de sequência ou um número de caracteres seja usado. Portanto, procuramos à direita:
e depois à esquerda da primeira ocorrência de dois espaços. Como a Fórmula vê a nova linha como um separador de lista, ela será aplicada a cada linha da entrada.@Explode
é o equivalente de umasplit
função da fórmula e o padrão é espaço,,
ou;
. Novamente, é aplicado a cada linha do campo, mas desta vez os resultados são combinados em uma única lista.@Length
será aplicado a cada membro da lista. Em cada caso, dividimos seu valor de retorno por 2.@Sum
a lista inteira e produza o resultado.fonte
JavaScript (ES6), 34 bytes
Experimente online!
Comentado
fonte
Vermelho ,
8155 bytesExperimente online!
Toma a entrada como uma lista de seqüências de caracteres.
fonte
JavaScript,
3332 bytesExperimente Online!
Guardado 1 byte graças a Arnauld.
fonte
Befunge-98 (FBBI) , 16 bytes
Experimente online!
fonte
Stax , 5 bytes
Execute e depure
fonte
Zsh , 36 bytes
Com os sinalizadores padrão do zsh:
Experimente online!
${(f)1}
divide$1
em novas linhas e descarta linhas vazias. Os$[ arithmetic expansion ]
guardas contra a caixa vazia, quando o loop nunca se ajusta$c
.Zsh , 28 bytes
Com
-o extendedglob
:Experimente online!
(f)
Divida em novas linhas,${ #?(#c52)}
remova 52 caracteres(F)
iniciais, junte-se a novas linhas para que a contagem seja caractere em vez de listar,${# }
conte caracteres.fonte
asm2bf , 135 bytes
Versão Golfed:
Versão comentada:
fonte