গণিত, 159 100 87 86 85 বাইট
n=3;1-Mean@Sign[##&@@Norm/@({1,0,0,-1}~t~n.Partition[#,2,1,1])&/@{1,-1}~(t=Tuples)~n]
পরিবর্তন nকরতে শুরুতে পরিবর্তনশীল সংজ্ঞাটি পরিবর্তন করুন।
যেহেতু এটি নিষ্ঠুর শক্তি এটি মোটামুটি ধীর, তবে এখানে প্রথম আটটি ফলাফল রয়েছে:
n P(n)
1 1/2
2 3/8
3 7/32
4 89/512
5 269/2048
6 903/8192
7 3035/32768
8 169801/2097152
শেষটি ইতিমধ্যে 231 সেকেন্ড সময় নিয়েছে এবং রানটাইম মারাত্মকভাবে তাত্পর্যপূর্ণ।
ব্যাখ্যা
যেমন আমি বলেছিলাম এটি নিষ্ঠুর শক্তি। মূলত, আমি কেবল সমস্ত সম্ভাব্য গণনা করছি Aএবং B, প্রতিটি সম্ভাব্য জোড়ের জন্য দুটি ডট পণ্য গণনা করব এবং তারপরে প্রাপ্ত জোড়গুলির ভগ্নাংশটি পাই {0, 0}। গাণিতিকের সংমিশ্রণ এবং লিনিয়ার বীজগণিত ফাংশন এটিকে গল্ফ করতে বেশ সহায়ক ছিল:
{1,-1}~(t=Tuples)~n
এটি সমস্ত এন-টিপলস যুক্ত 1বা -1, যেমন সমস্ত সম্ভব সমন্বিত করে A। জন্য n = 3যে:
{{1, 1, 1},
{1, 1, -1},
{1, -1, 1},
{1, -1, -1},
{-1, 1, 1},
{-1, 1, -1},
{-1, -1, 1},
{-1, -1, -1}}
গণনা করতে Bআমরা প্রায় একই কাজ:
{1,0,0,-1}~t~n
পুনরাবৃত্তি করে 0, আমরা প্রতিটি টিপল 0এতে থাকা প্রতিটিটির জন্য নকল করি, যার ফলে বা 0হিসাবে সম্ভবত দ্বিগুণ হয়ে যায় । আবার উদাহরণ হিসাবে ব্যবহার :1-1n = 3
{{-1, -1, -1},
{-1, -1, 0}, {-1, -1, 0},
{-1, -1, 1},
{-1, 0, -1}, {-1, 0, -1},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 1}, {-1, 0, 1},
{-1, 1, -1},
{-1, 1, 0}, {-1, 1, 0},
{-1, 1, 1},
{0, -1, -1}, {0, -1, -1},
{0, -1, 0}, {0, -1, 0}, {0, -1, 0}, {0, -1, 0},
{0, -1, 1}, {0, -1, 1},
{0, 0, -1}, {0, 0, -1}, {0, 0, -1}, {0, 0, -1},
{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
{0, 0, 1}, {0, 0, 1}, {0, 0, 1}, {0, 0, 1},
{0, 1, -1}, {0, 1, -1},
{0, 1, 0}, {0, 1, 0}, {0, 1, 0}, {0, 1, 0},
{0, 1, 1}, {0, 1, 1},
{1, -1, -1},
{1, -1, 0}, {1, -1, 0},
{1, -1, 1},
{1, 0, -1}, {1, 0, -1},
{1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0},
{1, 0, 1}, {1, 0, 1},
{1, 1, -1},
{1, 1, 0}, {1, 1, 0},
{1, 1, 1}}
এখন, প্রতিটি সম্ভাব্যতার জন্য A, আমরা তাদের Bসাথে A[1 .. n]এবং উভয়ই সম্ভব তাদের প্রত্যেকের বিন্দু পণ্য চাই A[2 .. n+1]। উদাহরণস্বরূপ, যদি আমাদের বর্তমান Aহয় {1, 1, -1}, আমরা উভয় {1, 1, -1}এবং সাথে বিন্দু পণ্য চাই {1, -1, 1}। যেহেতু আমাদের Bসমস্ত ইতিমধ্যে ম্যাট্রিক্সের সারি সুবিধার্থে, আমরা Aঅন্য দুটি ম্যাট্রিক্সের কলাম হিসাবে দুটি সাবলিস্ট চাই , যাতে আমরা তাদের মধ্যে একটি সাধারণ ডট পণ্য গণনা করতে পারি। তবে ট্রান্সপোসিং {{1, 1, -1}, {1, -1, 1}}সহজভাবে দেয় {{1, 1}, {1, -1}, {-1, 1}}যা কেবলমাত্র 2-উপাদানগুলির চক্রীয় সাবলিস্টগুলির একটি তালিকা A। এটি এটি করে:
Partition[#,2,1,1]
সুতরাং আমরা এটি গণনা করি এবং আমাদের তালিকার সাথে ডট পণ্যটি গ্রহণ করি B। যেহেতু আমরা এখন একটি নেস্টেড তালিকা পেয়েছি (যেহেতু প্রতিটি সম্ভাব্য Aপৃথক ভেক্টর দেয়) তাই আমরা তাদের সমেত চ্যাপ্টা করি ##&@@।
খুঁজে বের করতে যদি একজোড়া {x, y}হয় {0, 0}আমরা গনা Sign[Norm[{x,y}]] যেখানে Normদেয় √(x²+y²)। এটি দেয় 0বা 1।
অবশেষে, যেহেতু আমরা এখন শুধু ভগ্নাংশ জানতে চাই 1এর একটি তালিকায় গুলি 0s এবং 1আমাদের যা দরকার গুলি তালিকার গাণিতিক গড় হয়। যাইহোক, এটি কমপক্ষে একটি ডট পণ্য উভয়ের শূন্য-না হওয়ার সম্ভাবনা অর্জন করে, তাই আমরা 1কাঙ্ক্ষিত ফলাফল পেতে এটিকে বিয়োগ করি ।
nসহায়ক হবে। এছাড়াও সম্ভবত এ, বি এবং দুটি অভ্যন্তরীণ পণ্যগুলির স্পষ্ট উদাহরণ হতে পারে।