এই পিরামিড তৈরি করুন


21

তোমার পিরামিড

আপনি যে পিরামিডটি তৈরি করতে চান তা সম্পূর্ণ কিউব দিয়ে তৈরি। এটিতে 24 টি স্তর রয়েছে এবং শীর্ষে থাকা N স্তরটিতে এন বর্গ দ্বারা একটি এন-তে সাজানো N 2 কিউব রয়েছে । পিরামিডটি দেখতে এমন দেখাচ্ছে:

পিরামিড

পিরামিড তৈরি করতে আপনার কিউব সরবরাহের প্রয়োজন হবে। আপনাকে 70 বাই 70 স্কোয়ারে সাজানো 4900 কিউব দেওয়া হচ্ছে যা দেখতে দেখতে এটি:

বর্গাকার

(ঠিক আছে, আমি স্বীকার করি যে স্কয়ারের চিত্রটি সম্পূর্ণ অপ্রয়োজনীয়))

1 2 + 2 2 + 3 2 + ... + 24 2 = 70 2 সাল থেকে , পিরামিডটি তৈরি করতে আপনার কাছে ঠিক সঠিক সংখ্যক কিউব রয়েছে। আপনাকে যা করতে হবে তা হ'ল আমাকে জানাতে হবে যে প্রতিটি ঘনক্ষেত্র কোথায় যাওয়া উচিত।

তোমার কাজ

আপনার বর্গাকার কিউব এবং পিরামিডের কিউবগুলির মধ্যে একটি স্বেচ্ছাসেবী চয়ন করা উচিত। (যদি আপনার উত্তরটি 4900 টির মধ্যে যেটি বলে! আপনি যে বিভাজন ব্যবহার করছেন তা ভাল লাগবে))

তারপরে, একটি ফাংশন বা প্রোগ্রাম লিখুন যা নিম্নলিখিতগুলি করে:

  • 70 বাই 70 বর্গক্ষেত্রে একটি কিউবের অবস্থান দেওয়া (স্থানাঙ্কের জুড়ি হিসাবে (X,Y)),
  • পিরামিডে এর অবস্থান আউটপুট করুন (স্থানাঙ্কের ট্রিপল হিসাবে (A,B,C))।

ইনপুট এবং আউটপুট স্থানাঙ্কগুলি সবগুলি 0-সূচিযুক্ত বা 1-ইনডেক্সড হতে পারে। 1-ইনডেক্সযুক্ত ধরে নিলে, আপনার ইনপুটটি (X,Y)1 থেকে 70 এর মধ্যে একটি পূর্ণসংখ্যার জোড় (A,B,C)হবে Your আপনার আউটপুটটি পূর্ণসংখ্যার একটি ট্রিপল হবে; Aউপরের থেকে স্তরটি গণনা করা উচিত (1 থেকে 24 এর মধ্যে) এবং (B,C)সেই স্তরটির মধ্যে (1 এবং 1 এর মধ্যে A) সেই ঘনকটির স্থানাঙ্ক হওয়া উচিত ।

উদাহরণ স্বরূপ:

  • পিরামিডের উপরের কিউবটির স্থানাঙ্ক রয়েছে (1,1,1)
  • পিরামিড বেস চার কোণায় আছে স্থানাঙ্ক (24,1,1), (24,1,24), (24,24,1), এবং (24,24,24)
  • আপনি যদি পিরামিডের কোণে বর্গাকার কোণগুলি রাখার সিদ্ধান্ত নেন তবে ইনপুটতে (70,1)আপনি আউটপুট দিতে পারেন (24,24,1)

আপনি ধরে নিতে পারেন আপনাকে কেবল (X,Y)ইনপুট হিসাবে বৈধ স্থানাঙ্ক দেওয়া হবে । নির্ভুলতা সম্পূর্ণরূপে নিম্নলিখিত বিধি দ্বারা নির্ধারিত হয়: দুটি পৃথক বৈধ ইনপুট সর্বদা দুটি পৃথক বৈধ অনপুট দেওয়া উচিত।

এটি : সংক্ষিপ্ততম কোডটি জয়ী।

উত্তর:


7

জেলি , 15 14 বাইট

24p;€$€Ẏ
ḅ70ị¢

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

এটি মোটামুটি সহজ: আমরা পিরামিডের মধ্যে কিউবগুলির স্থানাঙ্কের তালিকাটি একটি আসল তালিকা হিসাবে তৈরি করি। তারপরে আমাদের যা করতে হবে তা হল বর্গাকার মধ্যে ইনপুট স্থানাঙ্কগুলিকে তালিকার মধ্যে একটি সূচক হিসাবে বাইক করা, যা বেস রূপান্তরকরণের মাধ্যমে করা তুচ্ছ।

এই জমাটি পুরো প্রোগ্রাম হিসাবে কাজ করে ( [x, y]প্রথম কমান্ড লাইন আর্গুমেন্টের মাধ্যমে স্থানাংক গ্রহণ এবং স্ট্যান্ডার্ড আউটপুটে আউটপুটটিং), বা কোনও ফাংশন হিসাবে, পুরোপুরি নামকরণ করা হয় 2Ŀ

