মাত্রিক গণনা


17

একটি ফাংশন লিখুন (n, কে) যা কে থেকে কে-মাত্রিক গণনা প্রদর্শন করে count

5 থেকে 1-মাত্রিক কাউন্টডাউনটি দেখতে দেখতে মনে হচ্ছে

 54321

5 টির দ্বি-মাত্রিক কাউন্টডাউন দেখে মনে হচ্ছে

 54321
 4321
 321
 21
 1

অবশেষে, 5 টির ত্রি-মাত্রিক কাউন্টডাউন দেখে মনে হচ্ছে

 54321
 4321
 321
 21
 1
 4321
 321
 21
 1
 321
 21
 1
 21
 1
 1

আনুষ্ঠানিক সংজ্ঞা

যে কোনও এন থেকে 1-মাত্রিক গণনা হ'ল এন, এন -1, ..., 1 সংখ্যার (একটি নতুন লাইনের পরে) সংখ্যার একক রেখা।

যে কোনও কে-এর জন্য 1-এর কে-মাত্রিক গণনা একক লাইন

 1

N> 1 এবং কে> 1 এর জন্য, এন থেকে একটি কে-ডাইমেনশনাল কাউন্টডাউন হ'ল এন থেকে 1-ডি-ডাইমেনশনাল কাউন্টডাউন এর পরে এন থেকে ডি-ডাইমেনশনাল কাউন্টডাউন।

ইনপুট

দুটি ধনাত্মক পূর্ণসংখ্যার কে এবং এন <= 9, আপনার চয়ন করা কোনও ফর্ম্যাটে।

আউটপুট

প্রতিটি 1-মাত্রিক কাউন্টডাউন পরে একটি নতুন লাইন সহ এন থেকে কে-মাত্রিক গণনা। অতিরিক্ত নিউলাইনগুলি আউটপুটটিতে অনুমোদিত।

স্কোরিং

স্ট্যান্ডার্ড গল্ফ স্কোরিং।

বোনাস উদাহরণ

এখানে কে> এন এর একটি উদাহরণ রয়েছে, 3 থেকে 4-মাত্রিক গণনা

 -- 3-dimensional countdown from 3
 321
 21
 1
 21
 1
 1
 -- 4-dimensional countdown from 2:
 ---- 3-dimensional countdown from 2:
 21
 1
 1
 ---- 4-dimensional countdown from 1:
 1  

ব্যাখ্যা:

একটি লাইনের অঙ্কগুলি সংলগ্ন হওয়া দরকার না, তবে সেগুলি অবশ্যই সমান-ব্যবধানে থাকা উচিত।

আপনি যদি চান তবে কেবল একটি ফাংশনের পরিবর্তে একটি সম্পূর্ণ প্রোগ্রাম লিখতে পারেন।


আমি নিশ্চিত না যে আমি পরীক্ষার কেসগুলি সঠিকভাবে বুঝতে পেরেছি। 3 ডি এবং 4 ডি কাউন্টডাউনগুলি কি 2 টির মতো?
— ডেনিস

1
@ ডেনিস আমি মনে করি উদ্দেশ্যটি হ'ল 1
— Sp3000

এটি এক থেকে 3 ডি কাউন্টডাউন না বলা উচিত?
— ধ্বংসাত্মক লেবু

অতিরিক্ত নিউলাইনগুলি আউটপুটটিতে অনুমোদিত। এটি কি নতুন লাইনের অনুসরণ করে বা সেগুলি কোথাও ঘটতে পারে?
— ডেনিস

@ ডেনিস অতিরিক্ত নিউলাইনগুলি যে কোনও জায়গায় ঘটতে পারে। ঠিক আছে, 543 21 n21 ঠিক আছে না, তবে কোনও '1' পরে তারা ঠিক আছে।
— এরিক ট্র্রেসার

উত্তর:


15

পাইথন, 60 বাইট

f=lambda n,k:n>1<k and f(n,k-1)+f(n-1,k)or'987654321\n'[~n:]

আইডিয়নে এটি পরীক্ষা করুন ।

কিভাবে এটা কাজ করে

দ্য N কে- ডাইমেনশনাল কাউন্টডাউনটি একটি একক বেসের সাথে সংজ্ঞায়িত করা যায়:

যদি এন = 1 বা কে = 1 হয় তবে আউটপুটটি এন || n-1 || ... || 1 || Where , যেখানে || সংমিশ্রণ নির্দেশ করে।

প্রশ্ন থেকে পুনরাবৃত্ত সংজ্ঞাটি ব্যবহার করে, এন> 1 এবং কে> 1 যদি f(n,k)ফিরে আসে ; অন্যথায় এটি থেকে শেষ n + 1 টি অক্ষর প্রদান করে ।f(n,k-1)+f(n-1,k)'987654321\n'


ডেনিস ঠিক খুব ভাল। আপনি কিভাবে এটি করেছেন?
— ক্লিমেজিক

