Wyobraźmy sobie wyliczenie rosnących elementów romboidów [1],[1,3,1],[1,3,5,3,1],…
(tylko takie liczby nieparzyste, że ładnie się wyrównują). Wyglądałoby to następująco: pamiętaj, że zawsze zaczynasz wyliczać 1
:
01
1 02 03 04
1 2 3 4 05 06 07 08 09 …
5 10 11 12
13
(1) (1,3,1) (1,3,5,3,1) (1,3,5,7,5,3,1) …
Teraz, jeśli zaczniesz sumować kolumny ( [1],[2],[1,3,5],[4],[5],[2,6,10],…
), otrzymasz sekwencję rombu . Oto pierwszych 100 elementów tej sekwencji:
1,2,9,4,5,18,35,24,9,10,33,60,91,70,45,16,17,54,95,140,189,154,115,72,25,26,81,140,203,270,341,288,231,170,105,36,37,114,195,280,369,462,559,484,405,322,235,144,49,50,153,260,371,486,605,728,855,754,649,540,427,310,189,64,65,198,335,476,621,770,923,1080,1241,1110,975,836,693,546,395,240,81,82,249,420,595,774,957,1144,1335,1530,1729,1564,1395,1222,1045,864,679,490,297,100
IO
Możesz wybrać jedną z tych trzech metod wejścia / wyjścia (nie będziesz musiał obsługiwać nieprawidłowych danych wejściowych):
- Biorąc pod uwagę liczbę całkowitą n, wyjście n- ty element w tej sekwencji (0 lub 1 indeksowany, twój wybór)
- Biorąc pod uwagę liczbę całkowitą n wyjściową pierwsze n elementów tej sekwencji
- Wydrukuj / zwróć sekwencję w nieskończoność
Przypadki testowe
Zapoznaj się z pierwszymi 100 terminami powyżej, oto kilka większych przykładów (indeksowanych 1):
101 -> 101
443 -> 1329
1000 -> 49000
1984 -> 164672
2017 -> 34289
2018 -> 30270
3000 -> 153000
JavaScript (ES7),
4241 bajtówZapisano 1 bajt dzięki @ovs
0-indeksowane. Wyrażenie w formie zamkniętej pochodzące z A004737 .
Przypadki testowe
Pokaż fragment kodu
źródło
Befunge,
6260 bajtówWypróbuj online!
Wyjaśnienie
Zaczynamy od odczytania numeru elementu opartego na jednym, n , ze standardowego wejścia i zapisania duplikatu.
Następnie określamy, w którym rombie się znajdujemy, licząc liczbę całkowitą r , do
r*r >= n
.Przesunięcie kolumny od prawej strony rombu, c , wynosi
r*r - n
.Aby uzyskać odbicie tego przesunięcia wokół osi środkowej, sprawdzamy, czy
c >= r
.A jeśli tak, to odbite c staje się
r*2 - 2 - c
.Po uzyskaniu odbicia c suma kolumny jest po prostu
(c*2 + 1) * n
.źródło
APL (Dyalog) , 18 bajtów
Wypróbuj online!
źródło
Galaretka , 8 bajtów
Wypróbuj online!
Jak to działa
źródło