সংক্ষিপ্ত ত্রিভুজটির সারিগুলি যোগ কর


16

নিম্নলিখিত ত্রিভুজটি বিবেচনা করুন।

1
23
456
7891
01112
131415
1617181
92021222
324252627
2829303132
33343536373
839404142434
4454647484950
51525354555657
585960616263646
5666768697071727
37475767778798081

আপনি সম্ভবত লক্ষ্য করেছেন, প্রথম সারির দৈর্ঘ্য 1 এবং তারপরে প্রতিটি সারি পূর্ববর্তীটির চেয়ে 1 ডিজিট দীর্ঘ এবং এটিতে ইতিবাচক পূর্ণসংখ্যার সংখ্যার অঙ্ক রয়েছে।

আপনাকে একটি পূর্ণসংখ্যা এন দেওয়া হবে । আপনার কাজটি হ'ল উপরের ত্রিভুজটির N তম সারিতে থাকা অঙ্কগুলির যোগফল ।

বিধি

  • আপনি 0 বা 1 সূচক নির্বাচন করতে পারেন। আপনার উত্তরে দয়া করে এটি নির্দিষ্ট করুন।

  • ডিফল্ট লুফোলস প্রয়োগ হয়।

  • আপনি ইনপুট নিতে এবং কোনও মানক গড় এবং কোনও যুক্তিসঙ্গত ফর্ম্যাটে আউটপুট সরবরাহ করতে পারেন ।

  • এটি OEIS A066548 , এবং এই ক্রমটি ত্রিভুজ নিজেই (বাদে আমরা নেতৃস্থানীয় শূন্যগুলি অপসারণ করি না)।

  • এটি , তাই বাইটের (প্রতিটি ভাষায়) সংক্ষিপ্ততম কোডটি জয়ী। মজা গল্ফিং আছে!

পরীক্ষার কেস

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

নোট করুন যে উপরেরগুলি 0-সূচকযুক্ত। আপনি যদি 1-ইনডেক্সেড পরীক্ষার ক্ষেত্রে সন্ধান করছেন তবে ইনপুটটি 1 দ্বারা বাড়িয়ে দিন ment

বেশ অপ্রাসঙ্গিক নোটে, আমি সম্প্রতি আমার প্রোফাইল চিত্র পরিবর্তন করেছি এবং এটি আমাকে এই চ্যালেঞ্জটি লিখতে অনুপ্রাণিত করেছে।

উত্তর:



4

পাইথন 2 , 69 বাইট

এটি সম্ভবত কিছুটা খাটো হতে পারে।

1-ইন্ডেক্স

সম্পাদনা করুন: -7 বাইটস @ মিঃ এক্সকোডারকে ধন্যবাদ

lambda n:sum(map(int,"".join(map(str,range(1,n*n+1)))[~-n*n/2:][:n]))

এটি অনলাইন চেষ্টা করুন!



69 বাইট । গাউসের সূত্র ব্যবহার করেsum(range(n)) = ~-n*n/2 = (n - 1) * n / 2
মিঃ এক্সকোডার

1
@ মিঃ এক্সকোডার আমার মনে হয় তিনি করেন ...
এরিক দি আউটগল্ফার

@ এরিকথ আউটগল্ফার আপনি ঠিক বলেছেন, আমার খারাপ
মিঃ এক্সকোডার


3

05 এ বি 1 ই , 8 বাইট

nLS¹L£θO

এটি অনলাইন চেষ্টা করুন!

-1 এমিনগাকে ধন্যবাদ ।

1-ইন্ডেক্স।


আপনি Sযদি এর Jসাথে প্রতিস্থাপন করেন তবে আপনি মুছে ফেলতে পারেন S
এমিগানা

@ এমিগনা দুহ ....
এরিক আউটগল্ফার




2

হাস্কেল, 69 64 বাইট

n%x=sum[read[d]|d<-take n x]:(n+1)%drop n x
f=(1%(show=<<[1..])!!)

এটি অনলাইনে চেষ্টা করুন।

লাইকনির জন্য 5 টি বাইট সংরক্ষণ করা হয়েছে !

এখানে কম গল্ফ করা সংস্করণ:

-- continuous stream of digits representing
-- the concatenation of positive integers in
-- order: 1234567891011...
digitstream = show=<<[1..]

-- sequence that yields the rows of the triangle
triangle n xs |(a,b)<-splitAt n xs=a:triangle(n+1)b

