এখন আমরা n মাত্রায় চিন্তা করছি!


9

প্রশ্ন: প্রদত্ত একটি একটি সংখ্যা n≥ 2, কত স্বতন্ত্র পয়েন্ট জোড়া একটি অন n-dimensional n x n x n x n x n x n ... x nজাফরি, যেখানে স্থানাঙ্ক থেকে পরিসীমা 0থেকে n - 1, কোনো দূরত্বে হয় অন্তত n পৃথক্? জোড়া {(2,1,3,1), (3,2,1,3)}এবং {(3,2,1,3), (2,1,3,1)}একে অপরের থেকে পৃথক হিসাবে বিবেচিত হয় না, কারণ এগুলি বিপরীত ক্রমে একই দুটি পয়েন্ট নিয়ে গঠিত। নোট করুন যে জোড়ের মোট সংখ্যা খুব দ্রুত বৃদ্ধি পায়। মোট জোড়া সংখ্যা যায় 6, 351, 32 640, 4 881 250, 1 088 367 840, ইত্যাদি

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

2 -> 0 (all pairs are at most a distance of sqrt(2) < 2 apart)
3 -> 28 (They must either be (2,2,1) or a permutation apart, or (2,2,2) apart. Each corner
has three non-corner (2,2,1) points corresponding to it. And each corner is associated 
with a corner pair that is a (2,2,2). Thus. 3.5 * 8 = 28.
4 -> 4,888
5 -> 1,501,948
6 -> 486,039,360 (I would like someone to verify this if possible)

আপনার কোডটি কমপক্ষে তত্ত্ব অনুসারে n <= 5 এর জন্য কাজ করা উচিত। এটিকে হার্ডকোড করবেন না, এটি একটি আদর্শ ফাঁক।



^ এমন একটি প্রোগ্রাম যা n=15সহজেই ফলাফল তৈরি করতে পারে
লিকি নুন

tinyurl.com/ya2kmb24 <- সিতে পোর্ট করা হয়েছে যা গণনা করতে পারে n=20তবে ওভারফ্লোতে খুব বেশি ভোগে
লিকি নুন

আপনি কিভাবে দূরত্ব পরিমাপ করছেন? ইউক্লিডিয়ান মেট্রিক? বা প্রদত্ত যে এটি একটি জালিয়াতি আপনি L_1 ব্যবহার করছেন?
পিটার টেলর

পরীক্ষার কেসগুলি থেকে @ পিটারটেলর, এটি স্পষ্ট যে আমরা ইউক্যালিডিয়ান দূরত্ব ব্যবহার করছি all pairs are at most a distance of sqrt(2) apartতবে এটি আরও স্পষ্টভাবে নির্দিষ্ট করা উচিত।
জিউসেপ

উত্তর:


3

এমএটিএল , 12 বাইট

tt:Z^tZPR>~z

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

ব্যাখ্যা

tt   % Implicit input n. Duplicate twice
     % STACK: n, n, n
:    % Range [1 2 ... n]
     % STACK: n, n, [1 2 ... n]
Z^   % Cartesian power. Gives an n^n × n matrix C where each row is a Cartesian tuple
     % STACK: n, C
t    % Duplicate
     % STACK: n, C, C
ZP   % Euclidean distance. Gives an n^n × n^n matrix D of pairwise distances
     % STACK: n, D
R    % Upper triangular part: sets elements below the main diagonal to 0. Call that U
     % STACK: n, U
>~   % Less than or equal? Element-wise. Gives a true-false matrix B
     % STACK: n, B
z    % Number of nonzeros. Implicitly display
     % STACK: number of entries in B that equal true

2

জেলি , 14 13 বাইট

ডেনিসকে 1 বাইট ধন্যবাদ।

ṗ⁸Œc_/€ÆḊ€<ċ0

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

কুইক মফস সংস্করণ

ŒgL€!P:@L!$×P
²S<
ḶœċçÐḟ²ð>0S’2*×⁸ạ⁹$Ѥð€S

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


এটি চালানোর জন্য আপনি কোন দোভাষী ব্যবহার করেন? আমি এটা চেষ্টা করতে চাই কিন্তু Tio অত্যন্ত ধীর এন = 5 জন্য (1 মিনিট পর সময় শেষ হয়েছে) হল prntscr.com/hqbcph
পাতানো

@ bushdid911 আপনি সীমাটি ভাঙার চেষ্টা করলে সীমাটি ভেঙে যাবে
লিকি নুন

আপনি প্রতিস্থাপন করতে পারেন æ.`½সঙ্গে ÆḊ€
dylnan

@ bushdid911 এটি চালাতে পারে n=5, এক মিনিটের মধ্যেই নয়। (এটি মহাবিশ্বের বয়সের চেয়ে বেশি সময় নিতে পারে, সতর্কতা অবলম্বন করুন) এটি দ্রুততম কোড নয়, তবে কেন আপনার কোডটি দ্রুত চালানো বিরক্ত করবেন?
ব্যবহারকারী 202729

1
@ bushdid911 আমি একটি দ্রুত সংস্করণ তৈরি করেছি er
লিকি নুন

2

পাইথন 2 , 137 133 বাইট

lambda n:sum(n*n<=sum((o[i]-p[i])**2for i in range(n))for o,p in q(q(range(n),repeat=n),repeat=2))/2
from itertools import*
q=product

মিঃ এক্সকোডার ও ওভস: -4 বাইট। এটি অনলাইন চেষ্টা করুন!


135 বাইট । (অন্তর্ভুক্ত করার দরকার নেই f=)
মিঃ এক্সকোডার


2

জে , 40 বাইট

2%~[:+/^:_]<:[:+/&.:*:"1[:-"1/~#~#:i.@^~

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

আপনি বর্ধিত নির্ভুলতা ( 5xপরিবর্তে 5) ব্যবহার করে টিআইও-তে 5 এর জন্য সময় নির্বাহ করবে । আমি আমার কম্পিউটারে 6 দিয়ে চেষ্টা করে বিরক্ত করব না যেহেতু এতে কোনও সন্দেহ নেই যে অনুবাদক ক্রাশ হবে।

গল্ফিংয়ের বিষয়ে পরামর্শের জন্য, বিশেষত স্থানাঙ্কগুলির প্রজন্মের অতীত অংশ। আমার মনে হচ্ছে কিছু টুপি অপসারণ করার উপায় থাকা উচিত।

]<:[:+/&.:*:"1সমানভাবে দ্বারা প্রতিস্থাপিত হতে পারে *:<:[:+/"1[:*:

ব্যাখ্যা

এই ব্যাখ্যাটি REPL এ করা হয় (তিনটি স্পেস একটি কমান্ড নির্দেশ করে, কোনও ফাঁকা স্থান আউটপুট নির্দেশ করে না)। আমি উত্তর পর্যন্ত নির্মাণ করা হবে।

স্থানাঙ্ক তৈরি করা হচ্ছে

#~ #: i.@^~ আমরা জালিতে যত্ন করি এমন সমস্ত স্থানাঙ্ক দেয়।

^~এটি নিজেই উত্থাপিত একটি সংখ্যা, এবং i.পরিসর [0, n) দেয় যেখানে n এর ইনপুট। @এই ফাংশন রচনা।

   i.@^~ 2
0 1 2 3

#~ নিজেই একটি সংখ্যা অনুলিপি করে, যেমন

   #~ 3
3 3 3

#:এর ডান যুক্তিকে তার বাম আর্গুমেন্ট হিসাবে প্রদত্ত অ্যারে দ্বারা নির্দিষ্ট বেসে রূপান্তর করে । অ্যারেতে অঙ্কের সংখ্যাটি সেই বেস আউটপুটে অঙ্কের সংখ্যার সাথে মিলে যায় (এবং আপনার একটি মিশ্র বেস থাকতে পারে) উদাহরণস্বরূপ,

   3 3 3 #: 0
0 0 0
   5 5 #: 120
4 0
NB. If you want 120 base 5 use #.inv
   #.inv 120
4 4 0

সুতরাং, একসাথে, এটি বলেছে যে সমস্ত মান বেস n (যেখানে এনটি ইনপুট হয়) পর্যন্ত n ^ n পর্যন্ত কার্যকরভাবে আমাদের স্থানাঙ্কগুলি প্রদান করে।

   (#~ #: i.@^~) 2
0 0
0 1
1 0
1 1

প্রতিটি জুটির মধ্যে দূরত্ব অর্জন করা

প্রথমে আমরা ডায়াড- /টেবিল এবং ~-ফ্লেক্সিভ ব্যবহার করে অন্য সবার সাথে প্রতিটি সমন্বয়ের পার্থক্য গ্রহণ করি। নোট করুন যে অর্ডারটি জোড়গুলির পক্ষে কোনও গুরুত্ব দেয় না: এটি নকল দূরত্ব তৈরি করে।

  NB. 2 {. takes the first two elements (I'm omitting the rest).
  2 {. -"1/~ (#~ #: i.@^~) 2
 0  0
 0 _1
_1  0
_1 _1

 0  1
 0  0
_1  1
_1  0

তারপরে আমরা +/&.:*:প্রতিটি ক্রাইন্ডেটে এই ক্রিয়াটি ব্যবহার করি (at "1, র‌্যাঙ্ক এক)। এই ক্রিয়াটি +/( &.:) বর্গ ( *:) এর অধীনে যোগফল ( )। অধীনে ডান ক্রিয়া প্রয়োগ করা হয় (বর্গ) তার ফলাফল সংগ্রহ করে এবং এটি বাম ক্রিয়া (যোগ) এর যুক্তি হিসাবে দেয়। এরপরে এটি ডান ক্রিয়াটির বিপরীত প্রয়োগ করে (যা স্কোয়ার রুট হবে)।

   +/&.:*: 3 4
5
   +/&.:*:"1 ([: -"1/~ #~ #: i.@^~) 2
      0       1       1 1.41421
      1       0 1.41421       1
      1 1.41421       0       1
1.41421       1       1       0

আশ্চর্যজনকভাবে, অনেক দূরত্ব একই।

ইনপুট থেকে বড় বা সমান দূরত্ব গণনা করা

শেষ অংশটি দেখছে যে ইনপুটটি ব্যবহার করে দূরত্বটি তার চেয়ে বেশি বা সমান ]<:। তারপরে ফলাফলের +/^:_সমস্তগুলি সংখ্যার (সংখ্যার সমষ্টি পর্যন্ত) ব্যবহার করে সত্যবাদী মানের সংখ্যা গণনা করা হয়। তারপরে এই মানটি 2 দ্বারা বিভক্ত হয় ( 2%~, এখানে ~অর্থ প্রদত্ত যুক্তিগুলির ক্রমটি অদলবদল করা হয় %)। কারণ আমরা 2 দ্বারা বিভক্ত করতে পারেন কারণ প্রতিটি truthy পেয়ারিং জন্য, ফ্লিপ আদেশের জন্য অন্য একটি হতে হবে ব্যতীত পেয়ারিং যা নিজেই সঙ্গে সমন্বয় আছি। ' এটি ঠিক আছে, তবে যেহেতু এগুলি 0 এর দূরত্বের ফলস্বরূপ।


1
35 বাইট সহ+/@,@(-:@<:+/&.:*:@:-"1/~)#~#:i.@^~
মাইল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.