এখানে আমার একমাত্র অন্তর্দৃষ্টি ছিল আপনি উভয় বেস কেস একত্রিত করতে পারেন। বাকীটি কেবল পুনরাবৃত্ত সংজ্ঞাটির সরাসরি অনুবাদ।
— ডেনিস

8

জেলি , 8 বাইট

R¡UḌFṚp⁷

এটি একটি সম্পূর্ণ প্রোগ্রাম যা n এবং k কমান্ড-লাইন আর্গুমেন্ট হিসাবে প্রত্যাশা করে ।

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

কিভাবে এটা কাজ করে

R¡UḌFṚp⁷  Main link. Left argument: n. Right argument: k

 ¡        Repeat the link to the left k times.
R           Range; map each integer j in the previous return value to [1, ..., j].
  U       Upend; reverse each 1-dimensional array in the result.
   Ḍ      Undecimal; convert each 1-dimensional array from base 10 to integer.
    F     Flatten the resulting array.
     Ṛ    Reverse the result.
      p⁷  Cartesian product with '\n'. (Join is weird for singleton arrays.)

না Yস্থানে কাজ p⁷?
— মাইল

প্রকার, রকম. জন্য 5, 1, এটি প্রদর্শিত হয় [54321]।
— ডেনিস

5

জাভাস্ক্রিপ্ট, 40 38 37 বাইট

@ Edc65 এর জন্য 1 বাইট সংরক্ষণ করা:

f=(n,k)=>k*n?f(n,k-1)+f(n-1,k):n||`
`

পূর্ববর্তী উত্তর

38 বাইট @ নীলকে ধন্যবাদ

f=(n,k)=>k&&n?f(n,k-1)+f(n-1,k):n||`
`

40 বাইট:

f=(n,k)=>k&&n?f(n,k-1)+f(n-1,k):n?n:'\n'