digitSum xs = sum[read[d]|d<-xs]

-- sequence that sums up the digits in each row
rowSumSequence = map digitSum (triangle 1 digitstream)

-- the final function that just shows the value 
-- at a given index
g=(rowSumSequence!!)

n%x=sum[read[d]|d<-take n x]:(n+1)%drop n xকিছু বাইট সংক্ষিপ্ত।
লাইকনি

@ লাইকনি ধন্যবাদ! সম্পাদনা করা হয়েছে। আমি জানি না কেন আমি ভাবলাম যে splitOnবাইটগুলি সংরক্ষণ করবে।
ক্রিশ্চিয়ান লুপাস্কু

2

আর, 119 109 108 93 88 বাইট

গল্ফ শুরু করা .... 1-ইনডেক্সড

function(n){for(i in 1:n+n*(n-1)/2){F=F+strtoi(substr(paste(1:n^2,collapse=""),i,i))};F}

ধন্যবাদ @ জাচরি আপনার অনুমানটি সঠিক: :) @ অ্যান্ড্রিয়াসে 1 বাইট টিএনএক্স এবং @ ব্যবহারকারী 2390246 এ আরও 15 টিএনএক্স টি চাঁচা করা হয়েছে

@ জিউসেপ - টিআরটিও এর জন্য টিএনএক্স। আমার কাছে নতুন 5 বাইট নিচে :)


2
আমি মনে করি y=না আপনার আশেপাশে বা প্যারেনস দরকার n*(n-1)/2+1এবং ভাষার নাম সম্ভবত নেই [R]
জাকারি

1
আপনি পরিবর্তন করে 1 বাইট সংরক্ষণ করতে পারবেন as.integerসঙ্গেas.double
AndriusZ

1
পরিবর্তে x, Fইতিমধ্যে এটি 0 থেকে আরম্ভ করা হয়েছে হিসাবে ব্যবহার করুন
ব্যবহারকারী 2390246

1
এছাড়াও, 1:n+a-1হিসাবে একই দেয় a:(a+n-1)aসেক্ষেত্রে আপনাকে আগে থেকে সংজ্ঞায়িত করার দরকার নেই , আপনি কেবল এটি forপ্রকাশ করতে পারেন can এটি আপনাকে একটি + 1 / -1 বাতিল করতে দেয়।
ব্যবহারকারী 2390246

2
79 বাইটsubstringপরিবর্তে ব্যবহৃত হয়েছে , substrকারণ এটি কেবল স্ট্রিংয়ের সূচকগুলির উপরে একটি যোগফল। এছাড়াও, আপনার সমাধানগুলির জন্য একটি টিআইও লিঙ্ক অন্তর্ভুক্ত করা সর্বদা ভাল :) :) +1, দুর্দান্ত কাজ।
জিউসেপে

2

ইমোজিকোড , 182 বাইট

🐖©a🚂➡🚂🍇🍦l➗✖a➕a 1 2🍮t🔤🔤🍮i 0🔁▶l🐔t🍇🍮➕i 1🍮t🍪t🔡i 10🍪🍉🍮s 0🔂g🔪t➖l a a🍇🍮➕s 🍺🚂🔡g 10🍉🍎s🍉

Called নামে একটি পদ্ধতি নির্ধারণ করে যা একটি takes নেয় এবং একটি returns দেয় 🚂 1-ইন্ডেক্স।

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

বিঃদ্রঃ: ইমোজিওকোড 0.5 তে প্রচুর ইমোজি পছন্দ পছন্দ করে না। এটি 0.x, সর্বোপরি। 0.6 এটি ঠিক করে দেবে, সুতরাং আপনি যদি এটি শিখতে চান (কারণ কে না চায়) তবে আমি একটি মুহুর্ত অপেক্ষা করার পরামর্শ দিই।

ইমোজিকোড হ'ল জেনারিক্স, প্রোটোকল, বিকল্পগুলি এবং সমাপনী বৈশিষ্ট্যযুক্ত একটি অবজেক্ট-ভিত্তিক প্রোগ্রামিং ভাষা, তবে এই প্রোগ্রামটি কোনও ক্লোজার ব্যবহার করে না এবং সমস্ত জেনেরিক এবং প্রোটোকলগুলি অন্তর্ভুক্ত হিসাবে বিবেচিত হতে পারে।

