Étant donné une liste d'entiers positifs, écrivez du code qui trouve la longueur de la sous-liste contiguë la plus longue qui augmente (pas strictement). Il s'agit de la sous-liste la plus longue de sorte que chaque élément soit supérieur ou égal au dernier.
Par exemple, si l'entrée était:
La sous-liste augmentant le plus longtemps serait , vous donc .
Votre réponse sera notée en prenant sa source sous la forme d'une liste d'octets, puis en trouvant la longueur de la sous-liste croissante la plus longue de cette liste. Un score inférieur est l'objectif. Les liens sont rompus en faveur de programmes avec moins d'octets globaux.
code-challenge
source-layout
Ad Hoc Garf Hunter
la source
la source
True
avoir été un substitut,1
mais il se peut. Vous devriez pouvoir gérer la liste vide (la sortie est bien sûr 0).[] => 0
,[0] => 1
,[3,2,1] => 1
,[1,2,1,2] => 2
Réponses:
Pyth , score 2 (8 octets)
Essayez-le ici!
Points de code
[108, 101, 102, 83, 73, 84, 46, 58]
. Une autre solution plus courte,leSI#.:
note 3, mais ses points de code sont[108, 101, 83, 73, 35, 46, 58]
, qui sont très proches d'un score de 1, en fait.Réorganiser un peu peut aiderNevermind, la sous-chaîne intégrée.:
ne peut pas être réorganisée, donc le score le plus bas doit être de 2 si le programme s'en sert.Comment?
la source
Haskell , score 2,
6664616065 octetsEssayez-le en ligne! (se vérifie).
Je n'ai jamais pensé que je pourrais obtenir un score de 2 avec Haskell, et pourtant je suis là!
La fonction
g
calcule récursivement les longueurs de toutes les sous-chaînes croissantes.foldr1 max.g
prend le maximum de ces longueurs (foldr1 max
est équivalent àmaximum
, mais avec un score inférieur).la source
1+a : b
ne soit pas nécessaire, il s'agit donc de 62 octets.1
pour la liste vide, où il devrait revenir0
JavaScript (Node.js) ,
score 3,score 2,5346 octets5150 octets-7 octets merci @Arnauld
+5+4 espaces en échange de -1 scoreEssayez-le en ligne!
Suppose une entrée non vide. 61 octets si la liste vide doit être gérée. Marque encore 2.
Essayez-le en ligne!
... ou 58 si le retour
false
est autorisé. Marque encore 2.la source
Husk , 5 octets , score = 2
Essayez-le en ligne!
Il est peu probable d'obtenir un score inférieur à 2 avec Husk, car
ġ
1 a un point de code très élevé et il doit y avoir quelque chose avant pour obtenir le maximum et la longueur. Une tentative pourrait être faite en essayant d'utiliser plusieurs fonctions, mais ce\n
serait avant toutes les fonctions d'assistance qui ont un point de code très bas, donc tout ce qui après cela créerait une séquence d'octets croissante d'au moins la longueur 2.1: Cela semble être la meilleure façon d'utiliser les opérateurs de comparaison pour suivre les différentes fonctions de partage comme
↕
(span
).Explication
la source
Retina 0.8.2 , 40 octets, score 3
Essayez-le en ligne! Le lien se comprend sous forme de codes octets en entrée. Explication:
Convertissez en unaire.
Séparer en paires décroissantes.
Supprimez les chiffres.
Triez les virgules dans l'ordre inverse. (J'écrirais normalement ceci comme
O^
mais je ne peux pas le faire ici pour des raisons évidentes.)Comptez la plus longue virgule et ajoutez-en une pour inclure le nombre final.
la source
Japt
-h
, 6 octets, score 2Ne pensez pas qu'un score de 1 soit possible. Devrait également fonctionner avec des chaînes et des tableaux de caractères.
Essayez-le - le cas de test inclus est le code de la solution.
Explication
la source
MATL , score 2, 13 octets
L'entrée peut être:
MATL utilise le codage ASCII. Les points de code du code ci-dessus sont
Essayez-le en ligne!
Explication
la source
Pascal (FPC) , score 2
111 octets
Essayez-le en ligne!
Suppose une entrée non vide. Les nombres sont tirés d'une entrée standard séparée par des espaces.
la source
Gelée , 8 octets , score 2
Il y a probablement une solution de score 1 en quelque sorte ...
Essayez-le en ligne!
Code source sous forme de liste de valeurs d'octets:
Comment?
la source
Perl 6 , score 2, 46 octets
Essayez-le en ligne!
Gère la liste vide. Le code d'origine était:
Donc, seulement 5 octets supplémentaires pour réduire le score à 2.
Edit: Ah, j'ai compris comment supprimer l'affectation , mais je ne peux pas obtenir ce score en dessous de 3 en raison de la
)]]
...Explication:
la source
[[&(*+*)]]
marche[+]
? Incroyable ...Z
etX
. Essayez-le en ligne!{max 0,|.[[X..] ^$_ xx 2].map({+$_ if [<=] $_})}
05AB1E , score 3 (9 octets )
Peut très probablement être un score de 2 d'une manière ou d'une autre.
Points de code des octets de programme:
[140,1,90,100,80,125,233,9,103]
(deux sous-listes de longueur 3:[1,90,100]
et[80,125,233]
)Essayez-le en ligne.
Explication:
la source
Java (JDK) , score 3, 94 octets
Essayez-le en ligne!
Port de ma réponse JS (avec les suggestions d'Arnauld).
etu
dansreturn
ethil
enwhile
rendant impossible le golf pour marquer 2.for
ne peut pas être utilisé ici car:;for
est ascendantfor
ne peut pas être utilisé au début du corps lambda (restrictions de portée). Il est possible de l'envelopper{}
mais en utilisant apparemment deswhile
octets de sauvegarde.la source
\u
à certains endroits, mais ensuite vous devez avoir00
suivi par un chiffre qui est 3 de toute façon ...Powershell, score 3, 44 octets
Script de test:
Production:
Explication:
contiguous sub-list that is increasing (not strictly)
. Ensuite, le script trie les longueurs et en prend une dernière (maximum)(...|sort)[-1]
.Powershell 6, score 3, 43 octets
Comme ci-dessus. Une différence:
sort -b 1
est un raccourci poursort -Bottom 1
et signifie 1 élément de la fin du tableau trié . Nous n'avons donc pas besoin d'un index[-1]
.la source
Stax , score 3 (15 octets)
Exécuter et déboguer
la source
Python 2 ,
Note 5, 87 octetsscore de 2,1019392101 octetsEssayez-le en ligne!
Oups! Je pensais que c'était du golf de code pour la première fois ...
la source
m=1,o=[1]
partie ne finisse pas par économiser des octets une fois que nous réduisons le scoreDyalog APL , score 2, 20 octets
Essayez-le en ligne!
la source
Wolfram Language (Mathematica) , score 3, 45 octets
Essayez-le en ligne!
SequenceCases
etOrderedQ
par eux-mêmes donnent un score de 3, donc le score ne peut pas être amélioré sans changer l'approche de manière significative.la source
Max[Length/@SequenceCases[#,_?OrderedQ]]&
, mais_?Or
c'est une sous-séquence croissante de la longueur 4. (Tel quel_?AnyCamelCaseCommand
.)Java (JDK), 126 octets, score 6
Golfé
Non golfé
Contribution
la source
byte
êtreint
, carbyte
serait limité à 8 bits?Kotlin, Score 6, 119 octets
Essayez en ligne
Explication
la source
Kotlin, Score 4, 67 octets
L'idée principale est: Transformer chaque entier en longueur de sous-séquences contiguës qui augmente (pas strictement). Retour maximum.
a.map{...}
- pour chaque entier du tableau, faitesif(it<p){i=0}
- si l'entier actuel est inférieur à un entier précédent, réinitialiser le compteurp=it
- stocker l'entier actuel dans le précédent(++i)
- incrémenter le compteur et renvoyer la valeur de l'expression.max()
- obtenez un maximum de toute la longueurla source
Ruby , 64 octets
Essayez-le en ligne!
la source
6
. En outre, votre code ne gère pas la liste vide (où la sortie devrait être0
)