Que esse desafio sirva como ( mais ) homenagem a Stan Lee, que faleceu aos 95 anos.
Stan Lee nos deixou um legado inestimável e uma palavra de efeito peculiar: Excelsior . Então, aqui está um pequeno desafio baseado no que ele disse que era seu significado :
Finalmente, o que significa "Excelsior"? "Para cima e para a frente, para maior glória!" É isso que desejo a você sempre que terminar de twittar! Excelsior!
Desafio
Dada uma série de números inteiros não negativos, imprima uma linha Excelsior!
sempre que um número inteiro for maior que o anterior.
Regras
- A entrada será uma matriz de números inteiros não negativos.
- A saída consistirá em linhas com a palavra
Excelsior
(maiúsculas e minúsculas), seguidas de tantas!
quanto a duração da execução atual de números cada vez maiores. Você também pode retornar uma matriz de seqüências de caracteres. - Os formatos de entrada e saída são flexíveis de acordo com as regras do site, portanto, sinta-se à vontade para adaptá-los aos seus formatos de idioma. Você também pode adicionar espaços no final das linhas, ou até mesmo novas linhas extras antes ou antes do texto, se necessário.
Exemplos
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
Este é o código-golfe , portanto, pode ganhar o código mais curto para cada idioma!
Respostas:
JavaScript (ES6),
5854 bytesExperimente online!
Comentado
Por que reutilizar um [] para armazenar o valor anterior é seguro
Existem três casos possíveis:
.map()
não será invocada e apenas obteremos uma matriz vazia, produzindo uma string vazia.a < (a = c)
. Então, estamos testandoNaN
durante o primeiro testea < (a = c)
. Portanto, o resultado é falso e o que é executado é a inicialização defonte
Python 2 ,
8483817068 bytesExperimente online!
-2 bytes, graças apenas ao ASCII
fonte
05AB1E ,
262423 bytes-2 bytes graças a @Kroppeb .
Experimente online ou verifique todos os casos de teste .
Explicação:
Veja este 05AB1E ponta do meu (seção Como cordas compressa não fazem parte do dicionário? ) Para entender por que
.•1Š¥èò²•
é"excelsior"
.fonte
0Kg
comO
?Perl 6 ,
60 5857 bytes-1 byte graças a nwellnhof
Experimente online!
Bloco de código anônimo que retorna uma lista de Excelsiors!
fonte
Java-8
118113 bytesFácil de ler :
fonte
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+="!":"";}
. Experimente online ( 108 bytes ). (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 bytes )++e
vez dee++
haver pelo menos um!
para ser impresso.e=...?e+"!":
vez dee=...?e+="!":
.R , 86 bytes
Metade desta resposta é da Giuseppe. RIP Stan Lee.
Experimente online!
fonte
05AB1E ,
2019 bytesExperimente online!
Explicação
fonte
C (gcc / clang),
1069997 bytesGraças a gastropner por jogar 2 bytes.
Experimente online aqui .
Ungolfed:
fonte
Japonês
-R
,2522 bytesTente
3 bytes salvos graças a Kamil
fonte
-R
bandeira não é realmente necessária, o desafio diz que você pode gerar uma série de strings.slice
na minha primeira passagem, mas a rejeitei quando funcionou por muito tempo. Voltando agora, com a sua solicitação, acho que eu deveria ter ficado com ela, porque também diminuía para 22.Lisp comum, 111 bytes
Experimente online!
fonte
Java 8, 106 bytes
Experimente online!
(aquelas reatribuições de
s
... caramba)fonte
(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 bytes ) Movas=""
para os bytes sobressalentes.Stax , 17 bytes
Execute e depure
fonte
R , 111 bytes
Experimente online!
Um tributo R muito melhor pode ser encontrado aqui - eu estava muito fixado em
sequence
erle
.fonte
Gelatina , 16 bytes
Um link monádico que produz uma lista de listas de caracteres.
Experimente online!(rodapé se junta a novas linhas)
Quão?
fonte
Perl 5
-n
, 41 bytesExperimente online!
Recebe sua entrada em linhas separadas.
fonte
Japonês , 22 bytes
Experimente online!
Explicação, com exemplo simplificado:
fonte
Powershell, 69 bytes
Script de teste com menos golfe:
Resultado:
fonte
PowerShell ,
8785 bytesExperimente online!
Provavelmente há uma reestruturação escondida lá, provavelmente no if-else, mas no geral bem. Utiliza o velho truque "Variável não instanciada para 0" para fazer o índice e o
!
.fonte
Retina , 55 bytes
Experimente online! O link inclui casos de teste. Explicação:
Converta para unário.
Processe correspondências sobrepostas da direita para a esquerda (embora as correspondências sejam listadas da esquerda para a direita). Isso significa que podemos combinar todos os números de uma corrida, e a partida se estende até o início da corrida. Cada correspondência é ainda mais restrita que cada número correspondente correspondente deve ser menor que o número adicional correspondente anteriormente ou o primeiro número se nenhum número adicional ainda tiver sido correspondido.
Para cada correspondência, imprima
Excelsior
com o número de números adicionais na execução, conforme desejado.fonte
Pitão, 32 bytes
Experimente online aqui ou verifique todos os casos de teste de uma vez aqui .
fonte
Gelatina , 18 bytes
Experimente online!
Saída prettificada sobre TIO.
fonte
Lua ,
888783829695113 bytesObrigado a Kevin Cruijssen pela atualização que segue o espírito da pergunta original.
Experimente online!
fonte
C ++ 14 (g ++),
123118 bytesFelizmente
std::string
has a constructor that repeats achar
. Try it online here.Thanks to gastropner for saving 5 bytes.
Ungolfed:
fonte
C # (.NET Core) ,
115107105 bytesExperimente online!
-8 bytes: alterado
b
para uma string contendo "!" S a partir de um contador int-2 bytes: definido
b+="!"
como uma função embutida (graças a Zac Faragher )Usa um delegado de Ação para receber a entrada e não exigir um retorno.
Ungolfed:
fonte
b+="!"
alinhando com o Excelsiorif(a[i]>a[i-1])Console.WriteLine("Excelsior"+(b+="!"));
Experimente online!PHP ,
117109 bytesExperimente online!
fonte
J, 50 bytes
Experimente online!
destroçado
fonte
Java, 113 bytes
fonte
VBA, 114 bytes
fonte
a
. That said, if you define the function as asubroutine
that takes the input as a variant of expected type array, then you can turn your approach into a valid solution. A Golfed version of that approach would look likesub 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
, where the breaks between code block represent new linesPython 3, 87 bytes
Or 97 with the following:
This assumes inputs will be in the format:
fonte
Japt, 25 bytes
Try it online!
fonte