কোনও এনএক্সএনএক্সএন রুবিকের কিউবে অনুমতি দেওয়ার পরিমাণ


35

পরিচিতি:

একটি 3x3x3 রুবিকের কিউবে 43,252,003,274,489,856,000 সম্ভাব্য ক্রমশক্তি রয়েছে, যা প্রায় 43 কুইন্টিলিয়ন । আপনি আগে এই নম্বর সম্পর্কে শুনে থাকতে পারেন, তবে এটি আসলে কীভাবে গণনা করা হয়?

একটি 3x3x3 রুবিকের কিউবটির ছয় দিক রয়েছে, যার প্রতিটি নয়টি স্টিকার রয়েছে। স্টিকারের পরিবর্তে (বাহ্যিক) টুকরো তাকানো তবে আমাদের ছয়টি কেন্দ্রের টুকরা রয়েছে; আট কোণার টুকরা; এবং বারো প্রান্ত টুকরা। যেহেতু কেন্দ্রগুলি সরানো যায় না, তাই আমরা গণনার মধ্যে সেগুলি উপেক্ষা করতে পারি। কোণ এবং প্রান্ত হিসাবে:

  • আছে 8!( 40,320 ) আটটি কোণার ব্যবস্থা করার উপায়। প্রতিটি কোণে তিনটি সম্ভাব্য ওরিয়েন্টেশন রয়েছে, যদিও কেবল সাতটি (আটজনের মধ্যে) স্বাধীনভাবে ওরিয়েন্টেড করা যেতে পারে; অষ্টম / চূড়ান্ত কোণটির ওরিয়েন্টেশন পূর্ববর্তী সাতটির উপর নির্ভর করে ( ) সম্ভাবনা দেওয়া হয়েছে।372,187
  • আছে ( ) উপায়ে বারো প্রান্ত ব্যবস্থা। অর্ধেককেননা কোণগুলি যখন ঠিক তখনই প্রান্তগুলি সর্বদা একটি সমরূপে থাকতে হবে । পূর্ববর্তী এগারোটি উপর নির্ভর করে দ্বাদশ / চূড়ান্ত প্রান্তের ফ্লিপ সহ এগারো প্রান্তগুলি স্বাধীনভাবে উল্টানো যায়, ( ) সম্ভাবনা দেওয়া হয়।12!2239,500,80012!2112,0482112,048

এটি একসাথে রাখলে আমাদের নীচের সূত্রটি রয়েছে:

8!×37×12!2×211=43,252,003,274,489,856,000

সূত্র: উইকিপিডিয়া - রুবিকের কিউব অনুমান

যদিও এটি ইতিমধ্যে বেশ জটিল দেখায়, এটি এখনও 3x3x3 ঘনকটির জন্য সোজা-এগিয়ে। এমনকি কিউবগুলির জন্য সূত্রটি কিছুটা আলাদা; এটি উদাহরণস্বরূপ 4x4x4 কিউবের সূত্র:

8!×37×24!2247=7,401,196,841,564,901,869,874,093,974,498,574,336,000,000,000

যা স্বল্প স্কেলে প্রায় approximately.৪০ কোয়াটওয়ার্ডিকেলিয়ন ।

এবং বৃহত্তর এনএক্সএনএক্সএন কিউবসের জন্য (যেমন বর্তমান বিশ্ব রেকর্ড 33x33x33) সূত্রটি কিছুটা বাড়ানো হবে। তবে এই ভূমিকা খুব দীর্ঘ না করার জন্য, আমি এখানে এই লিঙ্কগুলি পরিবর্তে এখানে রেখেছি, যেখানে 4x4x4 কিউব এবং কিছু অন্যান্য আকারের এনএক্সএনএক্সএন কিউবারের ক্রমবিন্যাসের ফলাফল সূত্রের সাথে ব্যাখ্যা করা হয়েছে:

আপনি এখনই ভাবতে পারেন: কোনও এন এক্স এন এক্স এন কিউবের জন্য N ভিত্তিক কোনও সাধারণ সূত্র আছে ? অবশ্যই আছে। এখানে তিনটি সম্পূর্ণ পৃথক পৃথক অ্যালগরিদম রয়েছে, সমস্তগুলি এন এর ভিত্তিতে ঠিক একই ফলাফল দেয় :NNNN

1: ক্রিস হার্ডউইকের সূত্র:

(24×210×12!)N(mod2)×(7!×36)×(24!)14×(N22×N)(4!)6×14×(N2)2

ওল্ফ্রামআল্ফায় চেষ্টা করে দেখুন।

2: ক্রিস্টোফার মওলার ট্রিগ ফর্মুলা:

8!×37×(24!(4!)6)14×((N1)×(N3)+cos2(N×π2))×(24!)12×(N2sin2(N×π2))×(12!×210)sin2(N×π2)×124cos2(N×π2)

