সংখ্যা ত্রিভুজ


11

ধার

এই কোড-গল্ফ চ্যালেঞ্জের অনুপ্রেরণার জন্য র‍্যান্ড আল'তোরের চিঠি-ভিত্তিক প্রশ্নের জন্য আমার ধন্যবাদ ।

পটভূমি

এই চ্যালেঞ্জটির প্রকৃতি র্যান্ড তার "এ ট্রায়াঙ্গল ফরমেড অফ থ্রি লেটারস" এ উল্লিখিত অ্যালগরিদমকে ভিত্তি করে তৈরি করেছে:

  • 10 টি বর্ণের ক্রম দিয়ে শুরু করুন যার প্রতিটি এক্স, ওয়াই বা জেড is
  • প্রতিটি সারির নীচে, পরবর্তী সারিটি নিম্নরূপে নির্মাণ করুন। যদি দুটি সংলগ্ন বর্ণ একই হয় তবে তাদের নীচে একই বর্ণটি লিখুন; যদি তারা আলাদা হয় তবে তাদের নীচে তৃতীয় অক্ষরটি লিখুন।

আপনার দশম সারিতে একটি চিঠি না আসা পর্যন্ত আপনি পূর্বের পদক্ষেপটি পুনরাবৃত্তি করবেন।

চ্যালেঞ্জ

আমরা উপরের অ্যালগরিদমের গাণিতিক স্পিন রাখব:

  • আসুন 10 টি সংখ্যার ক্রম দিয়ে শুরু করি, প্রত্যেকটি একটি স্পেস দ্বারা পৃথক করা হয় এবং যার প্রতিটি হয় হয় 1, 2 বা 3।
  • প্রতিটি সারির নীচে, পরবর্তী সারিটি নিম্নরূপে নির্মাণ করুন। যদি দুটি সংলগ্ন অঙ্ক একই হয় তবে তাদের নীচে একই সংখ্যাটি লিখুন; যদি তারা আলাদা হয় তবে তাদের নীচে তৃতীয় সংখ্যাটি লিখুন।
  • আপনার একটি চূড়ান্ত নম্বর না হওয়া পর্যন্ত আগের পদক্ষেপটি পুনরাবৃত্তি করুন।

সুতরাং, এই অ্যালগরিদম অনুসরণ করে, যদি সারি দিয়ে শুরু হয় 1 2 3 3 1 3 1 3 1 2, উদাহরণস্বরূপ, নিম্নলিখিত ত্রিভুজটি উত্পন্ন হয়:

Input: 1 2 3 3 1 3 1 3 1 2

Output:

1 2 3 3 1 3 1 3 1 2
 3 1 3 2 2 2 2 2 3 
  2 2 1 2 2 2 2 1  
   2 3 3 2 2 2 3   
    1 3 1 2 2 1    
     2 2 3 2 3     
      2 1 1 1      
       3 1 1       
        2 1        
         3         

আমি সংখ্যাটি ত্রিভুজের সমস্ত অঙ্কের যোগফল জানতে আগ্রহী, সুতরাং এই সমস্ত অঙ্কগুলি যুক্ত করুন এবং এই মোটটিকে একাদশ সারিতে রেখে দিন, প্রথম সারির শেষ অঙ্কে ডান-যুক্তিযুক্ত। সুতরাং, আমাদের সংখ্যার ত্রিভুজটি নীচের মতো দেখতে লাগবে (আমার উদাহরণের ফাঁকা স্থানগুলি নীচে .অক্ষর দেখানোর জন্য অক্ষর দ্বারা উপস্থাপন করা হয়েছে ))

Input: 1 2 3 3 1 3 1 3 1 2

Output:

1.2.3.3.1.3.1.3.1.2
.3.1.3.2.2.2.2.2.3.
..2.2.1.2.2.2.2.1..
...2.3.3.2.2.2.3...
....1.3.1.2.2.1....
.....2.2.3.2.3.....
......2.1.1.1......
.......3.1.1.......
........2.1........
.........3.........
................109

