Perhatikan segitiga berikut ini.
1 23 456 7891 01112 131415 1617181 92021222 324252627 2829303132 33343536373 839404142434 4454647484950 51525354555657 585960616263646 5666768697071727 37475767778798081
Seperti yang mungkin Anda perhatikan, baris pertama memiliki panjang 1, dan setiap baris sesudahnya adalah 1 digit lebih panjang daripada yang sebelumnya dan baris itu berisi digit bilangan bulat positif yang digabungkan.
Anda akan diberikan integer N . Tugas Anda adalah menemukan jumlah digit yang terletak pada baris ke- N dari segitiga di atas.
Aturan
Anda dapat memilih pengindeksan 0 atau 1. Silakan tentukan itu di jawaban Anda.
Berlaku celah default .
Anda dapat mengambil input dan memberikan output dengan cara standar apa pun , dan dalam format apa pun yang masuk akal.
Ini adalah OEIS A066548 , dan urutan ini adalah segitiga itu sendiri (kecuali bahwa kami tidak menghapus angka nol di depan).
Ini adalah kode-golf , jadi kode terpendek dalam byte (dalam setiap bahasa) menang. Bersenang-senang bermain golf!
Uji Kasus
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
Perhatikan bahwa di atas adalah 0-diindeks. Jika Anda mencari kasus uji 1-indeks, tambahkan input dengan 1.
Pada catatan yang tidak berhubungan, saya baru-baru ini mengubah gambar profil saya dan itu mengilhami saya untuk menulis tantangan ini.
n**2
adalahn*n
.sum(range(n)) = ~-n*n/2 = (n - 1) * n / 2
Haskell , 57 byte
Cobalah online!
sumber
05AB1E , 8 byte
Cobalah online!
-1 terima kasih kepada Emigna .
Pengindeksan 1.
sumber
S
jika Anda menggantiJ
denganS
.Perl 6 ,
474542 byteCobalah online!
1-diindeks
sumber
Mathematica, 96 byte
Cobalah online! (untuk mengerjakan matematika "Tr" harus diganti dengan "Total")
sumber
Jelly , 11 byte
Cobalah online!
Menggunakan pengindeksan berbasis 1.
Penjelasan
sumber
Haskell,
6964 byteCobalah online.
Disimpan 5 byte berkat Laikoni !
Berikut versi yang kurang golf:
sumber
n%x=sum[read[d]|d<-take n x]:(n+1)%drop n x
beberapa byte lebih pendek.splitOn
akan menghemat byte.R,
1191091089388 bytemulai bermain golf .... 1-diindeks
terima kasih @ Zakary. anggapan Anda sudah benar :) mencukur 1 byte tnx ke @Andrius dan 15 lainnya tnx ke @ user2390246
@Giuseppe - tnx untuk strtoi. baru bagi saya. 5 byte ke bawah :)
sumber
y=
, atau parens di sekitarn*(n-1)/2+1
, dan nama bahasa mungkin tidak[R]
.as.integer
denganas.double
x
, gunakanF
karena ini sudah diinisialisasi ke 0.1:n+a-1
berikan sama dengana:(a+n-1)
. Dalam hal ini, Anda tidak perlu mendefinisikana
terlebih dahulu, Anda bisa langsung mengatakannyafor
. Itu juga akan memungkinkan Anda untuk membatalkan +1 / -1.substring
alih-alihsubstr
karena benar-benar ini hanya jumlah atas indeks substring. Juga, selalu baik untuk menyertakan tautan TIO untuk solusi Anda :) +1, kerja bagus.Emojicode , 182 byte
Menentukan metode yang disebut © yang mengambil 🚂 dan mengembalikan 🚂. 1-diindeks.
Cobalah online!
Penjelasan:
catatan: banyak pilihan emoji tidak masuk akal di Emojicode 0.5. Lagipula 0.x. 0,6 akan memperbaikinya, jadi jika Anda ingin mempelajari ini (karena siapa yang tidak mau), saya sarankan menunggu sebentar.
Emojicode adalah bahasa pemrograman berorientasi objek yang menampilkan generik, protokol, opsional, dan penutupan, tetapi program ini tidak menggunakan penutupan, dan semua generik dan protokol dapat dianggap implisit.
Program hanya beroperasi pada beberapa tipe: 🚂 adalah tipe integer dan 🔡 adalah tipe string. Selain itu, appear muncul dalam kondisi, yang dapat mengambil nilai 👍 (benar) atau 👎 (salah).
Saat ini tidak ada operator di Emojicode, jadi penambahan, perbandingan dan operasi lain yang biasanya operator diimplementasikan sebagai fungsi, secara efektif membuat ekspresi menggunakan notasi awalan . Operator juga direncanakan dalam 0,6.
© mengambil satu 🚂 dipanggil
a
dan mengembalikan 🚂.Nyatakan angka beku ("konstan")
l
sama dengan angka segitiga ke-a (rumus dalam notasi awalan). Ini mewakili panjang string angka yang perlu kita hasilkan.Tetapkan string kosong ke variabel
t
.Tentukan
i = 0
.Sedangkan yang
l
lebih besar dari panjangt
i += 1
Tambahkan representasi tekstual dari
i
basis 10 ket
.Akhiri lingkaran
Menetapkan
s = 0
Ambil substring
t
mulai daril - a
(a - 1
angka segitiga th) panjang a, ulangi semua karakterKonversikan karakter menjadi string, parse integer di base-10, buka bungkusan opsional (ketiadaan dikembalikan jika string bukan angka) dan tambahkan ke
s
variabel.Akhiri lingkaran
Kembali s
Metode akhir.
sumber
PHP, 66 +1 byte
Jalankan sebagai pipa dengan
-nR
atau coba online .membutuhkan PHP 5.4 atau yang lebih baru untuk mengindeks ekspresi.
sumber
Pyth, 24 byte
Coba di sini: http://pyth.herokuapp.com/
sumber
APL,
282625 byteMenggunakan pengindeksan berbasis 1
Cobalah online!
Bagaimana?
⍳⍵×⍵
, 1 hingga input kuadrat⍕¨
, ubah setiap elemen menjadi string∊,/
, menyatukan mereka(+/⍳⍵)↑
, ambil baris hingga input⍵↑⌽
, ambil baris yang diinginkan⍎¨
, ubah setiap elemen menjadi angka+/
, jumlahsumber
Clojure v1.8, 154 byte
1-diindeks
Cobalah online!
Penjelasan
sumber
Java 8,
11698 byte1-diindeks
-18 byte terima kasih kepada @Nevay
Penjelasan:
Coba di sini.
sumber
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 byte1-diindeks
versi tanpa ungolfed
Coba di sini!
terima kasih kepada @Giuseppe karena telah menghemat 8 byte
sumber
strtoi
Perl 6 , 44 byte
Menguji
Diperluas:
sumber
Jeli , 16 byte
Cobalah online!
1-diindeks.
sumber
SOGL V0.12 ,
1513 byteCoba Di Sini!
1-diindeks.
Saat mengerjakan ini, saya memperbaiki bug yang membuat
∑
tidak berfungsi pada array angka dan yangm
salah mengambil input implisit.Penjelasan:
sumber
C ++, 180 byte
-17 byte berkat Zacharý
Indeks mulai dari 1
sumber
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
di visual studio. Hal yang sama untukto_string
dansize
. Anda dapat melihatnya jika Anda menyalin-tempel kode di notepad ++, dan mengonversi pengodean ke ANSI, Anda akan melihat beberapa??
di editorPyth ,
15 1413 byteCoba di sini! atau Lihat suite tes.
Alternatif 13 byte :
Bagaimana?
sumber
> <>, 141 + 2 Bytes
1-Diindeks
+ 2b untuk -v flag
Tio.run sepertinya tidak menyukai program saya> <> baru-baru ini ... Ini masih dapat diverifikasi di https://fishlanguage.com . Input masuk dalam 'tumpukan awal'.
Sunting: Ternyata tio.run tidak menyukainya karena menangani '[' dan ']' berbeda dengan fishlanguage.com. fishlanguage.com membalikkan tumpukan saat membuat atau menghapus tumpukan baru, tetapi tio.run tidak.
sumber
Perl 5 , 62 + 1 (-p) = 63 byte
Cobalah online!
Hasilnya 1 diindeks.
Bagaimana?
Menggabungkan lebih dari cukup digit bersama-sama, lalu lewati yang tidak relevan di awal (panjang lompatan adalah jumlah bilangan bulat dari 1 hingga
n-1
). Ambiln
digit berikutnya , letakkan a+
di depan masing-masing, lalu evaluasi persamaan itu.sumber
JavaScript (ES6),
7865 byte1-diindeks. Sunting: Disimpan 13 byte berkat @tsh.
sumber
n=>eval([...(g=n=>n?g(n-1)+n:'')(n*n)].join<+>.substr(~-n*n-1,2*n))
join`+`
mengakhiri ...