ওল্ফ্রামআল্ফায় চেষ্টা করে দেখুন।

3: ক্রিস্টোফার মওলার প্রাইমস সূত্র:

212×(2×N×(N+7)1711×(1)N)×3N×(N+1)+2×512×(2×N×(N2)+1+(1)N)×718×(6×N×(N2)+3+5×(1)N)×1114×(2×N×(N2)1+(1)N)×9657718×(2×N×(N2)3+3×(1)N)

যেখানে 96577 হয় (13×17×19×23)

ওল্ফ্রামআল্ফায় চেষ্টা করে দেখুন।

উত্স: কিউবারস-রেডিট - পজিশনের সংখ্যার গাণিতিক গণনা সূত্র, God'sশ্বরের সংখ্যা ইত্যাদি

চ্যালেঞ্জ:

এই তিনটি সূত্রের (বা আপনার নিজস্ব ডেরাইভেটিভ) একটি বেছে নিন এবং প্রয়োগ করুন, যা একটি ইনপুট-পূর্ণসংখ্যা দেয় N সীমার মধ্যে[2,100] , সঠিক ফলাফলের আউটপুট।

চ্যালেঞ্জ বিধি:

  • আপনি এই তিনটি ছাড়াও অন্য একটি সূত্র ব্যবহার করতে পারেন তবে মনে রাখবেন যে এই তিনটি সঠিক প্রমাণিত। আপনি যদি অন্য কোনও সূত্র ব্যবহার করেন তবে দয়া করে আপনি এটি কোথা থেকে পেয়েছেন তার একটি লিঙ্ক যুক্ত করুন (বা আপনি যদি এটির সাথে উপস্থিত হন তবে নিজেই গভীরতার ব্যাখ্যা যোগ করুন)। এবং আউটপুট সঠিক হলে আমি পরিসরের সমস্ত পূর্ণসংখ্যার জন্য যাচাই করব। এই অনুক্রমের জন্য সম্ভবত অনুপ্রেরণা খুঁজে পাওয়া যেতে পারে : A075152
  • যদি আপনার ভাষা স্বয়ংক্রিয়ভাবে কোনও বৈজ্ঞানিক আউটপুট আউটপুট করে (যেমন 1.401...×1045 4x4x4 সূত্রের পরে সংখ্যার পরিবর্তে) তবে এটি অনুমোদিত allowed তবে দয়া করে এই বৈজ্ঞানিক রাউন্ডিংটিকে সঠিক আউটপুটে রূপান্তর করতে আপনার উত্তরে অতিরিক্ত কোড যুক্ত করুন যাতে ফলাফল যাচাই করা যায়, যেহেতু আপনার কোডের সূত্রটি কার্যকর করার সময় ভাসমান পয়েন্ট যথার্থতার কারণে গোলাকার ত্রুটিগুলি অনুমোদিত নয় - আসল ফলাফলটি হওয়া উচিত সঠিক।
  • আপনার প্রোগ্রাম / ফাংশনটি কমপক্ষে [2,100] পরিসরের ইনপুটগুলির জন্য সঠিক হওয়া উচিত (যদিও, এন থেকে sinceN=100ইতিমধ্যে একটি বিশাল গাধা সংখ্যার ফলাফল রয়েছে, কোনও বৃহত্তরN সম্ভবত সেইসাথে কাজ করবে যদি আপনি সক্ষম হন এটি সঠিকভাবে আউটপুট করুন)।
  • আপনাকে কাউন্টার দিয়ে সমস্ত সম্ভাব্য ক্রম ছাড়তে লুপ করার অনুমতি নেই, কারণ এটি কোনও যুক্তিসঙ্গত পরিমাণে কখনই আউটপুট দেয় না। কেবলমাত্র একটি সূত্রের প্রয়োগ (যেগুলির সরবরাহকৃত তিনটির মধ্যে একটির, সেগুলির মধ্যে একটির ডেরাইভেটিভ, বা সম্পূর্ণ নতুন সূত্র), বা অন্য পদ্ধতি যা যুক্তিসঙ্গত পরিমাণে সঠিক ফলাফল দেবে (অবশ্যই হার্ড-কোডিং ছাড়াই) ) অনুমতি দেওয়া হয়. আমি এটি প্রয়োগের জন্য একটি যুক্ত করার কথা ভেবেছিলাম , তবে আমি ব্যক্তিগতভাবে সাথে মিশ্রিত বিরুদ্ধ , তাই আমি করব না won't তবুও, দয়া করে আপনার প্রোগ্রামটি উত্তর দেয় তা নিশ্চিত করুন এবং যদি কোনও কারণে টিআইওর জন্য খুব ধীর হয় তবে যাচাইকরণ হিসাবে আপনার স্থানীয় মেশিন থেকে আউটপুট সহ কিছু স্ক্রিনশট যুক্ত করুন।