ব্যাখ্যা

তালিকা তৈরি করা

আমরা সংখ্যাটি দিয়ে শুরু করি 24, যা 1 থেকে 24 সমেত অন্তর্ভূক্ত হিসাবে ব্যাখ্যা করা হয় (কারণ আমরা এটি ব্যবহার করার চেষ্টা করছি যেন এটি একটি তালিকা ছিল)। তারপরে আমরা এর উপর পুনরাবৃত্তি করি; প্রোগ্রামে শেষটি তাই করে। তালিকার প্রতিটি উপাদান n এর জন্য:

  • আমরা জোড়া তালিকা গঠন করা এক্স , Y যেখানে প্রতিটি উপাদান 1 থেকে আসে .. এন ; pদুটি সেট উপাদানের দেওয়া জোড়ের তালিকা তৈরি করে এবং এখানে কেবলমাত্র একটি মান পাওয়া যায় ( এন ), এটি উভয় সেটগুলির জন্য স্পষ্টতই ব্যবহৃত হয়, যা উভয়ই 1 .. এন থেকে তালিকা হয়ে যায় ।
  • আমরা তালিকার প্রতিটি উপাদানগুলিতে এন (আবার, আমাদের উপলব্ধ একমাত্র মান ;€) যুক্ত করি।
  • দ্বিতীয়টি প্রতিটি এনগুলিতে এই দুটি অপারেশন প্রয়োগ করার জন্য (অর্থাত্ দুটি নির্দেশাবলীযুক্ত একটি লুপ তৈরি করতে), আমরা $দুটি নির্দেশকে একটিতে বিভক্ত করে ব্যবহার করি ।

পরিশেষে, আমরা তালিকাকে এক পর্যায়ে সমতল করতে ব্যবহার করি , যাতে একটি তালিকা পাওয়া যায় যাতে সহজভাবে সমস্ত স্থানাঙ্ক থাকে order এটি এর শুরু হয়:

[1, 1, 1], [1, 1, 2], [1, 2, 2], [2, 1, 2], [2, 2, 2], [1, 1, 3], [1 , 2, 3], [1, 3, 3], [2, 1, 3], [2, 2, 3], [2, 3, 3], [3, 1, 3], [3, 2 , 3], [3, 3, 3], [1, 1, 4], [1, 2, 4], [1, 3, 4], [1, 4, 4], [2, 1, 4 ], [2, 2, 4], [2, 3, 4], [2, 4, 4], [3, 1, 4], [3, 2, 4], [3, 3, 4], [3, 4, 4], [4, 1, 4], [4, 2, 4], [4, 3, 4], [4, 4, 4],…

এবং [24, 24, 24] এর সাথে শেষ হয়।

তালিকাটি সূচীকরণ করা হচ্ছে

আমরা সংখ্যাকে বেস 70 পূর্ণসংখ্যা: ḅ70 হিসাবে ব্যাখ্যা করে কোনও সংখ্যায় ইনপুট স্থানাঙ্ক রূপান্তর করে শুরু করি। এটি আমাদের 71 থেকে 4970 সমেত সীমার মান দেয়; এই সব মান অনন্য গেলিক ভাষার 4900. হয় , তালিকায় ইনডেক্স তালিকার দৈর্ঘ্য modulo তাই [1, 1]আমাদের 71st উপাদান দেবে [1, 2]72nd উপাদান, সব রাস্তা ধরে [70, 70]যা আমাদের জন্য উত্তর আগে 70th উপাদান (যেমন উপাদান দেয় [1, 1])। পরিশেষে, আমাদের কেবল ¢সূচি তালিকাতে আমাদের জানাতে একটি দরকার (এই ক্ষেত্রে এটি পূর্ববর্তী লাইনের দ্বারা নির্দিষ্ট তালিকা; এটি সেটাই ¢করে, কোনও যুক্তি ছাড়াই পূর্ববর্তী লাইনটি চালায়)।



6

পিএইচপি, 75 82 78 বাইট

0-ইনডেক্সড :

পি = এক্স * 70 + ওয়াই সেট করুন তারপরে সঠিক স্তরে যাওয়ার সময় পি 2 কে কমিয়ে দিন । এ-1; পি / এ; পি% এ - সম্পন্ন

(বিপরীত: এটিকে সঠিক স্তরে বাড়ানোর সময়: পি = পি + এ 2 তারপরে পি = পি + এ * বি + সি -> এক্স = পি / ,০, ওয়াই = পি% )০)

for($p=$argv[1]*70+$argv[2];$p>=++$a**2;$p-=$a**2);echo$a-1,_,$p/$a|0,_,$p%$a;

সাথে চালানো php -nr '<code>' <X> <Y>; A_B_C প্রিন্ট করে।

1-ইনডেক্সড, 82 বাইট :

for($p=$argv[1]*70+$argv[2]-71;$p>++$a**2;$p-=$a**2);echo$a,_,$p/$a+1|0,_,$p%$a+1;

1
পরিবর্তে আপনার কি পি * X * 70 + Y সেট করা উচিত নয়?
মিশা লাভরভ