আপনার চ্যালেঞ্জটি কোড লেখা যা ইনপুটযুক্ত স্ট্রিং / অ্যারে / ইত্যাদি দিয়ে শুরু করতে পারে। আমার উদাহরণ অনুসারে দশ অঙ্কের, এবং তারপরে দশটি সারি তৈরি করার জন্য অ্যালগরিদম প্রয়োগ করুন যা সংখ্যাটি ত্রিভুজ তৈরি করবে, তারপরে একটি 11 তম সারি থাকবে যা ডান-ন্যায়সঙ্গততার সাথে সমস্ত অঙ্কের মোট প্রদর্শন করবে।

পরীক্ষামূলক

এই স্ট্রিংটির পরীক্ষাটি আপনার পছন্দের দশটি অঙ্কের এলোমেলোভাবে উত্পন্ন স্ট্রিং বা নীচে স্নিপেট থেকে উত্পন্ন একটি দিয়ে সম্পাদন করা যেতে পারে ...

c1=()=>('1331123221'+(Math.random()*(1<<24)|0).toString(4)).replace(/0/g, "").slice(-10).split("").join(" ");

$("#btn").click(function(){
  $("#str").val(c1());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="str"><button id="btn">Get numbers</button>
<br>
Please use this snippet to generate a starting row for testing your code. Alternatively, you can also use a string of your choice, so long as it's ten digits (ranging from 1 to 3), separated by single spaces.

বিধি

  1. কোড-গল্ফের বিধিগুলি প্রয়োগ হয়, তাই সর্বনিম্ন সংখ্যক বাইট চ্যালেঞ্জটি জয় করে। একই লো স্কোর সহ দুটি প্রবেশিকা ইভেন্টে, বিজয়ী আপ-ভোটের সংখ্যার ভিত্তিতে পুরস্কৃত হবে।
  2. আমরা মূলত ১১ টি সারি, ১৯ টি অক্ষরের পরে যা করি ... আপনি কীভাবে আপনার চূড়ান্ত আউটপুটটি রেন্ডার করেন তা সম্পূর্ণভাবে আপনার উপর নির্ভর করে: অ্যারে, কনসোল, ফাইল আউটপুট, এসটিডিআউট ইত্যাদি so সুতরাং আপনার পছন্দ মতো আউটপুট পদ্ধতিটি ব্যবহার করুন দয়া করে আপনার সুবিধার জন্য কাজ। আউটপুটে একমাত্র নিয়মটি হ'ল আমাদের কাছে 11 টি সারি রয়েছে যা প্রতিটি সারিতে 19 টি বর্ণের উপরের মতো একই বিন্যাসে ...
  3. যদি এটি আপনার কোডকে সহায়তা করে, অঙ্কগুলির জন্য যে কোনও বিভাজকটি ব্যবহার করুন ... কেবল মনে রাখবেন যে সুগমনীয়তা অবদান রাখার কারণ হতে পারে।
  4. কোন নির্বোধ ফাঁক
  5. ইনপুটটির হার্ড-কোডিং অনুমোদিত নয়। এই কোডের উদ্দেশ্যগুলি এমন যে এটি প্রতিটি সময় বিভিন্ন ইনপুট দিয়ে বিভিন্ন ফলাফল তৈরি করতে ব্যবহার করা যেতে পারে। 1 1 1 1 1 1 1 1 1 1উদাহরণস্বরূপ হার্ড-কোডিং, অ্যালগরিদমের পুরো বিন্দুটিকে সম্পূর্ণ উপেক্ষা করে।

আপনারা সবাই কী নিয়ে আসতে পারেন তা দেখার প্রত্যাশায়!



1
আমার ত্রিভুজটি যদি কেন্দ্র-বিন্যস্ত হয় (যা এইভাবে সুস্পষ্ট) তবে আমার কি পৃথককারী দরকার?
জংহওয়ান মিন

1
এটা দেখে মনে হচ্ছে এই স্থান ছাড়া (আমার উত্তর স্থান রয়েছে যা 10 বাইট নেয় আছে)।
জংহওয়ান মিন

2
অনুমতি দেওয়া হয়েছে
ওয়েলওয়েস্ট

1
নোট করুন যে 10 (বা 3 টির শক্তির চেয়ে বড় সংখ্যা 1) এর জন্য, চূড়ান্ত অঙ্কটি স্ট্রিংয়ের প্রথম এবং শেষ অঙ্ক থেকে তুচ্ছভাবে গণনা করা হয়; অন্যান্য সংখ্যাগুলি কোনও পার্থক্য রাখে না।
নীল

উত্তর:


1

05 এ বি 1 ই , 32 26 বাইট

DvÐOˆðýðN×.ø,ü+3%3^}\¯O19j

ব্যাখ্যা

D                 # duplicate input
v                 # for y,N in input,len(input): (10 times do)
 Ð                # triplicate current list
 Oˆ               # sum one copy and add it to global array
 ðý               # merge one copy on spaces
   ðN×.ø          # surround it with N spaces
        ,         # and print it
 ü+               # reduce one copy by addition
   3%             # modulus 3
     3^           # XOR 3
                  # this is the list sent to the next iteration
}                 # end loop
\                 # drop empty list left over from last iteration of loop
 ¯O               # sum the global array giving the triangles total sum
   19j            # join with spaces up to 19 chars

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