সাধারাইওন রুল:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • আপনার উত্তরটির জন্য ডিফল্ট আই / ও বিধিগুলি সহ মানক বিধিগুলি প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং ফিরতি-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের (যেমন টিআইও ) একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন ।
  • এছাড়াও, আপনার উত্তরের জন্য একটি ব্যাখ্যা যুক্ত করা অত্যন্ত প্রস্তাবিত।

পরীক্ষার কেস:

এখানে N এর জন্য রেঞ্জের পরীক্ষাগুলি [2,10] (বড় টেস্টের ক্ষেত্রে ওল্ফ্রামআল্ফার লিঙ্কগুলি উপরে নির্দ্বিধায় ব্যবহার করুন):

n=2
3674160

n=3
43252003274489856000

n=4
7401196841564901869874093974498574336000000000

n=5
282870942277741856536180333107150328293127731985672134721536000000000000000

n=6
157152858401024063281013959519483771508510790313968742344694684829502629887168573442107637760000000000000000000000000

n=7
19500551183731307835329126754019748794904992692043434567152132912323232706135469180065278712755853360682328551719137311299993600000000000000000000000000000000000

n=8
35173780923109452777509592367006557398539936328978098352427605879843998663990903628634874024098344287402504043608416113016679717941937308041012307368528117622006727311360000000000000000000000000000000000000000000000000

n=9
14170392390542612915246393916889970752732946384514830589276833655387444667609821068034079045039617216635075219765012566330942990302517903971787699783519265329288048603083134861573075573092224082416866010882486829056000000000000000000000000000000000000000000000000000000000000000

n=10
82983598512782362708769381780036344745129162094677382883567691311764021348095163778336143207042993152056079271030423741110902768732457008486832096777758106509177169197894747758859723340177608764906985646389382047319811227549112086753524742719830990076805422479380054016000000000000000000000000000000000000000000000000000000000000000000000000000000000

দ্রষ্টব্য: যেহেতু এটি একটি চ্যালেঞ্জ, এটি মূলত এগুলি ফোটায়: যত দ্রুত সম্ভব এই তিনটি সূত্রের (বা একটি ডেরাইভেটিভ / আপনার নিজস্ব পদ্ধতি যা এখনও সঠিক ফলাফল দেয়) প্রয়োগ করুন।


2
X86-64 এ এটি করা একটি মজাদার চ্যালেঞ্জ হবে। আমার নিজের বিগিন্টটি রোল করতে হবে (সম্ভবত কেবলমাত্র একটি 256-বিট বা 512-বিট ইনট), এবং এটি আড়ম্বরপূর্ণ করে তুলবে।
moonheart08


4
লক্ষ্য করুন মাওলা এর "ত্রিকোণমিতি" সূত্র শুধু ব্যবহার এবং কোসাইন্ 2 ধন্দে পরে সে। sin2cos2floor
এটিনিট

4
@ মতিনাত, আমি মনে করি এটি আরও কার্যকর দৃষ্টিভঙ্গি হিসাবে দেখা যাচ্ছে যে ট্রিগ এবং মেঝে উভয়ই Nmod2
পিটার টেলর

2
ক্রিস্টোফারমোলা তাদের মন্তব্যগুলি ব্যক্তিগতভাবে নেবেন না। আমি অবাক হয়েছি যে আপনি এই সূত্রগুলি সন্ধান করতে পেরেছিলেন এবং প্রথমদিকে এমন নির্ভুল ভবিষ্যদ্বাণী করেছিলেন এবং আপনার সূত্রগুলি এই চ্যালেঞ্জের জন্য অন্যতম অনুপ্রেরণা ছিল of এটি কোড-গল্ফ, সুতরাং পাঠযোগ্যতা, পারফরম্যান্স, সতর্কতা, সেরা অনুশীলন, historicalতিহাসিক তাত্পর্য এবং কখনও কখনও কেবল সাধারণ জ্ঞানগুলি যদি কোনও উত্তরটিতে একটি বাইট বাঁচাতে পারে তবে এগুলি ছুঁড়ে ফেলে দেওয়া হয়। ;) অ্যাটিন্যাট এবং পিটারটেলর কেবল আপনার সূত্রের ভিত্তিতে এই জাতীয় গল্ফের পরামর্শ দিয়েছিলেন, যেহেতু এন মড 2 টি ট্রিগের চেয়ে প্রোগ্রামিং ভাষাগুলিতে ব্যবহার করা বেশ খানিকটা খাটো।
কেভিন ক্রুইজসেন

উত্তর:


12

ওল্ফ্রাম ভাষা (গণিত) , 59 বাইট matic

f@n_:=(s=24^6)(24!/s)^(m=n-2)f@m
f@2=7!3^6
f@3=4!12!2^10f@2

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

