Cuando edita una publicación en SE, todas las ediciones posteriores dentro de un período de gracia de 5 minutos se combinan en ella. Dada una lista de veces que edita una publicación, cuente las ediciones que no están en un período de gracia.
Digamos que editas en minutos [0,3,4,7,9,10,11,12]
. Esto resulta en 3 ediciones a veces [0,7,12]
, con el resto sucediendo en sus períodos de gracia.
0: [3,4]
7: [9,10,11]
12: []
- La primera edición es en el minuto 0. Las ediciones en los minutos 3 y 4 están dentro de su período de gracia de 5 minutos, por lo que no cuentan.
- La segunda edición es en el minuto 7. Las ediciones en los minutos 9, 10, 11 están dentro de su período de gracia.
- La tercera edición en el minuto 12 está más allá del límite del período de gracia de 5 minutos que comienza en el minuto 7.
Entonces, la salida es 3.
La lista de veces en minutos será una lista de números enteros crecientes. El primer número siempre será 0 para la publicación inicial, que contamos como una edición.
Casos de prueba:
[0]
[0,3,5,7]
[0,3,4,7,9,10,11,12]
[0,30,120]
[0,4,8,12,16]
[0,4,8,12,16,20]
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
[0,5,10,15,20]
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
[0,1,4,5,9,11,12,14,16,18,23,24,26,28,29,30]
Salidas:
1
2
3
3
3
3
4
5
5
6
Para facilitar la copia, aquí están las entradas, salidas y pares de entrada / salida:
[[0], [0, 3, 5, 7], [0, 3, 4, 7, 9, 10, 11, 12], [0, 30, 120], [0, 4, 8, 12, 16], [0, 4, 8, 12, 16, 20], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [0, 5, 10, 15, 20], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], [0, 1, 4, 5, 9, 11, 12, 14, 16, 18, 23, 24, 26, 28, 29, 30]]
[1, 2, 3, 3, 3, 3, 4, 5, 5, 6]
[([0], 1), ([0, 3, 5, 7], 2), ([0, 3, 4, 7, 9, 10, 11, 12], 3), ([0, 30, 120], 3), ([0, 4, 8, 12, 16], 3), ([0, 4, 8, 12, 16, 20], 3), ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], 4), ([0, 5, 10, 15, 20], 5), ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 5), ([0, 1, 4, 5, 9, 11, 12, 14, 16, 18, 23, 24, 26, 28, 29, 30], 6)]
Tabla de clasificación:
code-golf
sequence
counting
subsequence
code-golf
arithmetic
code-golf
string
interpreter
code-golf
number
sequence
code-golf
quine
code-golf
sequence
code-golf
ascii-art
kolmogorov-complexity
alphabet
code-golf
kolmogorov-complexity
code-golf
string
code-golf
string
kolmogorov-complexity
xnor
fuente
fuente
Respuestas:
JavaScript, 36 bytes
Pruébalo en línea!
Cómo funciona
En cada llamada recursiva, eliminamos todos los elementos de la matriz que están a más de 4 minutos del primer elemento.
Hay un pequeño truco con nombre de variable
$
. La verificación$>f
primero convierte la matriz en una cadena y luego la compara con la representación de cadena de la funciónf
y luego las compara lexicográficamente. El primer carácter de la matriz en cadena es un dígito y, por lo tanto, solo es un nombre de variable de un carácter cuyo índice ascii es más pequeño que los índices de todos los dígitos$
. Reemplazar$
con cualquier otro nombre de variable siempre regresaráfalse
.fuente
Mathematica,
46403733 bytesExplicación
Establecer
i
a1
yj
a0
.Asignar a todos los elementos de la entrada ...
Si
(element) - j < 5
es falso, incrementei
y establezcaj
el elemento (evaluación de cortocircuito).Salida
i
.fuente
Casco , 8 bytes
Pruébalo en línea!
Explicación
fuente
Python 2 , 58 bytes
Pruébalo en línea!
49 bytes
Usando el método recursivo que se muestra en la solución @ ThePirateBay .
Pruébalo en línea!
fuente
and 1+f(...)
puede ser reemplazado porand-~f(...)
49 bytesx=a[:1]
es equivalente ax=[0]
, ya que la pregunta establece explícitamente que el primer elemento es siempre0
( 62 bytes )J , 20 bytes
Pruébalo en línea!
Explicación
fuente
MATLAB, 34 bytes
Función anónima que ingresa una matriz y genera un número.
Esto utiliza la
uniquetol
función, específicamente su formay = uniquetol(x, t)
, que proporcionay
elementos únicosx
con toleranciat
. Al hacerlo, la función parece seguir un enfoque "vago": ordenarx
, elegir su primera entrada y seguir omitiendo las entradas mientras estén dentro de la tolerancia de la última entrada elegida. Eso es exactamente lo que se necesita aquí.La
uniquetol
función escala automáticamente la tolerancia especificada por el valor absoluto máximo ena
. Es por eso que necesitamos la división aquí.x+1
se usa en lugar dex
evitar la división por 0.Verificación de casos de prueba:
fuente
uniquetol
... Introducido en R2015a . Tengo R2014b :( Buena respuesta :)05AB1E ,
201918151411 bytesExplicación:
Pruébalo en línea!
Editar
fuente
¼4¹vDy‹i¼y4+}}¾
v®y‹iy4+©\¼
Casco, 6 bytes
Pruébalo en línea!
fuente
ü
funciona así! Eso es muy útil.ġ
pero no funciona, mientras que de HaskellgroupBy
obras:length.groupBy((>).(+5))
. Entonces me encontré conü
que también conduce a una más corta equivalente Haskell:nubBy
.Haskell ,
3130 bytesPruébalo en línea!
Guardado 1 byte gracias a Zgarb
fuente
z-4>x
Debería guardar un byte.05AB1E , 14 bytes
Pruébalo en línea!
fuente
æ
para el superconjunto, ¡es un gran truco!æ
significa "conjunto de poder".MATL ,
1312 bytesPruébalo en línea! O verificar todos los casos de prueba .
Explicación
fuente
Pyth , 14 bytes
Esta es una función recursiva. Llámalo con
y[0 1 2 3 4 5 6 7 8)
, dónde[...)
está tu lista.Alternativamente, ¡ Pruébalo aquí! o Verificar todos los casos de prueba.
Explicación
Esto es más o menos equivalente a la solución Python. Una traducción daría los siguientes resultados:
Desglose de código
fuente
.U
. Las sugerencias son bienvenidasJava 8,
7861605956 bytesLa respuesta del puerto de @ JungHwanMin
Pruébalo en línea!
fuente
a->{int i=0;for(int l:a)if(l-a[i]>4)a[++i]=l;return-~i;}
C # .NET, 63 bytes
Explicación:
Pruébalo aquí
fuente
Perl 5 , 54 bytes
52 bytes de código +2 para
-ap
Pruébalo en línea!
fuente
Pyth, 25 bytes
Pruébalo aquí: http://pyth.herokuapp.com
fuente
Protón , 40 bytes
Muy inspirado por la solución Python .
Pruébalo en línea!
fuente
Ly , 29 bytes
Pruébalo en línea!
Tomó mucho tiempo llegar aquí.
fuente
Retina ,
3226 bytesPruébalo en línea! Explicación:
Convierta a unario, pero agregue 1, porque 0 es un concepto complicado en Retina.
Cuente el número de ediciones, pero incluya todas las ediciones de gracia en cada coincidencia.
fuente
Kotlin, 52 bytes
Publicando como una función, si esto no es aceptable, lo cambiaré a un método
Sumisión
Embellecido
Prueba
TryItOnline
fuente
PowerShell , 74 bytes
Solución iterativa. Largo debido a la valla en el
for
bucle que requiere un control adicional al final. Sugerencias de golf bienvenidas.Tomamos la entrada
$args[0]
como una matriz literal, quitamos el primer elemento$x
y el resto en$y
. Entonces, mientras haya elementos todavía en$y
, hacemos un bucle.En cada iteración, verificamos si la marca de tiempo actual
$x
está5
o más lejos de la$l
marca de tiempo de edición ast. Si es así, incrementamos nuestro contador$i++
y configuramos nuestra marca de tiempo para que sea actual. Luego, en la iteración del bucle, quitamos el siguiente elemento en$x
y dejamos el resto en$y
.Una vez que estamos fuera del ciclo, sacamos
$i
, más1
para la edición inicial, más si la marca de tiempo final está a más de cinco de la última edición (con el valor booleano implícitamente convertido a entero). Ese resultado se deja en la tubería y la salida es implícita.Pruébalo en línea!
fuente
R , 52 bytes
Pruébalo en línea!
Función anónima simple que elimina de forma iterativa elementos de la lista que están a menos de 5 del primer elemento hasta que la lista esté vacía, luego devuelve el contador.
fuente
Clojure, 53 bytes
Esto realiza un seguimiento de los "tiempos de inicio de edición" y luego devuelve su recuento distinto.
fuente
Japt , 14 bytes
Intentalo
Explicación
Entrada implícita de matriz
U
Obtener la longitud de
U
.AND lógico (
&&
): solo ejecuta lo siguiente siÊ
es verdadero (no es cero).Llamada recursiva
Filter (
f
)U
pasando cada elemento a través de una función.Obtenga la diferencia (
a
) entre el elemento actual y el primer elemento (g
) deU
.Mayor de 4?
Añadir
1
.Salida implícita del entero resultante.
fuente
Jalea , 11 bytes
Pruébalo en línea!
Explicación
12 bytes
Pruébalo en línea!
Explicación
fuente