Puisse ce défi rendre ( un autre ) hommage à Stan Lee, décédé à l'âge de 95 ans.
Stan Lee nous a laissé un héritage inestimable et un mot d'ordre particulier: Excelsior . Voici donc un petit défi basé sur ce qu'il a dit que c'était sa signification :
Enfin, que signifie «Excelsior»? "Vers le haut et en avant vers une plus grande gloire!" C'est ce que je vous souhaite chaque fois que je termine tweet! Excelsior!
Défi
Étant donné une série d'entiers non négatifs, affichez une ligne à Excelsior!
chaque fois qu'un entier est supérieur à la précédente.
Règles
- L'entrée sera un tableau d'entiers non négatifs.
- La sortie consistera en lignes avec le mot
Excelsior
(la casse importe) suivi par autant!
que la longueur de la course actuelle de nombres de plus en plus grands. Vous pouvez également renvoyer un tableau de chaînes. - Les formats d'entrée et de sortie sont flexibles selon les règles du site, alors n'hésitez pas à les adapter à vos formats de langue. Vous pouvez également ajouter des espaces à la fin des lignes, ou même de nouvelles lignes supplémentaires après ou avant le texte si vous en avez besoin.
Exemples
Input Output
-----------------------------------
[3,2,1,0,5] Excelsior! // Excelsior because 5 > 0
[1,2,3,4,5] Excelsior! // Excelsior because 2 > 1
Excelsior!! // Excelsior because 3 > 2 (run length: 2)
Excelsior!!! // Excelsior because 4 > 3 (run length: 3)
Excelsior!!!! // Excelsior because 5 > 4 (run length: 4)
[] <Nothing>
[42] <Nothing>
[1,2,1,3,4,1,5] Excelsior! // Excelsior because 2 > 1
Excelsior! // Excelsior because 3 > 1
Excelsior!! // Excelsior because 4 > 3 (run length: 2)
Excelsior! // Excelsior because 5 > 1
[3,3,3,3,4,3] Excelsior! // Excelsior because 4 > 3
C'est le code-golf , donc le code le plus court pour chaque langue peut gagner!
Réponses:
JavaScript (ES6),
5854 octetsEssayez-le en ligne!
Commenté
Pourquoi réutiliser un [] pour stocker la valeur précédente est sûr
Il y a trois cas possibles:
.map()
n'est pas du tout invoquée et nous obtenons simplement un tableau vide, produisant une chaîne vide.a < (a = c)
. Donc, nous testonsNaN
lors du premier testa < (a = c)
. Par conséquent, le résultat est faux et ce qui est exécuté est l'initialisation dela source
Python 2 ,
8483817068 octetsEssayez-le en ligne!
-2 octets, grâce à ASCII uniquement
la source
05AB1E ,
262423 octets-2 octets grâce à @Kroppeb .
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
Voir cette astuce de mes 05AB1E (section Comment chaînes Compresser ne font pas partie du dictionnaire? ) Pour comprendre pourquoi
.•1Š¥èò²•
est"excelsior"
.la source
0Kg
avecO
?Perl 6 ,
60 5857 octets-1 octet grâce à nwellnhof
Essayez-le en ligne!
Bloc de code anonyme qui renvoie une liste d'Excelsiors!
la source
Java-8
118113 OctetsFacile à lire :
la source
n->{var e="";for(int i=0;i<n.length-1;System.out.print(""==e?e:"Excelsior"+e+"\n"))e=n[i++]<n[i]?e+="!":"";}
. Essayez-le en ligne ( 108 octets ). (Java 10+)n->{for(int e=0,i=0;i<n.length-1;)if(n[i++]<n[i])System.out.println("Excelsior"+"!".repeat(e++));else e=0;}
( 107 octets )++e
au lieu d'ene++
avoir au moins un!
à imprimer.e=...?e+"!":
au lieu dee=...?e+="!":
.R , 86 octets
La moitié de cette réponse est celle de @ Giuseppe. RIP Stan Lee.
Essayez-le en ligne!
la source
05AB1E ,
2019 octetsEssayez-le en ligne!
Explication
la source
C (gcc / clang),
1069997 octetsMerci à gastropner pour avoir joué au golf 2 octets.
Essayez-le en ligne ici .
Non golfé:
la source
Japt
-R
,2522 octetsEssayez-le
3 octets économisés grâce à Kamil
la source
-R
drapeau n'est pas réellement nécessaire, le défi dit que vous pouvez sortir un tableau de chaînes.slice
lors de mon premier passage, mais je l'ai rejetée lorsqu'elle a fonctionné trop longtemps. Pour y revenir maintenant, avec votre incitation, je suppose que j'aurais dû m'en tenir parce que je suis descendu à 22 aussi.Lisp commun, 111 octets
Essayez-le en ligne!
la source
Java 8, 106 octets
Essayez-le en ligne!
(ces réaffectations de
s
... yikes)la source
(s="")+s
(s="")
n->{String s="",z=s;for(int i=0;i<n.length-1;)z+=n[i++]>=n[i]?s="":"Excelsior"+(s+="!")+"\n";return z;}
( 103 octets ) Déplacez les=""
pour libérer des octets.Stax , 17 octets
Exécuter et déboguer
la source
R , 111 octets
Essayez-le en ligne!
Un hommage bien meilleur à R peut être trouvé ici - j'étais trop obsédé par
sequence
etrle
.la source
Gelée , 16 octets
Un lien monadique donnant une liste de listes de personnages.
Essayez-le en ligne!(le pied de page rejoint les nouvelles lignes)
Comment?
la source
Perl 5
-n
, 41 octetsEssayez-le en ligne!
Prend son entrée sur des lignes distinctes.
la source
Japt , 22 octets
Essayez-le en ligne!
Explication, avec exemple simplifié:
la source
Powershell, 69 octets
Script de test moins golfé:
Production:
la source
PowerShell ,
8785 octetsEssayez-le en ligne!
Il y a probablement une restructuration qui s'y cache, très probablement dans le cas contraire, mais dans l'ensemble assez bien. Utilise l'ol "" La variable non instanciée par défaut à 0 "pour à la fois faire l'index et le
!
.la source
Rétine , 55 octets
Essayez-le en ligne! Le lien inclut des cas de test. Explication:
Convertissez en unaire.
Traitez les correspondances qui se chevauchent de droite à gauche (bien que les correspondances soient ensuite répertoriées de gauche à droite). Cela signifie que nous pouvons faire correspondre chaque numéro dans une course, et la correspondance s'étend jusqu'au début de la course. Chaque correspondance est en outre contrainte que chaque numéro correspondant supplémentaire doit être inférieur au numéro supplémentaire précédemment correspondant, ou au premier numéro si aucun numéro supplémentaire n'a encore été mis en correspondance.
Pour chaque correspondance, sortez
Excelsior
avec le nombre de numéros supplémentaires dans la course comme vous le souhaitez.la source
Pyth, 32 octets
Essayez-le en ligne ici ou vérifiez tous les cas de test en même temps ici .
la source
Gelée , 18 octets
Essayez-le en ligne!
Sortie améliorée sur TIO.
la source
Lua ,
888783829695113 octetsMerci @Kevin Cruijssen pour la mise à jour en respectant l'esprit de la question d'origine.
Essayez-le en ligne!
la source
C ++ 14 (g ++),
123118 octetsHeureusement,
std::string
un constructeur répète achar
. Essayez-le en ligne ici .Merci à gastropner pour avoir économisé 5 octets.
Non golfé:
la source
C # (.NET de base) ,
115107105 octetsEssayez-le en ligne!
-8 octets: changé
b
en une chaîne contenant "!" S d'un compteur int-2 octets: défini
b+="!"
comme une fonction en ligne (grâce à Zac Faragher )Utilise un délégué Action pour extraire l'entrée et ne nécessite pas de retour.
Non golfé:
la source
b+="!"
inline avec l'Excelsiorif(a[i]>a[i-1])Console.WriteLine("Excelsior"+(b+="!"));
Essayez-le en ligne!PHP ,
117109 octetsEssayez-le en ligne!
la source
J, 50 octets
Essayez-le en ligne!
non golfé
la source
Java, 113 octets
la source
VBA, 114 octets
la source
a
. Cela dit, si vous définissez la fonction comme unsubroutine
qui prend l'entrée comme une variante du tableau de types attendu, vous pouvez transformer votre approche en une solution valide. Une version Golfed de cette approche ressembleraitsub f(x)
For i=0To UBound(x)-1
If x(i+1)>x(i)Then s=s+"!":Debug.?"Excelsior"s:Else s=""
Next
End Sub
, où les ruptures entre les blocs de code représentent de nouvelles lignesPython 3, 87 octets
Ou 97 avec ce qui suit:
Cela suppose que les entrées seront au format:
la source
Japt , 25 octets
Essayez-le en ligne!
la source