পাওয়া হারবার্ট কোসিম্বার আলগোরিদিম ব্যবহার করে পৃষ্ঠায়

এখানে পুনরাবৃত্তি সূত্র:
a(1)=1; a(2)=7!*3^6; a(3)=8!*3^7*12!*2^10; a(n)=a(n-2)*24^6*(24!/24^6)^(n-2)

@ পিটার টেলর দ্বারা 6 টি বাইট সংরক্ষণ করা হয়েছে

@ এক্সপায়ার্ড ডেটা দ্বারা আরও একটি বাইট সংরক্ষণ করা হয়েছে



এক্সপায়ার্ডডাটা খুব সুন্দর! আমিও একই চেষ্টা করে
যাচ্ছিলাম

প্রশ্নটির জন্য আপনাকে সমর্থন করার প্রয়োজন নেই f@1, সুতরাং আপনি 6 বাইট সংরক্ষণ করতে পারেন। অবশ্যই আপনি ব্যবহারের জন্য আপনার পরীক্ষার কাঠামোটি সামঞ্জস্য করতে চান Range[2,10]
পিটার টেলর

@ পিটারটেলর দুর্দান্ত পর্যবেক্ষণ ধন্যবাদ!
J42161217

@ সিএসএম দুর্ভাগ্যক্রমে চ [3] সংজ্ঞায়িত করা দরকার ther অন্যদিকে সূত্রটি ভুল ফলাফল দেয়
J42161217

9

x86 মেশিন কোড, 119 বাইট

Hexdump:

60 c6 02 02 33 db be 25 01 10 00 f6 c1 01 74 05
be 26 2a b2 36 33 ed 51 b1 06 33 ff 53 8a 04 1a
f6 e1 03 c7 b5 0a f6 f5 88 64 1a 02 66 98 8b f8
4b 79 ea 5b 43 43 f6 f5 66 89 02 84 c0 75 0c 60
8b fa 8d 72 01 8b cb f3 a4 61 4b 41 d1 ee 72 ca
75 f9 be 1d d4 0d 10 4d 79 be 59 49 49 8b e9 be
06 02 02 22 83 f9 02 73 ae c6 44 1a 01 00 80 0c
1a 30 4b 79 f9 61 c3

ফাংশনটি সংখ্যাটি nএবং ecxপূরণ করার জন্য একটি স্ট্রিংয়ের পয়েন্টার edx(যেমন receivesfastcall কনভেনশন) ।

উত্স কোডটি দেখানোর আগে এটি কীভাবে জিনিসটি করে সে সম্পর্কে কিছু ব্যাখ্যা। এটি পুনরাবৃত্ত সূত্র ব্যবহার করে, যা আমি নিম্নলিখিত উপায়ে লিখেছি:

init = 2
m1 = 24^6 = 6*8*9*16*24*32*36
m2 = 24!/24^6 = 6*7*9*10*11*17*19*21*22*23*25*26*35
num(2) = init * 6*7*9*12*15*27
num(3) = init * 6*8*9*12*16*18*20*24*27*28*30*32*33*35*36
num(n+2) = num(n) * m1 * m2^n

সুতরাং সমস্ত কোডটি করা উচিত ছোট সংখ্যার দ্বারা গুণ করা। সংখ্যাগুলি 6 ... 36 এর মধ্যে রয়েছে, যা 32-বিট বিটম্যাপে উপস্থাপনের পক্ষে যথেষ্ট ছোট। আমি আসলে বিটটি সঞ্চয় করি না যা 6 দ্বারা গুণকে উপস্থাপন করে - এটি আমাকে কোডটি একটিতে সাজিয়ে তুলতে দেয়do-while 6 টি দ্বারা নিঃশর্ত গুণক দিয়ে শুরু করে লুপে ।

দশমিক ফর্ম ব্যবহার করে বড় সংখ্যাগুলি প্রতিনিধিত্ব করা হয় - এমএসবি থেকে শুরু করে প্রতিটি বাইট 0 ... 9 ব্যাপ্তির মান হয়।

গুণটি এলএসবি থেকে এমএসবিতে করা হয়; এটি ধরে নিয়েছে যে প্রতিটি সংখ্যাটির জন্য সংখ্যাগুলি 2 দ্বারা বাড়বে। Like টির মতো একটি ছোট ফ্যাক্টর দ্বারা গুণ করার পরে, সংখ্যাগুলির সংখ্যাটি কেবল ১ দ্বারা বৃদ্ধি পেতে পারে So সুতরাং এমএসবি = 0 হলে এটি পুরো মধ্যবর্তী ফলাফলকে বামে সরিয়ে দেয়। এটি প্রকৃতপক্ষে ঘটতে পারে যে অঙ্কগুলির সংখ্যা মোটেও বাড়বে না এবং তারপরে এমএসবি এখনও 0 হবে তবে কোডটি বৃহত্তর কারণগুলিতে এগিয়ে যাওয়ার কারণে এই সমস্যাটি নিজেকে স্থির করবে।

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

