Les enfants qui apprennent à compter connaissent souvent des séries de chiffres, mais ne semblent pas pouvoir les assembler correctement.
Par exemple, ils pourraient dire:
1,2,3,4,7,8,9,10
Parfois, les enfants se rendent compte qu'ils ont sauté certains chiffres et reviennent:
1,2,3,4,7,8,5,6,7,8,9,10
C'est clairement le modèle supérieur. Nous devons les identifier.
Pour identifier ces listes:
Nous identifions le minimum
M
et le maximumN
de la listeNous parcourons la liste. Si le nombre actuel est supérieur ou égal à un membre de la liste à sa droite, nous supprimons le nombre actuel.
Si la liste restante contient tous les nombres de
M
àN
, alors nous retournons une valeur véridique.
Vous pouvez supposer que votre liste d'entrées contiendra au moins 1 élément. Vous pouvez supposer que tous les entiers seront non négatifs.
Cas de test:
Vérité:
0
10
0 0 0
1 0 1
0 1 2 3 4 5 6 7 8 9 10
0 1 2 3 0 1 2 3
0 1 2 3 4 5 5
0 1 1 2 2 3
0 3 6 1 4 7 2 5 8 3 4 5 6 7 8
1 3 5 7 2 3 4 5 6 7
5 6 0 1 2 3 6 7 4 5 6 7
5 6 7 8
5 5 6 7 8
4 6 7 8 3 4 5 6 7 8
Falsy:
1 0
4 3 2 1
1 2 3 7 8 9
0 1 2 3 1 3
0 1 2 3 1 3 4
0 1 2 3 1 3 2 4
0 1 2 3 1 3 2 4 3
1 3 5 7 2 4 6 8
0 1 2 1 3 4 5 6
4 5 6 3 4 5
Il s'agit de code-golf , alors faites vos réponses aussi courtes que possible!
1
plus tard). Vous supprimeriez également tous les autres éléments (sauf le dernier), vous vous retrouveriez donc avec0 1
, ce qui n'est pas le cas0 1 2 3 4 5
Réponses:
05AB1E , 5 octets
Je ne suis pas sûr à 100% que cela fonctionne, mais il passe tous les cas de test et je n'ai trouvé aucune situation où il échoue.
Essayez-le en ligne!
la source
Gelée ,
109 octetsEssayez-le en ligne!
Comment ça fonctionne
la source
ɓ
une fonctionnalité relativement nouvelle?«\
à mon avis cependant.Rubis ,
59 5441 octetsEssayez-le en ligne!
la source
Python 2 , 81 octets
Essayez-le en ligne!
la source
PHP ,
148130 octets-18 octets, merci @Christoph
Essayez-le en ligne!
la source
$argn
est toujours une chaîneforeach
ne fonctionne pas dessus. Vous pouvez utiliser$argv
pour obtenir un tableau en entrée, mais attention, il contient toujours le nom de fichier comme premier élément. Vous utilisez$m
et une$n
seule fois pour que vous pouvez économiser beaucoup d'octets créant$b
plus tôt:$b=range(min($a),max($a));
. Le casting(bool)
est complètement inutile.if($k>=$a[$s])$a[$i]=null;
à$k<$a[$s]?:$a[$i]=-1;
. En utilisant la référence, nous pouvons le faire:foreach($a as$i=>&$k)
(+1 octet) et$a[$i]
à$k
(-4 octets). De plus, cela nous laisse tomber$s=$i
parce que nous pouvons itérer$i
directement maintenant.$a=$argn;$b=range(min($a),max($a));foreach($a as$i=>&$k)for(;++$i<count($a);)$k<$a[$i]?:$k=-1;echo!array_diff($b,$a);
(117 octets). Mais il utilise toujours$argn
dans le mauvais sens.$a=explode(' ',$argn);
corrigerait cela pour 13 octets supplémentaires.$_GET
comme tableau d'entrée? Dans ce cas, il n'est pas nécessaire d'utiliser desexplode
octets supplémentaires -6 pour utiliser non la$b
variable~
essayer en ligne!Java 8,
264262 octetsExplication:
Essayez-le ici.
la source
R,
8885 octetsCela peut probablement être approfondi. Boucle sur les éléments de
x
, vérifie si toutes les valeurs à venir sont plus grandes et ne conserve que cet élément. Après la boucle, il crée une séquence demin(x)
àmax(x)
et vérifie%in%
si toutes les valeurs sont incluses dans la version élaguée dex
.la source
function(n)all(unique(cummin(rev(n)))==max(n):min(n))
JavaScript (ES6), 60 octets
Non golfé:
Ceci est un algorithme plus simple:
Répétez le tableau en sens inverse et assurez-vous que chaque nombre (sauf le premier) est inférieur ou égal à un nombre déjà vu.
Fragment:
Afficher l'extrait de code
la source
Haskell, 62 octets
Essayez-le en ligne!
Une implémentation directe de la définition où
g
supprime les éléments s'ils sont> = que les éléments à sa droite.la source
C #, 69 octets
En bref:
s = entrée (s) équation
prise de l'élément s où tous les éléments après celui-ci (sauter (I) ndex + 1 éléments), la valeur actuelle est plus élevée
comptez-les et voyez si le montant restant est égal au montant attendu ((max) valeur imum moins (min) imum) quantité de nombres
Essayez-le en ligne!
la source
JavaScript (ES6),
82737270 octetsRenvoie un booléen.
Comment?
Nous itérons sur chaque élément x du tableau d'entrée a , en gardant une trace de la valeur maximale rencontrée m et du nombre -k de valeurs qui ne sont ni supérieures ni égales à aucun membre à leur droite. Par définition, les valeurs valides apparaissent dans un ordre strictement croissant.
Nous utilisons
filter()
plutôt quemap()
, afin que tous les éléments soient filtrés jusqu'à ce que k devienne négatif. Cela nous permet d'isoler le premier élément valide, qui est également garanti comme étant la valeur minimale du tableau.Enfin, nous testons si
minimum - (maximum + 1) == -number_of_valid_elements
:Cas de test
Afficher l'extrait de code
la source