Um pedômetro simples pode ser modelado por um pêndulo com dois interruptores em lados opostos - um em x = 0 e outro em x = l . Quando o pêndulo entra em contato com a chave remota, presume-se que o ambulador tenha dado meio passo. Quando entra em contato com o comutador próximo, a etapa é concluída.
Dada uma lista de números inteiros representando as posições do pêndulo, determine o número de etapas completas registradas no pedômetro.
Entrada
Um número inteiro l > 0, o comprimento da faixa.
Uma lista de números inteiros representando as posições do pêndulo do pedômetro em cada momento.
Resultado
O número de etapas completas medidas. Um passo é dado quando o pêndulo entra em contato com a chave remota (x> = l) e depois a chave próxima (x <= 0).
Casos de teste
8, [8, 3, 0, 1, 0, 2, 2, 9, 4, 7]
1
O pêndulo imediatamente entra em contato com a chave remota em x = 8 em t = 0. Em seguida, ele toca no interruptor próximo em t = 2 e t = 4, completando uma etapa. Depois disso, ele toca novamente no interruptor remoto em x = 9 em t = 8, mas nunca toca no interruptor próximo novamente.
1, [1, 5, -1, -4, -1, 1, -2, 8, 0, -4]
3
15, [10, -7, -13, 19, 0, 22, 8, 9, -6, 21, -14, 12, -5, -12, 5, -3, 5, -15, 0, 2, 11, -11, 12, 5, 16, 14, 27, -5, 13, 0, -7, -2, 11, -8, 27, 15, -10, -10, 4, 21, 29, 21, 2, 5, -7, 15, -7, -14, 13, 27]
7
7, [5, 4, 0]
0
7, [5, 8, 6, 1, 2]
0
fonte
7, [5, 4, 0]
? Isso é 0 ou 1? Ou seja - você assume que um balanço é sempre "completo"? Ou7, [5, 8, 6, 1, 2]
? Isso é 0 ou 1?8, [0 8 0 8]
deve dar1
, não2
. Estou correcto?Respostas:
CJam,
2724 bytesFormato de entrada é a lista de posições do pêndulo seguidas por
l
uma única linha.Teste aqui.
Explicação
fonte
MATL , 22 bytes
Isso usa a versão atual (14.0.0) do idioma / compilador.
As entradas estão na mesma ordem e formato que no desafio, separadas por uma nova linha.
Experimente online!
Explicação
fonte
Javascript ES6 57 bytes
Obrigado @NotThatCharles por -4
fonte
/10/
?Perl, 28 bytes
Inclui +1 para
-p
Execute com a entrada como uma longa linha de números inteiros separados por espaço em STDIN, o primeiro número é o comprimento:
steps.pl
:Usa o operador de flip-flop perl e conta o número de vezes que retorna para false
fonte
Pitão, 18 bytes
Suíte de teste
Explicação:
fonte
Ruby, 42
r
começa comofalse
. Alternamosr
em cada extremidade da faixa e a adicionamos à nossa contagem. Em seguida, reduza pela metade a contagem (arredondamento para baixo) para obter o número de etapas.fonte
Retina, 34
Experimente online! ou tente com entrada decimal .
Recebe entrada em números unários negativos, unários, são tratados como
-111...
e zero é a sequência vazia. Conta o número de vezes que o primeiro número aparece seguido de um zero. Usa um grupo atômico para garantir que as correspondências sejam mínimas (infelizmente, os grupos atômicos não são capturados, portanto, ele deve ser agrupado em outro grupo ...).fonte
Python 3, 82
Economizou 2 bytes graças ao DSM.
Ainda não é super golfista.
Casos de teste:
fonte
Clojure, 64 bytes
Mapeia valores menores ou iguais a zero
0
, maiores ou iguais a comprimento1
e outros a uma sequência vazia""
. Isso é concatenado para uma sequência e as ocorrências de"10"
são contadas.fonte
APL (Dyalog Unicode) , 17 bytes SBCS
Também conhecido como "quanto posso abusar do iota-underbar?"
Experimente online!
fonte