সি কোড:

void num(int n, char* x)
{
    *x = 2;
    int len = 1;
    int exp_i;
    uint32_t m32_1;
    int m1;
    int carry;
    int temp;
    int str_i;
    bool cf;

    if (n % 2 == 0)
    {
        m32_1 = 0x100125; // 6*7*9*12*15*27
    }
    else
    {
        m32_1 = 0x36b22a26; // 6*8*9*12*16*18*20*24*27*28*30*32*33*35*36
    }

    exp_i = 0;
    while (true)
    {
        for (; exp_i >= 0; --exp_i)
        {
            m1 = 6;
            cf = true;
        do_mult:
            carry = 0;
            for (str_i = len - 1; str_i >= 0; --str_i)
            {
                temp = x[str_i] * m1 + carry;
                x[str_i + 2] = temp % 10;
                carry = temp / 10;
            }
            len += 2;
            x[1] = carry % 10;
            carry /= 10;
            x[0] = carry;
            if (carry == 0)
            {
                --len;
                for (str_i = 0; str_i < len; ++str_i)
                    x[str_i] = x[str_i + 1];
            }

        shift_m1:
            ++m1;
            cf = m32_1 & 1;
            m32_1 >>= 1;
            if (cf)
                goto do_mult;
            if (m32_1)
                goto shift_m1;

            m32_1 = 0x100dd41d; // 24!/24^6 = 6*7*9*10*11*17*19*21*22*23*25*26*35
        }
        --n;
        --n;
        exp_i = n;
        if (n < 2)
            break;
        m32_1 = 0x22020206; // 24^6

    }
    x[len] = 0;
    for (str_i = len - 1; str_i >= 0; --str_i)
    {
        x[str_i] += '0';
    }
}

disassembly:

60                     pushad;
C6 02 02               mov byte ptr [edx], 2; // edx = x
33 DB                  xor ebx, ebx; // ebx = len - 1
BE 25 01 10 00         mov esi, 0x100125; // esi = m32_1
F6 C1 01               test cl, 1;
74 05                  jz skip1;
BE 26 2A B2 36         mov esi, 0x36b22a26; // esi = m32_1
                   skip1:
33 ED                  xor ebp, ebp; // ebp = exp_i

                   loop_n:

51                     push ecx;
                   loop_exp_i:
B1 06                  mov cl, 6; // cl = m1
                   do_mult:
33 FF                  xor edi, edi; // edi = carry
53                     push ebx; // ebx = str_i
                   loop_str_i:
8A 04 1A               mov al, [edx + ebx];
F6 E1                  mul cl;
03 C7                  add eax, edi;
B5 0A                  mov ch, 10;
F6 F5                  div ch;
88 64 1A 02            mov [edx + ebx + 2], ah;
66 98                  cbw;
8B F8                  mov edi, eax;
4B                     dec ebx;
79 EA                  jns loop_str_i;

5B                     pop ebx; // ebx = len - 1
43                     inc ebx;
43                     inc ebx;
F6 F5                  div ch;
66 89 02               mov [edx], ax;

84 C0                  test al, al;
75 0C                  jnz skip2;

60                     pushad;
8B FA                  mov edi, edx;
8D 72 01               lea esi, [edx + 1];
8B CB                  mov ecx, ebx;
F3 A4                  rep movsb;
61                     popad;
4B                     dec ebx;
                   skip2:

                   shift_m1:
41                     inc ecx;
D1 EE                  shr esi, 1;
72 CA                  jc do_mult;
75 F9                  jnz shift_m1;

BE 1D D4 0D 10         mov esi, 0x100dd41d;

4D                     dec ebp;
79 BE                  jns loop_exp_i;

59                     pop ecx; // ecx = n
49                     dec ecx;
49                     dec ecx;
8B E9                  mov ebp, ecx;
BE 06 02 02 22         mov esi, 0x22020206;
83 F9 02               cmp ecx, 2;
73 AE                  jae loop_n;

C6 44 1A 01 00         mov byte ptr [edx + ebx + 1], 0;
                   loop_to_ascii:
80 0C 1A 30            or byte ptr [edx + ebx], '0';
4B                     dec ebx;
                       dec         ebx  
79 F9                  jns loop_to_ascii;

61                     popad;
C3                     ret;

N = 100 এর চলমান সময়টি প্রায় 4 সেকেন্ড এবং ফলাফল 38416 সংখ্যা সহ একটি সংখ্যা:

23491019577617 (এখানে অনেকগুলি সংখ্যা) ... (এখানে অনেকগুলি শূন্য) 000000000000000000


8

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

