Lorsque vous modifiez une publication sur SE, toutes les modifications ultérieures dans un délai de grâce de 5 minutes y sont fusionnées. Étant donné la liste des fois où vous modifiez un message, comptez les modifications qui ne sont pas dans un délai de grâce.
Disons que vous modifiez en quelques minutes [0,3,4,7,9,10,11,12]
. Il en résulte parfois 3 modifications [0,7,12]
, le reste se produisant pendant leurs périodes de grâce.
0: [3,4]
7: [9,10,11]
12: []
- La première modification est à la minute 0. Les modifications aux minutes 3 et 4 sont dans sa période de grâce de 5 minutes, et donc ne comptent pas.
- La deuxième modification est à la minute 7. Les modifications aux minutes 9, 10, 11 sont dans sa période de grâce.
- Le troisième montage à la minute 12 est juste après le bord de la période de grâce de 5 minutes commençant à la minute 7.
Donc, la sortie est 3.
La liste des temps en minutes sera une liste d'entiers croissants. Le premier nombre sera toujours 0 pour la publication initiale, que nous comptons comme une modification.
Cas de test:
[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]
Les sorties:
1
2
3
3
3
3
4
5
5
6
Pour faciliter la copie, voici les entrées, les sorties et les paires d'entrée / sortie:
[[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)]
Classement:
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
la source
la source
Réponses:
JavaScript, 36 octets
Essayez-le en ligne!
Comment ça marche
Dans chaque appel récursif, nous supprimons tous les éléments du tableau qui sont distants de plus de 4 minutes du premier élément.
Il y a une petite astuce avec le nom de variable
$
. La vérification$>f
convertit d'abord le tableau en chaîne, puis le compare à la représentation sous forme de chaîne de la fonctionf
, puis les compare lexicographiquement. Le premier caractère du tableau stringified est un chiffre et donc seulement un nom de variable à un caractère dont l'indice ascii est plus petit que les indices de tous les chiffres$
. Le remplacement$
par un autre nom de variable reviendra toujoursfalse
.la source
Mathematica,
46403733 octetsExplication
Réglez
i
sur1
etj
sur0
.Mappez sur tous les éléments de l'entrée ...
Si
(element) - j < 5
est faux, incrémentezi
et réglezj
sur l'élément (évaluation de court-circuit).Sortie
i
.la source
Husk , 8 octets
Essayez-le en ligne!
Explication
la source
Python 2 , 58 octets
Essayez-le en ligne!
49 octets
Utilisation de la méthode récursive présentée dans la solution de @ ThePirateBay .
Essayez-le en ligne!
la source
and 1+f(...)
peut être remplacé parand-~f(...)
pour 49 octetsx=a[:1]
est équivalent àx=[0]
, puisque la question indique explicitement que le premier élément est toujours0
( 62 octets )J , 20 octets
Essayez-le en ligne!
Explication
la source
MATLAB, 34 octets
Fonction anonyme qui entre un tableau et sort un nombre.
Cela utilise la
uniquetol
fonction, en particulier sa formey = uniquetol(x, t)
, qui donney
contenant des éléments uniques dex
avec tolérancet
. Ce faisant, la fonction semble suivre une approche "paresseuse": trierx
, sélectionner sa première entrée et continuer à ignorer les entrées tant qu'elles respectent la tolérance de la dernière entrée sélectionnée. C'est exactement ce dont nous avons besoin ici.La
uniquetol
fonction met automatiquement à l'échelle la tolérance spécifiée par la valeur absolue maximale ena
. C'est pourquoi nous avons besoin de la division ici.x+1
est utilisé au lieu dex
éviter la division par 0.Vérification des cas de test:
la source
uniquetol
... Introduit dans R2015a . J'ai R2014b :( Belle réponse :)05AB1E ,
201918151411 octetsExplication:
Essayez-le en ligne!
modifier
la source
¼4¹vDy‹i¼y4+}}¾
v®y‹iy4+©\¼
Husk, 6 octets
Essayez-le en ligne!
la source
ü
travaux comme ça! C'est très pratique.ġ
mais ça ne marche pas, alors que HaskellgroupBy
œuvres:length.groupBy((>).(+5))
. Ensuite , j'ai trouvéü
qui conduit aussi à un équivalent Haskell plus courte:nubBy
.Haskell ,
3130 octetsEssayez-le en ligne!
1 octet enregistré grâce à Zgarb
la source
z-4>x
devrait enregistrer un octet.05AB1E , 14 octets
Essayez-le en ligne!
la source
æ
pour le sur-ensemble, c'est un super truc!æ
signifie "jeu de puissance".MATL ,
1312 octetsEssayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
Pyth , 14 octets
Il s'agit d'une fonction récursive. Appelez-le avec
y[0 1 2 3 4 5 6 7 8)
, où[...)
est votre liste.Alternativement, essayez-le ici! ou Vérifiez tous les cas de test.
Explication
C'est à peu près équivalent à la solution Python. Une traduction donnerait les résultats suivants:
Répartition du code
la source
.U
. Les suggestions sont les bienvenuesJava 8,
7861605956 octetsPort de @ JungHwanMin's answer
Essayez-le en ligne!
la source
a->{int i=0;for(int l:a)if(l-a[i]>4)a[++i]=l;return-~i;}
C # .NET, 63 octets
Explication:
Essayez-le ici.
la source
Perl 5 , 54 octets
52 octets de code +2 pour
-ap
Essayez-le en ligne!
la source
Pyth, 25 octets
Essayez-le ici: http://pyth.herokuapp.com
la source
Proton , 40 octets
Fortement inspiré par la solution Python .
Essayez-le en ligne!
la source
Ly , 29 octets
Essayez-le en ligne!
Il a fallu beaucoup de temps pour arriver ici.
la source
Rétine ,
3226 octetsEssayez-le en ligne! Explication:
Convertissez en unaire, mais ajoutez 1, car 0 est un concept délicat dans la rétine.
Comptez le nombre de modifications, mais incluez toutes les modifications de grâce dans chaque correspondance.
la source
Kotlin, 52 octets
Publier en tant que fonction, si ce n'est pas acceptable je vais le changer en méthode
Soumission
Embellie
Tester
TryItOnline
la source
PowerShell , 74 octets
Solution itérative. Longue en raison de la clôture de la clôture sur la
for
boucle nécessitant un contrôle supplémentaire à la fin.Suggestions de golf bienvenues.Nous prenons l'entrée
$args[0]
comme un tableau littéral, décollons le premier élément$x
et le reste dans$y
. Ensuite, tant qu'il y a encore des éléments dans$y
, nous bouclons.À chaque itération, nous vérifions si l'horodatage actuel
$x
est5
ou plus éloigné de l'$l
horodatage ast edit. Si c'est le cas, nous incrémentons notre compteur$i++
et définissons notre horodatage comme étant à jour. Ensuite, à l'itération de la boucle, nous décollons l'élément suivant$x
et laissons le reste dans$y
.Une fois que nous sommes sortis de la boucle, nous sortons
$i
, plus1
pour l'édition initiale, plus si l'horodatage final est à plus de cinq de la dernière édition (avec la valeur booléenne implicitement convertie en entier). Ce résultat est laissé sur le pipeline et la sortie est implicite.Essayez-le en ligne!
la source
R , 52 octets
Essayez-le en ligne!
Fonction anonyme simple qui supprime de manière itérative des éléments de la liste qui sont à moins de 5 du premier élément jusqu'à ce que la liste soit vide, puis renvoie le compteur.
la source
Clojure, 53 octets
Cela permet de garder une trace des «heures de début de modification», puis renvoie leur nombre distinct.
la source
Japt , 14 octets
Essayez-le
Explication
Entrée implicite du tableau
U
Obtenez la longueur de
U
.ET logique (
&&
) - n'exécute ce qui suit que siÊ
est véridique (non nul).Appel récursif.
Filter (
f
)U
en passant chaque élément à travers une fonction.Obtenez la différence (
a
) entre l'élément courant et le premier élément (g
) deU
.Plus de 4?
Ajoutez
1
.Sortie implicite de l'entier résultant.
la source
Gelée , 11 octets
Essayez-le en ligne!
Explication
12 octets
Essayez-le en ligne!
Explication
la source