Pozwól, że przedstawię ci numery GAU
GAU(1) = 1
GAU(2) = 1122
GAU(3) = 1122122333
GAU(4) = 11221223331223334444
GAU(6) = 11221223331223334444122333444455555122333444455555666666
...
GAU(10) = 11221223331223334444122333444455555122333444455555666666122333444455555666666777777712233344445555566666677777778888888812233344445555566666677777778888888899999999912233344445555566666677777778888888899999999910101010101010101010
To wyzwanie jest dość proste!
Biorąc pod uwagę liczbę całkowitą n> 0, znajdź liczbę cyfr GAU (n)
Przykład
Zróbmy GAU (4)
, wykonujemy następujące kroki (aż dojdziemy do 4) i łączymy je
[1][122][122333][1223334444]
musisz wpisać każdą liczbę tyle razy, ile wynosi jej wartość, ale musisz liczyć za każdym razem od 1
Spróbujmy zrobić GAU (5)
, będziemy musieli liczyć od 1 do 1
[1]
następnie od 1 do 2 (ale powtarzając każdą liczbę tyle razy, ile jest jej wartość )
[122]
następnie od 1 do 3
[122333]
następnie od 1 do 4
[1223334444]
i wreszcie od 1 do 5 (jest to ostatni krok, ponieważ chcemy znaleźć GAU ( 5 ))
[122333444455555]
Teraz wykonujemy wszystkie te kroki i łączymy je,
wynikiem jest GAU (5)
11221223331223334444122333444455555
Interesuje nas liczba cyfr tych numerów GAU.
Przypadki testowe
Wejście ut Wyjście
n ⟼ Length(GAU(n))
1 ⟼ 1
2 ⟼ 4
3 ⟼ 10
10 ⟼ 230
50 ⟼ 42190
100 ⟼ 339240
150 ⟼ 1295790
To wyzwanie dla golfa .
Zwycięży najkrótszy kod w bajtach.
Jeśli nadal masz jakieś pytania, daj mi znać.
Naprawdę chcę, żeby wszyscy tutaj zrozumieli ten złożony magicznie wzór
n ⟼ Length(GUA(n))
, a nie GAU (n).Odpowiedzi:
SOGL V0.12 ,
1110875 bajtówWypróbuj tutaj! - oczekuje się, że zostanie wywołany jako funkcja z danymi wejściowymi na stosie i pustym polem wejściowym.
7-bajtowa alternatywa pobierająca dane z pola wprowadzania:
Wypróbuj tutaj!
źródło
push that numbers length without popping the number
miłoHaskell , 45 bajtów
Wypróbuj online!
źródło
Brain-Flak , 166 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Łuska , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Galaretka , 7 bajtów
Wypróbuj online!
źródło
05AB1E , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Python 2 , 53 bajty
Wypróbuj online!
źródło
Łuska , 7 bajtów
Wypróbuj online!
Niegolfowane / Wyjaśnienie
źródło
Łuska , 7 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
JavaScript (ES6),
5755 bajtówWypróbuj online!
źródło
Python 2 ,
5958 bajtówKolejny bajtuje kurz dzięki Jonathanowi Frechowi.
Wypróbuj online!
Nie krótko, ale eh ... co do cholery.
źródło
len(`i`)*i for
->i*len(`i`)for
.CJam , 20 bajtów
Wypróbuj online!
Numer jest przekazywany w polu „wejściowym”.
Objaśnienie bez golfa: (przykładowe wejście = 2)
Wydaje się trudne, gdy wyjaśniono lol.
źródło
J, 24 bajty
Podobnie wysokim poziomie podejście do APL odpowiedź dzaima roku, tłumaczone na język J, z wyjątkiem obliczyć długość liczby poprzez przekształcenie go w ciąg pierwszy zamiast podejmowania dzienniki, i dostać się do wykorzystania hak J, aby pomnożyć tę długość przez samego numeru:
(*#@":"0)
. Następnie jest to tylko suma sumy skanowania.Wypróbuj online!
źródło
1(#.]*#\*#\.)1#@":@+i.
działa również dla 22 bajtówR , 39 bajtów
Sprawdź wszystkie przypadki testowe!
Prosty algorytm; Zauważyłem, jak większość, że
i
in1:n
,i
powtarza sięi*(n-i+1)
razy. Więc tworzę ten wektor, liczę liczbę znaków w każdym i sumuję je.źródło
Python 2,
5150 bajtówźródło
JavaScript (ES6),
5042 bajtówZaktualizowano: teraz w zasadzie port, w którym robią inne odpowiedzi.
Przypadki testowe
Pokaż fragment kodu
źródło
Mathematica, 66 bajtów
źródło
QBIC , 21 bajtów
źródło
Właściwie 13 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Japt ,
1211109 bajtówWypróbuj lub przetestuj wszystkie liczby od 1 do 150 .
Wyjaśnienie
Domniemane wprowadzenie liczby całkowitej
U
.Wygeneruj tablicę liczb całkowitych od 1 do,
U
a następnie wygeneruj pod-tablice od 1 do każdej liczby całkowitej.Przekaż elementy każdej podgrupy przez funkcję.
Konwertuj bieżący element na string (
s
), uzyskaj jego długość (Ê
) i pomnóż go przez element.Zmniejsz główną tablicę, dodając po tym, jak najpierw zrobisz to samo dla każdej pod-macierzy.
źródło
Jq 1,5 ,
824943 bajtyRozszerzony
Przykładowy przebieg
Wypróbuj online! także jqplay.org
źródło
Ułożone , 28 bajtów
Wypróbuj online!
Niektórzy mogą zapytać: „W którym momencie aliasy są nieczytelne?” Jeśli to nie jest blisko, masz bardzo liberalną definicję „czytelności”.
Wyjaśnienie
źródło
Rubin ,
4140 bajtówWypróbuj online!
źródło
C # (.NET Core) ,
948074 bajtówWypróbuj online!
Miałem nadzieję znaleźć bezpośrednie rozwiązanie, takie jak odpowiedź @ kamoroso94 , ale poddałem się, ponieważ zbyt dużo czasu. Prawdopodobnie istnieje sposób, aby to zrobić, ale formuła musi zostać dostosowana do każdego kroku wielkości.
Podziękowanie
14 bajtów zapisanych dzięki @someone
6 bajtów zaoszczędzonych dzięki @Kevin Cruijssen
źródło
n=>{int b=0,a=0,i;for(;a++<n;)for(i=0;i++<a;)b+=i.ToString().Length*i;return b;}
Wypróbuj online! dla 80 bajtów i wydajności.i.ToString()
można(i+"")
zaoszczędzić trochę więcej bajtów.MATL , 15 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
:ttP*Y"VXzn
Perl 6 , 36 bajtów
Sprawdź to
Rozszerzony:
źródło
Węgiel drzewny ,
1814 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Edycja: Za pomocą
Sum
zapisano mi 4 bajty. Wyjaśnienie:źródło
Σ
zamiast ...Sum
to nadal 18 bajtów:Print(Cast(Sum(Map(InclusiveRange(1, InputNumber()), Sum(Map(InclusiveRange(1, i), Times(l, Length(Cast(l)))))))));
Incremented
: P≔⊕NθIΣEθ×⁻θι×ιLIι
. JednakIncremented
zamiastInclusiveRange
golić 4 bajty mojego poprzedniego komentarza!Ohm v2 , 7 bajtów
Wypróbuj online!
źródło
[Dyalog APL],
2220 bajtówWypróbuj online!
Wyjaśnienie:
źródło
Röda , 31 bajtów
Wypróbuj online!
źródło