প্রাথমিক প্রচেষ্টা। ক্রিস হার্ডউইকের সূত্র
ব্যবহার করে । আরও সময় গল্ফ করার চেষ্টা করবে এবং আমার সময় পেলে ব্যাখ্যা করবে।

24©To12!PIÉm7!729®!InI·-4÷mP®IÍn4÷6*m÷

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


8

জুলিয়া 1.0 , 83 76 বাইট

n->^(24576*~12,n%2)*3^6*~7(~24)^((m=n-2)n÷4)/24^(m^2÷4*6)
~n=prod(big,1:n)

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

ক্রিস হার্ডউইকের সূত্র ব্যবহার করে। বড় পূর্ণসংখ্যা হিসাবে ইনপুট নেয়।

এইচপিউইজ -7 বাইট জন্য ধন্যবাদ


1
~=n->factorial(big(n))-> ~n=prod(big,1:n)এবং (24576*~12)^(n%2)->^(24576*~12,n%2)
এইচ.পি.উইজ

আপনি ~=n->পরিবর্তে ব্যবহার করবেন না কেন ~n=?
এইচ.পি.উইজ

@ এইচ.পি.উইজ, কেবলমাত্র আমি জানতাম না যে এটি এইভাবে কাজ করবে এবং আপনার আগের মন্তব্যেও তা লক্ষ্য করিনি :)
ক্যারিল এল।


6

ওল্ফ্রাম ভাষা (গণিত) , 67 বাইট

ক্রিস হার্ডউইকের সূত্র ব্যবহার করা।

(12!24576)^Mod[#,2]7!729(24!)^⌊#(#-2)/4⌋/24^(6⌊(#-2)^2/4⌋)&

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


2
63 বাইট । মাওলার "ট্রিগার" সূত্রের ভিত্তিতে আমার পোস্ট করতে
চলেছিল

6

জাভাস্ক্রিপ্ট (নোড.জেএস) , 81 বাইট

হারবার্ট কোসিম্বার পুনরাবৃত্তির সূত্র। ইনপুট হিসাবে একটি বিগিয়ান্ট নেয়।

f=n=>[1n,3674160n,322252536375n<<27n][--n]||f(--n)*0xb640000n*0xb88d4641131f0n**n

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


জাভাস্ক্রিপ্ট (নোড.জেএস) ,  102 98  96 বাইট

ক্রিস হার্ডউইকের সূত্র। ইনপুট হিসাবে একটি বিগিয়ান্ট নেয়।

n=>(n&1n?1403325n<<25n:4n)*918540n*0x83629343d3dcd1c00000n**(n*n-n-n>>2n)/24n**(6n*(n*n/4n-~-n))

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


6

জাভাস্ক্রিপ্ট (নোড.জেএস) , 77 75 73 বাইট

n=>0xb88d4641131f0n**(n*(n-2n)/4n)*13824n**n*851558400n**(n%2n)*315n>>14n

এটি অনলাইন চেষ্টা করুন! ক্রিস্টোফার মাওলার সূত্রের ভিত্তিতে। ইনপুট হিসাবে একটি বিগিয়ান্ট নেয়। @ আর্নল্ড থেকে নির্লজ্জভাবে পরীক্ষার জোতা চুরি হয়েছে। 0xb88d4641131f0nহয় 3246670537110000nদশমিক হবে। ব্যাখ্যা: আমি সর্বশেষ প্রধান সূচক দিয়ে শুরু করেছি এবং এটিকে সরলীকৃত করেছি n*(n-2n)/4n(এটি পূর্ণসংখ্যা বিভাগ, সুতরাং বিজোড় সংখ্যার জন্য আমার সামঞ্জস্যের প্রয়োজন নেই)। আমি তখন অন্য প্রাইমদের পরীক্ষা করে oদেখলাম যে তাদের কাফেররা এই মানটির সাথে সম্পর্কিত ছিল (যা আমি উল্লেখ করব ), এবং আমি দেখতে পেলাম যে তারা একটি ফ্যাশনের পরে ছিল, যদি আমি n(যেমন আমি উল্লেখ করব) p)। হস্তান্তরকারীদের জন্য সূত্রগুলি নিম্নরূপ:

23:       o
19:       o
17:       o
13:       o
11:      2o +   p
 7:      3o +   p +  1
 5:      4o +  2p +  1
 3: 3n + 4o +  3p +  2
 2: 9n + 4o + 14p - 14

শক্তিগুলি তখন ঘনিষ্টর দ্বারা গোষ্ঠীভুক্ত করা যায় তাই উদাহরণস্বরূপ pএর ব্যয়কারী 11*7*5**2*3**3*2**14


5

র‌্যাকেট , 151 141 বাইট

-7 বাইটস ফেডারেশন ধন্যবাদ!