4

পাইথন, 80 73 72 বাইট

প্রথম জমা, খুব কঠোর হবেন না প্রশ্ন:

0-ইন্ডেক্স

lambda x,y:[(a-1,b//a,b%a)for a in range(25)for b in range(a*a)][70*x+y]

সমস্ত পিরামিড স্থানাঙ্ক সহ 4900 দৈর্ঘ্যের একটি তালিকা তৈরি করে এবং প্রতিটি ইনপুটটির জন্য আলাদা তালিকা এন্ট্রি প্রদান করে।

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


সাইটে স্বাগতম এবং প্রথম প্রথম পোস্ট! পাইথন গল্ফার প্রচুর আছে যারা আপনার সমাধানটি এখানে প্রায় গল্ফ করার চেষ্টা করতে আগ্রহী এবং আমি আশা করি আপনি পিপিসিই উপভোগ করবেন!
কেয়ার্ড কোইনারিংহিংহ

আপনি একটি বাইট সংরক্ষণ করতে সংক্ষিপ্ত a**2করতে a*aপারে।
লুক

বাহ, একটি সহজ এক। ধন্যবাদ।
প্যাটাক্স


3

সি 89 , 87 , 82 , 71 বাইট

এক্সনরের পাইথন সলিউশন নিয়েছিল এবং লাইনব্রেকটি সরিয়ে নিয়েছে

p(x,y){for(x=-70*y-x,y=1;x<0;x+=++y*y);printf("%d %d %d",~-y,x/y,x%y);}

0-ইন্ডেক্স

z;p(x,y){for(x+=y*70+1,y=z=0;z<x;z+=++y*y);z-=x;printf("%d %d %d\n",y-1,z/y,z%y);}

1-ইন্ডেক্স

z;p(x,y){for(x+=~-y*70,y=z=1;z<x;z+=++y*y);z-=x-y;printf("%d %d %d\n",y,z/y,z%y+1);}

আমি মনে করি এটি 1-ইনডেক্স সংস্করণে z / y + 1 হওয়া উচিত।
টাইটাস

@ টিটাস আমি দেখতে পাচ্ছি না কেন, এটি
ওপির

2

ব্যাচ, 103 বাইট

@set/an=%1*70+%2,i=0
:l
@set/an-=i*i,j=i,i+=1,k=n%%i,l=n/i
@if %l% geq %i% goto l
@echo %j% %k% %l%

0-ইন্ডেক্স। উপর থেকে শুরু করে প্রতিটি স্তর মাধ্যমে কাজ করে।


2

জে, 37 বাইট

-4 বাইট ধন্যবাদ ফ্রাউনফ্রোগের জন্য

(a:-.~,(<:,&.>{@;~&i.)"0 i.25){~70&#.

জেলিতে জেলি পদ্ধতির মোটামুটি সোজা অনুবাদ। 0 ইনডেক্সিং ব্যবহার করে। শীর্ষ পিরামিড বর্গক্ষেত্রটি প্রথম। বেসের নীচে ডান কোণটি সর্বশেষ।

ধ্রুবক হিসাবে ট্রিপল ইনডেক্স তালিকা তৈরি করতে কোডের সিংহভাগই বয়লারপ্লেট। 2 তালিকার ইনপুটের ভিত্তিতে সেই তালিকার মধ্যে সঠিক উপাদানটি সন্ধান করা কেবল বেস 70 এর সাথে অনুবাদ করার বিষয়70&#.

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



ধন্যবাদ জে আমার সাথে প্রায়শই ঘটে যায়, আমি সেই কৌশলটি আগে ব্যবহার করেছি এবং এই ক্ষেত্রে এটি ভুলে গিয়েছি। বিটিডব্লিউ, আপনি এই প্রশ্নে আগ্রহী হতে পারেন , যা এই সমস্যা থেকে অনুপ্রাণিত হয়েছিল।
জোনা

1

হুশ , 13 বাইট

!foEG▲π3Π4B70

এটি অনলাইন চেষ্টা করুন! সূচকগুলি 1 থেকে শুরু হয়।

ব্যাখ্যা

কিছু অন্যান্য উত্তরের মতো, আমি পিরামিড স্থানাঙ্কগুলির পুরো তালিকাটি তৈরি করি এবং এটিতে কেবল সূচক। আমি এটি সমস্ত ত্রিপল তালিকাবদ্ধ করে [A,B,C]যেখানে সংখ্যা 1 থেকে 24 এর মধ্যে রয়েছে (একটি বাইট সংরক্ষণ করতে 4 হিসাবে প্রকাশ করা হয়েছে) এবং যার জন্য রেখেছি A >= max(B,C)

!foEG▲π3Π4B70  Implicit input: a list of two numbers.
          B70  Interpret in base 70.
!              Modular index into the following list:
        Π4      Factorial of 4: 24
      π3        Take range and 3-fold Cartesian power: [[1,1,1],[1,1,2],..,[24,24,24]]
 f              Filter by
  oE            all values are equal
    G▲          in cumulative reduce by maximum.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.