1
||পরিবর্তে ব্যবহার করে একটি বাইট সংরক্ষণ করুন ?n:। `এর পরিবর্তে এর ভিতরে একটি আক্ষরিক নিউলাইন ব্যবহার করে অন্য বাইট সংরক্ষণ করুন '\n'।
— নিল

অতিরিক্ত আমি অতিরিক্ত নিউলাইনগুলি ছাড়াই সেরাটি করতে পারি 43:f=(n,k)=>n?(k?f(n,k-1):n)+f(n-1,k):k?``:`\n`
— নীল

@ নীল আমি বাইট গণনা করতে নোটপ্যাড ++ এবং আক্ষরিক নিউলাইন গণনাটিকে 2 চর হিসাবে গণ্য করছি।
— হেডি

এর পরিবর্তে আপনি নিজের ব্রাউজারের স্ক্র্যাচপ্যাডে চেষ্টা করে দেখতে পারেন?
— নিল

1
চতুর, +1। *পরিবর্তে ব্যবহার করুন &&।
— edc65

3

পাইথন, 76 75 বাইট

-1 বাইট @ এসপি 3000-কে ধন্যবাদ

c=lambda n,k:k>1and'\n'.join(c(n-i,k-1)for i in range(n))or'987654321'[-n:]

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

আদর্শের উপর পরীক্ষার মামলাগুলি


3

পাইথন, 86 81 80 বাইট

o=lambda d,n:"987654321"[-n:]if d<2else"\n".join([o(d-1,n-x) for x in range(n)])

d মাত্রা সংখ্যা, n গণনা সংখ্যা।

শিগগিরই একটি পোস্ট পোস্ট করবে।

সম্পাদনা # 1: এটি ল্যাম্বডায় পরিবর্তন হয়েছে।

সম্পাদনা # 2: সংরক্ষিত 1 বাইট @ ডেসক্রটিবল ওয়াটারমেলনের জন্য ধন্যবাদ।


3

হাস্কেল, 57 বাইট

n#1='\n':(show=<<[n,n-1..1])
1#_=1#1
n#k=n#(k-1)++(n-1)#k

ব্যবহারের উদাহরণ: 5 # 3-> "\n54321\n4321\n321\n21\n1\n4321\n321\n21\n1\n321\n21\n1\n21\n1\n1"।

সংজ্ঞাটির প্রত্যক্ষ বাস্তবায়ন।


2

215 বাইট রেকেট

(define(g n k(s(number->string n)))(cond [(< k 2) n]
[else(define o(for/list((i(string-length s)))
(string->number(substring s i))))(for/list((x o))(g x(- k 1)))])) 
(define(f n k)(for-each println(flatten(g n k))))

পরীক্ষামূলক:

(f 54321 3)

54321
4321
321
21
1
4321
321
21
1
321
21
1
21
1
1

উম্ম ... 3 ডি মোডে, কেন 54321দু'বার প্রদর্শিত হবে?
— এরিক আউটগলফার

আমি সমস্যাগুলি সমাধান করার চেষ্টা করছি।
— rnso

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ সমস্যাটি সংশোধন করা হয়েছে।
— rnso

শীতল, এবং আমি দেখতে পাচ্ছি যে আপনি প্রচুর সাদা জায়গা সরিয়ে ফেলেছেন!
— এরিক আউটগল্ফার

র‍্যাকেটে, ল্যাম্বডা ( λ) ব্যবহার করা সর্বদা ব্যবহারের চেয়ে কম বাইট define। এছাড়াও, জন্য ইনপুট nএকটি সংখ্যা, যার জন্য আপনি নির্মাণ করা নির্দিষ্ট হয়েছিল (range 1 n)। আপনার প্রতিস্থাপন সম্পর্কে আরও দেখুন condএকটি সঙ্গে ifউপর বাইট সংরক্ষণ, আপনি যেহেতু else।
— স্টিভেন এইচ।

2

জে, 38 37 32 বাইট

a:":@>@-.~&,0<@-."1~0&(](-i.)"0)

এটি এমন একটি ফাংশন যা LHS কে নিয়ে যায় এবং এন RHS উপর।

@ অ্যাডম থেকে আইডিয়া সহ 5 বাইট সংরক্ষণ করা হয়েছে।

ব্যবহার

   f =: a:":@>@-.~&,0<@-."1~0&(](-i.)"0)
   3 f 5
5 4 3 2 1
4 3 2 1  
3 2 1    
2 1      
1        
4 3 2 1  
3 2 1    
2 1      
1        
3 2 1    
2 1      
1        
2 1      
1        
1

ব্যাখ্যা

a:":@>@-.~&,0<@-."1~0&(](-i.)"0)  Input: k on LHS, n on RHS
                    0&(        )  Repeat k times on initial value n
                        (   )"0   For each value x
                          i.        Make the range [0, x)
                         -          Subtract x from each to make the range [x, 1]
                       ]            Return the array of ranges
            0  -."1~              Remove the zeros from each row
             <@                   Box each row
          &,                      Flatten the array of boxes
a:     -.~                        Remove the empty boxes
     >@                           Unbox each
  ":@                             Convert it into a string and return

আপনার আমার পদ্ধতির ব্যবহার করতে সক্ষম হওয়া উচিত ।
— Adám

@ অ্যাডম ধন্যবাদ, আমি এটি চেষ্টা করে দেখছি
— মাইল

2

ডায়ালগ এপিএল , 18 বাইট

এন এর জন্য প্রম্পট দেয় , তারপরে কে ।

~∘'0'⍤1⍕(⌽⍳)⍤0⍣⎕⊢⎕

~∘'0'⍤1~( ∘) শূন্যগুলি '0'থেকে ( ) জিরো ( ) সরিয়ে ফেলুন ( ⍤1প্রয়োজন অনুসারে স্পেস দিয়ে প্যাডিং করুন)

⍕ চরিত্র উপস্থাপনা

(⌽⍳)⍤0⍣⎕বিপরীত ( ⌽) গণনা ( ⍳) প্রতিটি স্কেলার ( ⍤0) অবধি , পুনরাবৃত্তি ( ⍣) ইনপুট ( ⎕) বার

⊢ চালু

⎕ সংখ্যা ইনপুট

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


2

সি 93 বাইট

Iterative বাস্তবায়ন।

m,i,j;f(n,k){for(;m<k+2;m++)for(j=0;j<n;j++){for(i=m;i<n-j;i++)printf("%d",n-j-i);puts("");}}

সি 67 65 61 56 52 বাইট

পুনরাবৃত্তিমূলক বাস্তবায়ন

f(n,k){n*k?f(n,k-1)+f(n-1,k):puts("987654321"+9-n);}

চর * ব্যবহার না করে আপনি স্ট্রিং ঘোষণা করতে পারবেন না, সুতরাং আপনার পুনরাবৃত্তির প্রয়োগটি সংকলন করে না। কিন্তু সমাধান খুব সহজ এবং 4 বাইট সংরক্ষণ: শুধু প্রতিস্থাপন mভিতরে puts()সহ কল "987654321"।
— জি স্লিপেন

আমি জিসিসি (জিসিসি) ৩.৪.৪ (সিগমিং স্পেশাল, জিডিসি 0.12, ডিএমডি 0.125 ব্যবহার করে) সংকলন করেছি। আমি মনে করি এটি ঠিক আছে যেহেতু আমি কেবল চর * থেকে ইনট-তে রূপান্তর করছি তবে আপনার দ্রবণটি 4 বাইট ছোট হওয়ায় আমি এটি আরও ভাল পছন্দ করি। ধন্যবাদ
— ক্লাবল্যাঙ্ক

1

ব্যাচ, 117 বাইট

@setlocal
@set/an=%1-1,k=%2-1,p=n*k,s=987654321
@if %p%==0 (call echo %%s:~-%1%%)else call %0 %1 %k%&call %0 %n% %2

ডেনিসের পাইথনের উত্তর বন্দর।


1

রুবি, 56 বাইট

f=->n,k{n>1&&k>1?[f[n,k-1],f[n-1,k]]:[*1..n].reverse*""}

ব্যবহার

আপনি যখন কোনও সমাধান প্রদর্শন করেন, আপনার "কার্নেল # পুটস" ব্যবহার করা উচিত।

উদাহরণ:

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