(λ(n[e expt])(/(*(e 11771943321600(modulo n 2))3674160(e 620448401733239439360000(floor(/(*(- n 2)n)4))))(e 24(*(floor(/(sqr(- n 2))4))6))))

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

ক্রিস হার্ডউইকের সূত্র ব্যবহার করে দীর্ঘতম উত্তর :)


1
আপনি একটি λ (2 বাইটস) জন্য সংজ্ঞায়িত পরিবর্তন হতে পারে, এবং তিন থেকে আরো 3 বাইট সংরক্ষণ করতে একটি অতিরিক্ত প্যারামিটার জন্য একটি ডিফল্ট মান ব্যবহার exptকলগুলি: (λ(n[e expt])...(e ...)...)
ফেডারেশন এস।

@fedes। ধন্যবাদ!
গ্যালেন ইভানভ

4

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

import math
f=math.factorial
x=lambda n:(1,f(7)*729,f(8)*3**7*f(12)*1024)[n-1]if n<4else x(n-2)*24**6*(f(24)/24**6)**(n-2)

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

হারবার্ট কোসিম্বা পুনরাবৃত্তি পদ্ধতি ব্যবহার করে।

-2 বাইট হারম্যান এলকে ধন্যবাদ


2 বাইট প্রতিস্থাপন সংরক্ষণ করা যাবে 3**6729 এবং 2**10সঙ্গে 1024 Tio
হারমান এল

আরে, দুর্দান্ত ধরা!
14

আপনার নিজের ফ্যাক্টরিয়াল ফাংশনটি সংজ্ঞায়িত করা 3 বাইট সংক্ষিপ্ত
এভিএস


4

জেলি ,  39  38 বাইট

আমার মনে হচ্ছে আমি কিছু গল্ফ মিস করেছি তবে ...

12!×⁽^K*Ḃɓ_2×ṭ¥⁸:4×1,6“ð¥‘!¤*:/ד9Ḟɠ’×

ক্রিস হার্ডউইকের ফর্মুলা বাস্তবায়নকারী একটি মোনাডিক লিঙ্ক।

এটি অনলাইন চেষ্টা করুন! অথবা পরীক্ষা-স্যুট (n=[1..33]) দেখুন।


3

সিজেএম (47 বাইট)