প্রোগ্রামটি কেবল কয়েকটি প্রকারে পরিচালিত হয়: 🚂 হল পূর্ণসংখ্যা এবং 🔡 স্ট্রিং প্রকার type অতিরিক্তভাবে conditions গুলি শর্তে উপস্থিত হয় যা either (সত্য) বা 👎 (মিথ্যা) এর কোনও মান নিতে পারে।

ইমোজিকোডে বর্তমানে কোনও অপারেটর নেই, সুতরাং সংযোজন এবং অন্যান্য অপারেশনগুলি যা সাধারণত অপারেটরগুলি ফাংশন হিসাবে প্রয়োগ করা হয়, কার্যকরভাবে এক্সপ্রেশনগুলি ব্যবহার করে উপসর্গ চিহ্নটি । অপারেটরগুলিও 0.6 তে পরিকল্পনা করা হয়েছে।

🐖©a🚂➡🚂🍇

© এক নেয় 🚂 বলা হয় a এবং একটি returns দেয় 🚂

 🍦l➗✖a➕a 1 2

হিমায়িত ("ধ্রুবক") ঘোষণা করুন l -ত্রি ত্রিভুজাকার সংখ্যার সমতুল্য (উপসর্গ সূচনার সূত্র) হিসাবে ঘোষণা করুন। এটি আমাদের উত্পন্ন করার জন্য সংখ্যার স্ট্রিংয়ের দৈর্ঘ্যের প্রতিনিধিত্ব করে।

 🍮t🔤🔤

চলকটিতে একটি খালি স্ট্রিং বরাদ্দ করুন t

 🍮i 0

বরাদ্দ i = 0

 🔁▶l🐔t🍇

যদিও lএর দৈর্ঘ্য চেয়ে বেশীt

  🍮➕i 1

i += 1

  🍮t🍪t🔡i 10🍪

iবেস 10 তে পাঠ্য উপস্থাপনা যুক্ত করুন t

 🍉

শেষ লুপ

 🍮s 0

বরাদ্দ s = 0

 🔂g🔪t➖l a a🍇

দৈর্ঘ্যের a ( ত্রিভুজাকার সংখ্যা) tথেকে শুরু করার একটি স্ট্রিং নিন , সমস্ত অক্ষরের উপরে পুনরাবৃত্তি করুনl - aa - 1

  🍮➕s 🍺🚂🔡g 10

অক্ষরটিকে স্ট্রিংয়ে রূপান্তর করুন, বেস -10-তে পূর্ণসংখ্যা পার্স করুন, alচ্ছিক আন- s

 🍉

শেষ লুপ

 🍎s

রিটার্ন এস

🍉

শেষ পদ্ধতি।




1

এপিএল, 28 26 25 বাইট

{+/⍎¨⍵↑⌽(+/⍳⍵)↑∊,/⍕¨⍳⍵×⍵}

1-ভিত্তিক সূচক ব্যবহার করে

এটি অনলাইন চেষ্টা করুন!

কিভাবে?

  • ⍳⍵×⍵, 1 ইনপুট স্কোয়ারের মাধ্যমে
  • ⍕¨, প্রতিটি উপাদান একটি স্ট্রিং মধ্যে চালু
  • ∊,/, তাদের একসাথে একত্রিত
  • (+/⍳⍵)↑, ইনপুট পর্যন্ত সারিগুলি ধরুন
  • ⍵↑⌽, কাঙ্ক্ষিত সারিটি ধরুন
  • ⍎¨, প্রতিটি উপাদানকে একটি সংখ্যায় পরিণত করুন
  • +/, যোগফল

1

Clojure 1.8, 154 বাইট

1-ইন্ডেক্স

