Rozważ następujący trójkąt.
1 23 456 7891 01112 131415 1617181 92021222 324252627 2829303132 33343536373 839404142434 4454647484950 51525354555657 585960616263646 5666768697071727 37475767778798081
Jak zapewne zauważyłeś, pierwszy rząd ma długość 1, a następnie każdy rząd jest o 1 cyfrę dłuższy niż do poprzedniego i zawiera cyfry dodatnich liczb całkowitych połą czonych.
Będziesz mieć liczbę całkowitą N . Twoim zadaniem jest znaleźć sumę cyfr, które leżą w N- tym rzędzie powyższego trójkąta.
Zasady
Możesz wybrać indeksowanie 0 lub 1. Podaj to w swojej odpowiedzi.
Możesz przyjmować dane wejściowe i dostarczać dane wyjściowe za pomocą dowolnego standardowego środka i w dowolnym rozsądnym formacie.
To jest OEIS A066548 , a ta sekwencja to sam trójkąt (poza tym, że nie usuwamy zer wiodących).
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach (w każdym języku). Miłej zabawy w golfa!
Przypadki testowe
Input | Output
0 | 1
1 | 5
2 | 15
3 | 25
4 | 5
5 | 15
6 | 25
7 | 20
8 | 33
9 | 33
10 | 43
11 | 46
12 | 64
Zauważ, że powyższe są indeksowane 0. Jeśli szukasz 1-indeksowanych przypadków testowych, zwiększ dane wejściowe o 1.
Z całkiem niezwiązanej uwagi ostatnio zmieniłem swoje zdjęcie profilowe, co zainspirowało mnie do napisania tego wyzwania.
n**2
jestn*n
.sum(range(n)) = ~-n*n/2 = (n - 1) * n / 2
Haskell , 57 bajtów
Wypróbuj online!
źródło
05AB1E , 8 bajtów
Wypróbuj online!
-1 dzięki Emignie .
1-indeksowanie.
źródło
S
jeśli zastąpiszJ
jeS
.Perl 6 ,
474542 bajtówWypróbuj online!
1-indeksowany
źródło
Mathematica, 96 bajtów
Wypróbuj online! (aby pracować nad matematyką, „Tr” należy zastąpić „Total”)
źródło
Galaretka , 11 bajtów
Wypróbuj online!
Wykorzystuje indeksowanie 1.
Wyjaśnienie
źródło
Haskell,
6964 bajtówWypróbuj online.
Zaoszczędź 5 bajtów dzięki Laikoni !
Oto wersja mniej golfowa:
źródło
n%x=sum[read[d]|d<-take n x]:(n+1)%drop n x
jest o kilka bajtów krótszy.splitOn
że zaoszczędzi bajty.R,
1191091089388 bajtówzaczynam grać w golfa ... 1-indeksowany
dzięki @Zachary. twoje domniemanie jest prawidłowe :) ogoliłem 1 bajt TNX na @Andrius i 15 kolejnych TNF na @ user2390246
@Giuseppe - tnx dla strtoi. nowy dla mnie. 5 bajtów w dół :)
źródło
y=
, ani parenówn*(n-1)/2+1
, a nazwa języka prawdopodobnie nie jest[R]
.as.integer
pomocąas.double
x
użyj,F
ponieważ jest on już zainicjowany na 0.1:n+a-1
daje to samo, coa:(a+n-1)
. W takim przypadku nie musisz definiowaća
z góry, możesz po prostu umieścić to prosto wfor
wyrażeniu. Umożliwi to również anulowanie + 1 / -1.substring
zamiast,substr
ponieważ tak naprawdę jest to tylko suma nad wskaźnikami podłańcucha. Ponadto zawsze warto dołączyć link TIO do swoich rozwiązań :) +1, świetna robota.Emojicode , 182 bajty
Definiuje metodę o nazwie ©, która przyjmuje 🚂 i zwraca 🚂. 1-indeksowany.
Wypróbuj online!
Wyjaśnienie:
Uwaga: duży wybór emotikonów nie ma większego sensu w Emojicode 0.5. W końcu to 0.x. 0.6 to naprawi, więc jeśli chcesz się tego nauczyć (bo kto by tego nie chciał), polecam chwilę poczekać.
Emojicode jest zorientowanym obiektowo językiem programowania obejmującym elementy generyczne, protokoły, opcje i zamknięcia, ale ten program nie używa zamknięć, a wszystkie rodzaje ogólne i protokoły można uznać za niejawne.
Program działa tylko na kilku typach: 🚂 jest typem całkowitym, a 🔡 jest typem ciągu. Dodatkowo 👌 pojawiają się w warunkach, które mogą przyjmować wartość 👍 (prawda) lub 👎 (fałsz).
Obecnie w Emojicode nie ma żadnych operatorów, więc dodawanie, porównywanie i inne operacje, które normalnie są operatorami, są implementowane jako funkcje, dzięki czemu wyrażenia używają notacji z prefiksem . Operatorzy są również planowani w wersji 0.6.
© bierze jeden 🚂
a
i zwraca 🚂.Zadeklaruj zamrożoną („stałą”)
l
równą a-tej liczbie trójkątnej (wzór w notacji przedrostka). To reprezentuje długość ciągu liczb, które musimy wygenerować.Przypisz pusty ciąg do zmiennej
t
.Przydzielać
i = 0
.Podczas gdy
l
jest większa niż długośćt
i += 1
Dołącz reprezentację tekstową
i
w podstawie 10 dot
.Koniec pętli
Przydzielać
s = 0
Weź podłańcuch
t
zaczynając odl - a
(a - 1
th liczba trójkątna) długości a, iteruj po wszystkich znakachKonwertuj znak na ciąg, analizuj liczbę całkowitą w bazie-10, rozpakuj opcjonalne (nic nie jest zwracane, jeśli ciąg nie jest liczbą) i dodaj do
s
zmiennej.Koniec pętli
Zwroty
Metoda końcowa
źródło
PHP, 66 + 1 bajtów
Uruchom jako potok za pomocą
-nR
lub spróbuj online .wymaga PHP w wersji 5.4 lub nowszej do indeksowania wyrażenia.
źródło
Pyth, 24 bajty
Wypróbuj tutaj: http://pyth.herokuapp.com/
źródło
APL,
282625 bajtówWykorzystuje indeksowanie 1
Wypróbuj online!
W jaki sposób?
⍳⍵×⍵
, 1 przez wejście do kwadratu⍕¨
, zamień każdy element w ciąg∊,/
, połącz je razem(+/⍳⍵)↑
, chwyć wiersze do wejścia⍵↑⌽
, chwyć żądany rząd⍎¨
, zamień każdy element na liczbę+/
, sumaźródło
Clojure v1.8, 154 bajtów
1-indeksowany
Wypróbuj online!
Wyjaśnienie
źródło
Java 8,
11698 bajtów1-indeksowany
-18 bajtów dzięki @Nevay
Wyjaśnienie:
Wypróbuj tutaj.
źródło
n->{String r="";int i=0,x=0;for(;x++<n*n;r+=x);for(x=0;x<n;)i+=r.charAt(x+++~-n*n/2)-48;return i;}
.R,
99,105, 97 bajtów1-indeksowany
wersja bez golfa
Wypróbuj tutaj!
dzięki @Giuseppe za zapisanie 8 bajtów
źródło
strtoi
Perl 6 , 44 bajtów
Sprawdź to
Rozszerzony:
źródło
Galareta , 16 bajtów
Wypróbuj online!
1-indeksowany.
źródło
SOGL V0.12 ,
1513 bajtówWypróbuj tutaj!
1-indeksowany.
Podczas pracy nad tym naprawiłem błąd, który popełnił
∑
nie działał na tablicach liczb i żem
niepoprawnie pobierał dane niejawne.Wyjaśnienie:
źródło
C ++, 180 bajtów
-17 bajtów dzięki Zacharýowi
Indeks zaczyna się od 1
źródło
int s(int n){++n;std::string t;int i=0,p=0;for(;i<=n;)p+=i++;for(i=0;t.size()<p;t+=std::to_string(++i));t=t.substr(0,p);t=t.substr(t.size()-n);i=0;for(auto&a:t)i+=a-48;return i;}
++n;
"0" identifier is unknown
w studio wizualnym. To samo dotyczyto_string
isize
. Możesz to zobaczyć, jeśli skopiujesz i wkleisz kod w notatniku ++ i przekonwertujesz kodowanie na ANSI, zobaczysz niektóre??
w edytorzePyth ,
15 1413 bajtówWypróbuj tutaj! lub Sprawdź zestaw testowy.
13 bajtów alternatywnych:
W jaki sposób?
źródło
> <>, 141 + 2 bajtów
1-indeksowane
+ 2b dla flagi -v
Wygląda na to, że Tio.run ostatnio nie lubi moich programów> <> ... Nadal można to sprawdzić na https://fishlanguage.com . Wejście przechodzi w „początkowy stos”.
Edycja: Okazuje się, że tio.run nie lubi, ponieważ obsługuje „[” i „]” inaczej niż fishlanguage.com. fishlanguage.com odwraca stos podczas tworzenia lub usuwania nowego stosu, ale tio.run tego nie robi.
źródło
Perl 5 , 62 + 1 (-p) = 63 bajty
Wypróbuj online!
Wynik jest zindeksowany 1.
W jaki sposób?
Połącz razem więcej niż wystarczającą liczbę cyfr, a następnie pomiń te niepotrzebne na początku (długość pominięcia to suma liczb całkowitych od 1 do
n-1
). Weź kolejnen
cyfry, umieść+
przed każdym z nich, a następnie oceń to równanie.źródło
JavaScript (ES6),
7865 bajtów1-indeksowany. Edycja: Zapisano 13 bajtów dzięki @tsh.
źródło
n=>eval([...(g=n=>n?g(n-1)+n:'')(n*n)].join<+>.substr(~-n*n-1,2*n))
join`+`
na końcu ...