qi[1_7m!Z6#*_3*Cm!*2D#*]{2-_j24_m!\6#:P/@#*P*}j

অনলাইন ডেমো

a(n)={1 if n{0,1}7!×36 if n=2a(n1)×3×12!×213 if n=3a(n2)×(24!246)n2×246 if n>3
j




2

C (gcc) -lgmp, 279 বাইট

#include "gmp.h"
#define s mpz_init_set_str
#define m(X)mpz_##X
f(int N,m(t)_){m(t)x;m(init)(x);m(init_set_str)(_,N&1?"3LFbOUwC":"1",62);m(mul_si)(_,_,3674160);m(fac_ui)(x,24);m(pow_ui)(x,x,(N*N-2*N)/4);m(mul)(_,_,x);m(set_si)(x,24);N-=2;m(pow_ui)(x,x,6*N*N/4);m(tdiv_q)(_,_,x);}

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


1
সুপারিশ N--*--N/4পরিবর্তে (N*N-2*N)/4এবং অপসারণ N-=2এবং#define s mpz_init_set_str
ceilingcat


2

হাস্কেল , 86 85 74 বাইট

এইচপিউইজ -1-বাইট সংরক্ষিত ধন্যবাদ
-১১ বাইট ম্যাক্স ইয়েখলাভকে ধন্যবাদ জানায়

a=24^6
r 2=3674160
r 3=r 2*a*61600
r n=r(n-2)*a*div(product[2..24])a^(n-2)

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


1
245762^13*3
H.PWiz



1

হুশ , 51 48 44 বাইট

-4 বাইট H.PWiz ধন্যবাদ

÷^*6÷4□-2⁰Π4*^÷4-D⁰□⁰Π24*729*Π7^%2⁰*24576Π12

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

এটি ক্রিস হার্ডউইকের সূত্র। এছাড়াও, এটি আমার প্রথম ভুসি প্রোগ্রাম, সুতরাং কোনও পরামর্শ টি প্রশংসা করবে।


1
এখানে একটি সহজ 2 বাইট রয়েছে:÷^*6÷4□-2⁰Π4*^÷4-D⁰□⁰Π24*729*Π7^%2⁰*24*1024Π12
এইচপিউইজ

1
বা, আরও ভাল,÷^*6÷4□-2⁰Π4*^÷4-D⁰□⁰Π24*729*Π7^%2⁰*24576Π12
এইচ.পি.উইজ

1

এখানে চিত্র বর্ণনা লিখুন

সি ++, 187 185 180 176 195 (একটি বাগ ছিল) 193 175 বাইট (সিলিং বিড়ালের সাহায্যে)

এটি জিএমপি সি ++ র‌্যাপার (জিএনইউ মাল্টি-প্রিসিশন লাইব্রেরি) এবং @ জে 212161217 ( https://codegolf.stackexchange.com/a/183381/55953 ) দ্বারা ব্যবহৃত সূত্র ব্যবহার করে ।

g++ -g rubix.cpp -lgmp -lgmpxxসংকলন এবং লিঙ্ক ব্যবহার করুন

#include <gmpxx.h>
#define R return
using z=mpz_class;z p(z a,z b){z c=1;while(b--)c*=a;R c;}z r(z n){if(n==2)R 3674160;if(n==3)R z("pX4dIaR7jDk",62);R r(n-2)*p(24,6)*p(z("ErvSErbeq",62),n-2);}

পরীক্ষার কোড সহ দীনহীন

#include <gmpxx.h>
#include <iostream>
mpz_class p(mpz_class a, mpz_class b) // returns a to power of b. Only works for b  = positive integer
{
    mpz_class c=1;

    while(b--)
        c*=a;

    return c;
}


mpz_class r(mpz_class n) // returns the rubix permutations for a cube of size n
{
    if(n==2)
        return 3674160; // 7!*3^6;

    if(n==3)
        return z("pX4dIaR7jDk",62); // 43252003274489856000 = 8!*3^7*12!*2^10

    return r(n-2) * p(24,6) * p(z("ErvSErbeq", 62), n-2);

    // "ErvSErbeq"base 62 = 3246670537110000 = (24!/24^6)        
}    

main()
{
    for(int i=2; i<34; i++)
        std::cout<<i<<'\t'<<r(i) << std::endl;
}

https://tio.run/##PZAxb4MwEIV3foWVDrETqBpARMImWZqha7t0iFQZ4xC3xrg2tJERf73UIVXfcE937zvpdEzrqGZsmu6EYrKvOKkbfbncn3dBb4WqgSsa7d6YpNZiBzR0gIYOlGhwgBUb/H0WksMyihBbFRQb3vVGAYZHB4xnFRr@Rqoo4n2SbdNN9pD7Jtk7uNCvafVEn7fvjx@LMItRbqCKYrTSME7D7OoeOpivl4Mp@eeMhFcAj//3AiJa2xlOm13QUKEgCoYAeJ1aA4XqgChiDARJUl/XazRnXrar8py1fUeIIGR57JaE@AUECLllXFUSB2Mw/bCTpLWdIjm/5ua/


আপনি কি n=10পরীক্ষার ক্ষেত্রে একটি স্ক্রিনশট যুক্ত করতে পারেন, তাই আমি যাচাই করতে পারি যে এটি কাজ করে? আমার ধারণা , ব্যবহৃত লাইব্রেরির কারণে C ++ (ঝনঝন) বা C ++ (gcc) টিআইওতে এই কাজ করার কোনও উপায় নেই ?
কেভিন ক্রুইজসেন

argg। এটি এন এর বিজোড় মানের জন্য কাজ করছে না
সিএসএম

1
স্ক্রিনশটের জন্য ধন্যবাদ, এবং ভাল যে আপনি ত্রুটিটি চিহ্নিত করতে এবং এটি সমাধান করতে সক্ষম হয়েছেন good আমার কাছ থেকে +1 :)
কেভিন ক্রুইজসেন


টা @ এসিলিংক্যাট। # ডিফাইন ফেরতের আর দরকার নেই, কারণ কেবল দুটি রিটার্ন পয়েন্ট রয়েছে
সিএসএম

1

টিআইবি-বেসিক, 63 62 বাইট , (noncompeting)

{fPart(.5Ans),1,1,-6}int(4⁻¹{8,4,Ans²-2Ans,(Ans-2)²:prod({9*11!2^15,7!3^6,24!,24}^Ans

এক্সপ্রেশন যা পূর্ণসংখ্যা হিসাবে ইনপুট নেয় Ans। ক্রিস হার্ডউইকের সূত্রটি বাস্তবায়ন। নন-কেপটিং কারণ এটি যে হার্ডওয়্যারটি চালায় কেবলমাত্র 16 টি দশমিক স্থান পর্যন্ত সঞ্চয় করবে, সুতরাং উত্তরটি কখনই 100% নির্ভুল হবে না।

ব্যাখ্যা:

{fPart(.5Ans),1,1,-6}              # the list {(N (mod 2))/2,1,1,-6}
                                   # implicitly multiplied by
int(4⁻¹{8,4,Ans²-2Ans,(Ans-2)²     # the list {2,1,⌊¼(N²-2N)⌋,⌊¼(N-2)²⌋}
:                                  # store this list of the formula's exponents as Ans
     {9*11!2^15,7!3^6,24!,24}      # list of the formula's bases
                             ^Ans  # raised to their exponents
prod(                              # multiplied together
                                   # implicit print
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.