(fn[n](loop[i 1 s(clojure.string/join""(take(* n n)(iterate inc 1)))](if(= i n)(apply +(map #(Character/digit % 10)(take n s)))(recur(inc i)(subs s i)))))

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

(take(* n n)(iterate inc 1))  Take the first N*N numbers
(clojure.string/join""...)    Combine them into a string
(loop[i 1 ...](if(= i n)...)  Loop N times
(apply +(map #(Character/digit % 10)(take n s)))  Take N characters from the string, convert to integers and add them
(recur(inc i)(subs s i))      Increment iterator, remove i characters from string

1

জাভা 8, 116 98 বাইট

n->{String t="";int r=0,i=0;for(;i++<n*n;t+=i);for(i=0;i<n;r+=t.charAt(i+++~-n*n/2)-48);return r;}

1-ইন্ডেক্স

-18 বাইট @ নেভায়ে ধন্যবাদ

ব্যাখ্যা:

এখানে চেষ্টা করুন।

n->{                             // Method with integer as both parameter and return-type
  String t="";                   //  Triangle-String
  int r=0,                       //  Result-integer
      i=0;                       //  Index-integer
  for(;i++<n*n;                  //  Loop (1) from 0 to `n^2` (exclusive)
    t+=i                         //   And append String `t` with all the numbers
  );                             //  End of loop (1)
  for(i=0;i<n;                   //  Loop (2) from 0 to `n` (exclusive)
    r+=t.charAt(i+++~-n*n/2)-48  //   And raise the sum `r` by the digits
  );                             //  End of loop (2)
  return r;                      //  Return the resulting sum of digits
}                                // End of method

1
98 বাইট: 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;}
নেভায়ে

1

আর, 99 , 105 , 97 বাইট

a=diag(N<-scan());a[upper.tri(a,T)]=strtoi(strsplit(paste(1:N^2,collapse=""),"")[[1]]);sum(a[,N])

1-ইন্ডেক্স

অসম্পূর্ণ সংস্করণ

a <- diag(N<-scan())
a[upper.tri(a, diag=TRUE)] <- strtoi(strsplit(paste(1:N^2, 
                                                  collapse=""),
                                            "")[[1]])
sum(a[,N])

এখানে চেষ্টা করুন!

8 জ্যাকেট বাঁচানোর জন্য @ জিউজ্পে ধন্যবাদ


@ জিউসেপ্পে বর্ণনায় উল্লেখ করা হয়েছে: "আপনাকে একটি পূর্ণসংখ্যা এন দেওয়া হবে।" এবং এই এন আমার দ্রবণ ব্যবহৃত হয়। অথবা আমি কিছু ভুল বুঝেছি।
AndriusZ

বর্ণনায় লিঙ্কযুক্ত "কোনও মানক গড়" দেখুন :)
জিউস্পেপ

@ জিউসেপ পরিবর্তন এবং আপনার পরামর্শটি ব্যবহার করেছেনstrtoi
AndriusZ

1
একটি সতর্কতা বার্তা সহ 97 বাইট । আপনার বর্ণনায় টিআইওর লিঙ্ক অন্তর্ভুক্ত করা সর্বদা ভাল তাই অন্যরা এটি পরীক্ষা করতে পারে!
জিউসেপে

@ জিউস্পেপ আমি জানি না কোন আর, তবে সম্ভবত কোনও ফাংশন কম বাইট ব্যবহার করবে?
নিডজেজেকোব

1

পার্ল 6 , 44 বাইট

{[+] (1..*).flatmap(*.comb).rotor(1..*)[$_]}

এটা পরীক্ষা করো

সম্প্রসারিত:

{
  [+]        # reduce the result of the following using &infix«+»

  ( 1 .. * ) # infinite range starting at 1

  .flatmap(  # map, then flatten
    *.comb   # split into digits (100 ⇒ 1,0,0)
  )

  .rotor(    # break the sequence into pieces
    1 .. *   # start with 1 value, then 2 values, then 3, etc.
  )\

  [$_]       # index into that infinite sequence
}


0

এসওজিএল ভি0.12 , 15 13 বাইট

²Δr∑.δ∑⌡kmčr∑

এখানে চেষ্টা করুন!
1-ইন্ডেক্স।

এটিতে কাজ করার সময় আমি একটি বাগ স্থির করেছিলাম যা সংখ্যার অ্যারেগুলিতে কাজ করে না এবং এটি mভুলভাবে অন্তর্নিহিত ইনপুট নেয়।

ব্যাখ্যা:

²              square the input
 Δ             get a range from 1 to that
  r∑           join as a string
    .δ         create a range 0 - input-1
      ∑        sum that
       ⌡       that many times do
        k        remove the 1st character of the joined string
         m     mold to the length of the input
          č    chop into characters
           r∑  convert to numbers and sum

0

সি ++, 180 বাইট

-17 বাইট জ্যাকারিকে ধন্যবাদ

সূচকটি শুরু 1

#include<string>
int s(int 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).substr(p-n);i=0;for(auto&a:t)i+=a-48;return i;}

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;}
এটিতে

এছাড়াও, আপনি যদি বর্তমানে 0- ++n;
সূচিকৃত

@ জ্যাচারý ধন্যবাদ বিটিডব্লিউ, আপনার কোডে কিছু কারণে অদৃশ্য ইউনিকোড অক্ষর রয়েছে
হাটসুপয়েন্টারকুন

কোনটি, আমার সি ++ পরামর্শ, বা আমার এপিএল? এপিএল নিজস্ব কোডেপেজ ব্যবহার করে এবং আপনার যদি সঠিক ফন্ট না থাকে তবে সম্ভবত প্রদর্শিত হবে না।
জাকারি

@ জাকারি দ্য সি ++ পরামর্শটি আপনি মন্তব্যে লিখেছেন। শূন্যের আগে 2 টি ইউনিকোড অক্ষর রয়েছে, "0" identifier is unknownভিজ্যুয়াল স্টুডিওতে যেমন ত্রুটি করে making একই জিনিস to_stringএবং size। আপনি যদি নোটপ্যাড ++ এ কোডটি অনুলিপি করেন এবং এনকোডিংটি ??
এএনএসআইতে

0

পাইথ ,  15 14  13 বাইট

s<>sMjkS^Q2sU

এখানে চেষ্টা করুন! বা পরীক্ষার স্যুটটি পরীক্ষা করে দেখুন।

13 বাইট বিকল্প:

ssM<>jkS^Q2sU
ssM<>jkS*QQsU
s<>sMjkS^Q2sU

কিভাবে?

s<>sMjkS^Q2sU    Full program. Q means input.

       S^Q2      The range [1, Q^2].
     jk          Join as a String.
   sM            Convert each character to integer.
  >              All the elements of the above, but the first Q*(Q-1)/2.
 <               All the element of the above but the last Q.
s                Sum.
                 Output implicitly.

0

> <>, 141 + 2 বাইট

::1+* 2,01\
@}})?/:0$\>$:@{{:
:%a:/?(1:< ,a-]{+1[4
  /~/     \+1~\
1:<]{+1[+4@:-1\?(
{1-}>{:}1(?\@1-@+
    \0}~{{\\n;
@:{{:<-1~$\!?)}}
     ~

1-সূচিবদ্ধ

-ভি পতাকা জন্য + 2 বি

Tio.run আসলেই আমার> <> প্রোগ্রামগুলি পছন্দ করছে বলে মনে হচ্ছে না ... এটি এখনও https://fishlanguage.com এ যাচাই করা যেতে পারে । ইনপুট 'প্রাথমিক স্ট্যাক' এ যায়।

সম্পাদনা: এটি দেখা যাচ্ছে যে টিওআরুন এটি পছন্দ করে না কারণ এটি '[' এবং ']' কে ফিশালংগুয়েজ.কম এ আলাদাভাবে পরিচালনা করে। নতুন স্ট্যাক তৈরি বা অপসারণের সময় ফিশালংগুয়েজ.কম স্ট্যাকটি বিপরীত করে, তবে টিও.আরুন তা দেয় না।


0

পার্ল 5 , 62 + 1 (-পি) = 63 বাইট

$_=eval(substr((join'',1..$_*$_),($_**2-$_)/2,$_)=~s/./+$&/gr)

এটি অনলাইন চেষ্টা করুন!

ফলাফল 1 সূচকযুক্ত।

কিভাবে?

একসাথে পর্যাপ্ত অঙ্কের চেয়ে বেশি সংঘবদ্ধ করুন, তারপরে শুরুতে অপ্রাসঙ্গিকগুলি এড়িয়ে যান (এড়িয়ে যাওয়ার দৈর্ঘ্য 1 থেকে পূর্ণসংখ্যার যোগফল n-1)। পরবর্তী nঅঙ্কগুলি ধরুন , +প্রত্যেকের সামনে একটি স্থান রাখুন , তারপরে সেই সমীকরণটি মূল্যায়ন করুন।


0

জাভাস্ক্রিপ্ট (ES6), 78 65 বাইট

f=
n=>eval([...(g=n=>n?g(n-1)+n:``)(n*n).substr(n*~-n/2,n)].join`+`)
<input type=number min=1 oninput=o.textContent=f(this.value)><pre id=o>

1-ইন্ডেক্স। সম্পাদনা করুন: 13 টি বাইটস সংরক্ষণ করেছেন @ টিএসএসকে ধন্যবাদ।


n=>eval([...(g=n=>n?g(n-1)+n:'')(n*n)].join<+>.substr(~-n*n-1,2*n))
tsh

@tsh এখনও শেষে গল্ফিয়ার join`+` ...
নিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.