7

গণিত, 104 97 90 94 বাইট

{Grid[List@*Row/@#],#~Total~2}~Column~Right&[NestList[3-Mod[+##,3]&@@@Partition[#,2,1]&,#,9]]&

ব্যাখ্যা

Partition[#,2,1]

পার্টিশনগুলি ইনপুটটি দৈর্ঘ্য 2 এ, 1 টি পার্টিশন অফসেট করে।

3-Mod[+##,3]&@@@

প্রতিটি পার্টিশন নেয় এবং সংশ্লিষ্ট আউটপুট গণনা করে।

একটি কৌশল এখানে জড়িত। আমি দুটি সংখ্যা যুক্ত করেছি, 3 টি মোড নিয়েছি এবং ফলাফলটি 3 থেকে বিয়োগ করেছি That এটি পছন্দসই নম্বর দেয়। (উদাঃ 3 - ((2 + 1) মোড 3) = 3)

NestList[ ... ,9]

উপরের প্রক্রিয়াটি নয় বার পুনরাবৃত্তি করে আউটপুট হিসাবে সমস্ত পুনরাবৃত্তি প্রদান করে।

Grid[List@*Row/@#]

প্রতিটি পুনরাবৃত্তিকে সারিগুলিতে ফর্ম্যাট করুন এবং একটি ত্রিভুজ তৈরি করে পুরো জিনিসটিকে একটি কলামে (কেন্দ্র প্রান্তিকিত) রাখুন।

#~Total~2

সমস্ত সংখ্যার মোট নিন।

{...}~Column~Right

ত্রিভুজ এবং মোট একত্রিত করুন এবং পুরো জিনিসটি ডান সারিবদ্ধ করুন (ত্রিভুজ ইতিমধ্যে প্রান্তিক করা হয়েছে, সুতরাং এর প্রান্তিককরণ প্রভাবিত হবে না)।


1
একক ক্রিয়াকলাপের সাথে অনুপ্রাণিত পদ্ধতি যা একই এবং পৃথক পৃথক উভয় ধরণের যত্ন নেয় ... আমি এটি পছন্দ করি!
ওয়েলওয়েস্ট

3

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

@ নীলকে ধন্যবাদ 1 বাইট সংরক্ষিত

a=>a.map((_,i)=>(q=" ".repeat(i))+(a=a.map(c=>(x+=r=i&&p^(p=c)||c,r),p=i&&a.shift())).join` `+q,x=0).join`
`+`
`+(" ".repeat(18)+x).slice(-19)

আমি বিভিন্ন অংশ একত্রিত করার চেষ্টা করেছি, তবে এটি 5 বাইটের বেশি দীর্ঘ শেষ হয়েছে:

a=>[...a.map((_,i)=>(a=a.map(c=>(x+=r=i&&p^(p=c)||c,r),p=i&&a.shift())).join` `+" ".repeat(i),x=0),x].map(q=>(" ".repeat(18)+q).slice(-19)).join`
`

মহান কাজ! 3-((x+y)%3)এই কোডটি হ্রাস করতে জেএইচএমের কৌশল কী কোনও সহায়ক হতে পারে?
ওয়েলওয়েস্ট

2
নাঃ। p^c||pইতিমধ্যে বেশ খানিকটা খাটো :-)
ইটিএইচ প্রোডাকশন

এখন, আমি কীভাবে মিস করেছি? অবশ্যই! XOR ফাংশন এখানে ভাল কাজ!
ওয়েলওয়েস্ট

1
XOR যাও ?! আমি এটা ভাবতে পারি না। বলা হচ্ছে, দুঃখের সাথে,
এক্সওআর

আপনি i?p^(p=c)||p:cকি ব্যবহার করতে পারেন i&&p^(p=c)||c?
নীল

2

রুবি, 134 101 বাইট

জেএইচএমের মডুলো ট্রিক ব্যবহার করা।

->a{b=*a
(0..8).map{|i|[" "*i,a=a.each_cons(2).map{|x,y|b<<n=3-(x+y)%3
n}]*" "}<<"%19d"%b.reduce(:+)}

এটি eval.in এ দেখুন: https://eval.in/649993


2

সিজেম ,  44  40 বাইট

l~{S*\_S*\2ew{:+3%3^}%2$N@}A%_s:~:+sJSe[

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

ব্যাখ্যা

l~       e# Read and evaluate input.
{        e# Map this block over i in the range [0 1 ... 9].
  S*     e#   Get a string of i spaces (the indentation).
  \_     e#   Swap with the current line of trits and duplicate it.
  S*     e#   Join the trits with spaces.
  \2ew   e#   Swap with the other copy of the trits and get all consecutive pairs.
  {      e#   Map this block over the pairs...
    :+   e#     Sum the pair.
    3%   e#     Modulo 3.
    3^   e#     XOR 3.
         e#     This expression (x+y)%3 ^ 3 computes the required mapping.
  }%     e#   Now this is the next line.
  2$     e#   Copy the indentation (to pad the lines to equal length).
  N      e#   Push a linefeed.
  @      e#   Pull up the next line.
}A%      e# The result of this is a nested array whose string representation is
         e# the required triangle.
_s       e# Duplicate and flatten into a string.
:~       e# Eval each character which gives a list of all the trits.
:+       e# Sum that.
s        e# Turn the sum into a string.
JSe[     e# Left-pad it with spaces to width 19.

সর্বদা হিসাবে, খুব চিত্তাকর্ষক! আপনি এখন পর্যন্ত নেতৃত্বে আছেন!
ওয়েলওয়েস্ট

1
@ ওয়েল ওয়েস্ট ধন্যবাদ :) শুধু পাইথ, জেলি এবং এমএটিএল অপেক্ষা করুন। ;)
মার্টিন এন্ডার

আসলে, গল্ফস্ক্রিপ্ট সমাধানটি কেমন হবে তা জানতে আমি আগ্রহী ...;)
ওয়াল ওয়েস্ট ওয়েস্ট

ওহ, কেউ এসকিউএল সমাধান পোস্ট করতে চলেছেন? ;)
ওয়েলওয়েস্ট



0

জাভাস্ক্রিপ্ট (ES6), 112 100 96 বাইট

ইনপুট হিসাবে একটি অ্যারে নেয় এবং পুনরাবৃত্তভাবে কমা দ্বারা পৃথক ত্রিভুজ তৈরি করে।

f=(s,p=`
`,S=0)=>p+(s[0]?s+f(s.map((v,i)=>(S+=v,v^s[i-1]||v)).slice(1),p+' ',S):(p+S).slice(-9))

console.log(f([1,2,3,3,1,3,1,3,1,2])); // reference example
console.log(f([3,3,2,1,3,1,2,1,2,1])); // random example
console.log(f([1,1,1,1,1,1,1,1,1,1])); // all ones (test case for sum < 100)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.