Niech to wyzwanie będzie ( kolejnym ) hołdem dla Stana Lee, który zmarł w wieku 95 lat.
Stan Lee pozostawił nam nieocenioną spuściznę i swoiste hasło: Excelsior . Oto małe wyzwanie oparte na tym, co powiedział, że ma to znaczenie :
Wreszcie, co oznacza „Excelsior”? „W górę i dalej ku większej chwale!” Tego właśnie życzę, gdy skończę tweetować! Wełna drzewna!
Wyzwanie
Biorąc pod uwagę serię liczb całkowitych nieujemnych, wypisz linię z Excelsior!
każdym razem, gdy liczba całkowita jest większa niż poprzednia.
Zasady
- Dane wejściowe będą tablicą liczb całkowitych nieujemnych.
- Dane wyjściowe będą składać się z wierszy ze słowem
Excelsior
( wielkość liter ma znaczenie), po których następuje!
długość bieżącej serii coraz większych liczb. Możesz także zwrócić tablicę ciągów. - Formaty wejściowe i wyjściowe są elastyczne zgodnie z zasadami witryny, więc możesz je dostosować do swoich formatów językowych. Możesz także dodać spacje na końcu wierszy, a nawet dodatkowe nowe wiersze po tekście lub przed nim, jeśli potrzebujesz.
Przykłady
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
To jest golf golfowy , więc może wygrać najkrótszy kod dla każdego języka!
Odpowiedzi:
JavaScript (ES6),
5854 bajtówWypróbuj online!
Skomentował
Dlaczego ponowne użycie [] do przechowywania poprzedniej wartości jest bezpieczne
Istnieją trzy możliwe przypadki:
.map()
a < (a = c)
NaN
a < (a = c)
źródło
Python 2 ,
8483817068 bajtówWypróbuj online!
-2 bajty, tylko dzięki ASCII
źródło
05AB1E ,
262423 bajtów-2 bajty dzięki @Kroppeb .
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
Zobacz moją wskazówkę 05AB1E (sekcja Jak kompresować ciągi znaków, które nie są częścią słownika? ), Aby zrozumieć, dlaczego tak
.•1Š¥èò²•
jest"excelsior"
.źródło
0Kg
zO
?Perl 6 ,
60 5857 bajtów-1 bajt dzięki nwellnhof
Wypróbuj online!
Anonimowy blok kodu, który zwraca listę Excelsiors!
źródło
Java-8
118113 bajtówŁatwy do odczytania:
źródło
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+="!":"";}
. Wypróbuj online ( 108 bajtów ). (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 bajtów )++e
zamiaste++
tego, że jest co najmniej jeden!
do wydrukowania.e=...?e+"!":
zamiaste=...?e+="!":
.R , 86 bajtów
Połowa tej odpowiedzi to @ Giuseppe. RIP Stan Lee.
Wypróbuj online!
źródło
05AB1E ,
2019 bajtówWypróbuj online!
Wyjaśnienie
źródło
C (gcc / clang),
1069997 bajtówDzięki gastropner za grę w golfa 2 bajty.
Wypróbuj online tutaj .
Nie golfowany:
źródło
Japt
-R
,2522 bajtówSpróbuj
3 bajty zapisane dzięki Kamilowi
źródło
-R
Flaga nie jest rzeczywiście konieczne, wyzwaniem mówi można wyprowadzać tablicę ciągów.slice
pierwszym przejściu, ale odrzuciłem je, gdy zadziałało zbyt długo. Wracając do tego teraz, z twoją sugestią, myślę, że powinienem był utknąć w tym, ponieważ zmniejszyłem go również do 22.Common Lisp, 111 bajtów
Wypróbuj online!
źródło
Java 8, 106 bajtów
Wypróbuj online!
(te zmiany przydziału
s
... yikes)źródło
(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 bajty ) Przenieśs=""
do wolnych bajtów.Stax , 17 bajtów
Uruchom i debuguj
źródło
R , 111 bajtów
Wypróbuj online!
Można znaleźć znacznie lepszy hołd dla R. tutaj - byłem zbyt skupiony na
sequence
irle
.źródło
Galareta , 16 bajtów
Monadyczny link dający listę list znaków.
Wypróbuj online!(stopka łączy się z nowymi liniami)
W jaki sposób?
źródło
Perl 5
-n
, 41 bajtówWypróbuj online!
Opiera się na osobnych wierszach.
źródło
Japt , 22 bajty
Wypróbuj online!
Objaśnienie, z uproszczonym przykładem:
źródło
PowerShell, 69 bajtów
Skrypt testu mniej golfowego:
Wynik:
źródło
PowerShell ,
8785 bajtówWypróbuj online!
Prawdopodobnie kryje się w tym restrukturyzacja, najprawdopodobniej w przypadku „jeśli”, ale ogólnie całkiem dobrze. Używa starej sztuczki „Domyślna zmienna bez instancji jest ustawiona na 0” zarówno przy tworzeniu indeksu, jak i
!
.źródło
Siatkówka , 55 bajtów
Wypróbuj online! Link zawiera przypadki testowe. Wyjaśnienie:
Konwertuj na unary.
Przetwarzaj nakładające się dopasowania od prawej do lewej (chociaż dopasowania są następnie wyświetlane od lewej do prawej). Oznacza to, że możemy dopasować każdą liczbę w biegu, a dopasowanie rozciąga się na początek cyklu. Każde dopasowanie jest dodatkowo ograniczone tym, że każda dodatkowa dopasowana liczba musi być mniejsza niż poprzednio dopasowana dodatkowa liczba lub pierwsza liczba, jeśli nie zostały jeszcze dopasowane żadne dodatkowe liczby.
Dla każdego dopasowania, wypisz
Excelsior
z liczbą dodatkowych liczb w serii zgodnie z potrzebami.źródło
Pyth, 32 bajty
Spróbuj go online tutaj , lub sprawdzić wszystkie przypadki testowe od razu tutaj .
źródło
Galaretka , 18 bajtów
Wypróbuj online!
Wyjście pretifikowane przez TIO.
źródło
Lua ,
888783829695113 bajtówDzięki @Kevin Cruijssen za aktualizację zgodną z duchem pierwotnego pytania.
Wypróbuj online!
źródło
C ++ 14 (g ++),
123118 bajtówNa szczęście
std::string
ma konstruktora, który powtarzachar
. Wypróbuj online tutaj .Dzięki gastropner za oszczędność 5 bajtów.
Nie golfowany:
źródło
C # (.NET Core) ,
115107105 bajtówWypróbuj online!
-8 bajtów: zmieniono
b
na ciąg zawierający „!” S z licznika int-2 bajty: ustaw
b+="!"
jako funkcję wbudowaną (dzięki Zacowi Faragherowi )Wykorzystuje delegata akcji aby pobrać dane wejściowe i nie wymaga powrotu.
Nie golfowany:
źródło
b+="!"
inline z Excelsiorif(a[i]>a[i-1])Console.WriteLine("Excelsior"+(b+="!"));
Wypróbuj online!PHP ,
117109 bajtówWypróbuj online!
źródło
J, 50 bajtów
Wypróbuj online!
bez golfa
źródło
Java, 113 bajtów
źródło
VBA, 114 bajtów
źródło
a
. To powiedziawszy, jeśli zdefiniujesz funkcję jako,subroutine
która przyjmuje dane wejściowe jako wariant oczekiwanej tablicy typów, możesz zmienić swoje podejście w prawidłowe rozwiązanie. Wygląda na to wersja golfowasub 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
, w której przerwy między blokiem kodu reprezentują nowe liniePython 3, 87 bajtów
Lub 97 z następującymi:
Zakłada się, że dane wejściowe będą miały format:
źródło
Japt , 25 bajtów
Wypróbuj online!
źródło