আইসেনস্টাইন গাউস


18

গাউসিয়ান পূর্ণসংখ্যাটি যেখানে , টি পূর্ণসংখ্যা এবং কল্পিত একক, নিকটতম (ইউক্লিডিয়ান দূরত্বের আর্ট) Eisenstein পূর্ণসংখ্যা return যেখানে , পূর্ণসংখ্যা এবং ।a+biabi=exp(πi/2)k+lωklω=exp(2πi/3)=(1+i3)/2

পটভূমি

এটি সম্ভবত একেবারেই সুস্পষ্ট যে প্রতিটি গাউসিয়ান পূর্ণসংখ্যাকে , পূর্ণসংখ্যার সাথে হিসাবে স্বতন্ত্রভাবে লেখা যেতে পারে । এটি এতটা সুস্পষ্ট নয় তবে তবুও সত্য: যে কোনও আইজেনস্টাইন পূর্ণসংখ্যাকে , ইন্টিজার সহ হিসাবে স্বতন্ত্রভাবে লেখা যেতে পারে । এগুলি উভয়ই জটিল সংখ্যার মধ্যে একটি mod-মডিউল গঠন করে এবং ম চক্রচলিত পূর্ণসংখ্যা যথাক্রমে বা । দ্রষ্টব্য যেa+biabk+lωklZp=233+2i3+2ω

সূত্র: commons.wikimedia.org

বিস্তারিত

  • প্রদত্ত জটিল সংখ্যার দুটি বা তিনটি নিকটতম পয়েন্ট থাকলে ক্ষেত্রে এর মধ্যে যে কোনওটিই ফিরে আসতে পারে।

  • জটিল সংখ্যা আয়তক্ষেত্রাকার স্থানাঙ্ক (বেসিস দেওয়া হয় ), কিন্তু অন্য চেয়ে যে কোনো সুবিধাজনক বিন্যাসে মত বা বা ইত্যাদি(1,i)(A,B)A+BiA+B*1j

  • আইজেনস্টাইন পূর্ণসংখ্যা ভিত্তি স্থানাঙ্ক হিসাবে ফেরত পাঠানো হয়েছে কোনো সুবিধাজনক বিন্যাসে মত কিন্তু যে ছাড়া অন্য বা বা ইত্যাদি(1,ω)(K,L)K+LωK+L*1ω

উদাহরণ

সমস্ত বাস্তব পূর্ণসংখ্যার স্পষ্টতই আবার বাস্তব পূর্ণসংখ্যার সাথে ম্যাপ করা উচিত।

  6,14 -> 14,16
  7,16 -> 16,18
-18,-2 ->-19,-2
 -2, 2 -> -1, 2
 -1, 3 -> 1, 4




A এবং b এর বিপরীত চিহ্ন থাকলে আপনারও পরীক্ষার কেসগুলি অন্তর্ভুক্ত করা উচিত।
স্মাইলঅনডনড

পছন্দ করেছেন তবে কেউ কেবল আসল অক্ষের প্রতি সম্মান ব্যবহার করে কেবল প্রতিস্থাপন (1,w)করতে পারে (-1,1+w)। এবং আমি এই বিভাগটির নামও দিয়েছি উদাহরণগুলিতে এটি পরিষ্কার করে দেওয়ার জন্য যে এই ক্ষেত্রে কেবল সঠিক ফলাফল সরবরাহ করা যথেষ্ট নয়।
flawr

উত্তর:


7

এপিএল (ডায়ালগ প্রসারিত) , 16 বাইট এসবিসিএস

0+⌈3÷⍨1 2×⌊⎕×√3

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

একটি পূর্ণ প্রোগ্রাম যা লাগে yতারপর xস্ট্যান্ডার্ড ইনপুট থেকে এবং পূর্ণসংখ্যার একটি 2-উপাদান ভেক্টর ছাপে।

এটি কীভাবে কাজ করে: গণিত

প্রথমত, দ্রষ্টব্য যে কোনও গসিয়ান পূর্ণসংখ্যা কোনও হিরার উল্লম্ব তির্যকটিতে স্থাপন করা হবে কিছু জন্য বিন্দুতে স্থাপন করা হবে ।Z(x,3y)x,y

      + W
     /|\
    / | \
   /  |  \
  /   + X \
 /    |    \
+-----|-----+V
 \    |    /
  \   + Y /
   \  |  /
    \ | /
     \|/
      + Z

চিত্রটিতে, এবং । সুতরাং, একটি বিন্দুর উল্লম্ব অবস্থানের ভিত্তিতে, আমরা নীচের হিসাবে নিকটতম আইজেনস্টাইন পয়েন্টটি সনাক্ত করতে পারি:WZ¯=3WX¯=XY¯=YZ¯=XV¯=YV¯=13

Given a point PWZ¯,{PWX¯the nearest point is WPXY¯the nearest point is VPYZ¯the nearest point is Z

গাউসিয়ান পয়েন্ট , আমরা প্রথমে নির্ধারণ করি যে কোন হীরাটি অন্তর্গত, কতটি হীরা দ্বারা চিহ্নিত (জঞ্জাল ) এক্সিস থেকে দূরে রয়েছে ।PPhZx

h=P.y÷3

তারপরে এর আইজেনস্টাইন স্থানাঙ্কগুলি হয়Z

Z.xE=P.x+h,Z.yE=2h

এখন আমরা তা নির্ধারণ বিভাজনের জন্যে। এই জন্য, আমরা নির্দেশক নিরূপণ করতে পারেন নিম্নরূপ:WX¯,XY¯,YZ¯ Pw

w=P.y×3%3

তারপর মামলা মিলা যথাক্রমে। অবশেষে, নিকটতম আইসেনস্টাইন পয়েন্টের (যা , বা ) এই হিসাবে গণনা করা যেতে পারে:w=0,1,2YZ¯,XY¯,WX¯PZVX

PE.xE=P.x+h+w2,PE.yE=2h+w

এবং জন্য পরিচয় ব্যবহার করে , আমরা আরও সহজ করতে পারি:hw

y=P.y×3,PE.xE=P.x+y÷3,PE.yE=2y÷3

এটি কীভাবে কাজ করে: কোড

0+⌈3÷⍨1 2×⌊⎕×√3
           ⌊⎕×√3   Take the first input (P.y) and calculate y'
   ⌈3÷⍨1 2×       ⍝ Calculate [ceil(y'/3), ceil(2y'/3)]
⎕0+  ⍝ Take the second input(P.x) and calculate [P.x+ceil(y'/3), ceil(2y'/3)]

2

জাভাস্ক্রিপ্ট (ES6), 112 বাইট

(a,b,l=b/Math.pow(.75,.5),k=a+l/2,f=Math.floor,x=k-(k=f(k)),y=l-(l=f(l)),z=x+y>1)=>[k+(y+y+z>x+1),l+(x+x+z>y+1)]

ES7 অবশ্যই 9 বাইট ছাঁটাই করতে পারে। ব্যাখ্যা: kএবং lশুরুতে ভাসমান-পয়েন্ট সমাধানের প্রতিনিধিত্ব করুন k+ωl=a+ib। তবে, স্থানাঙ্কগুলি ইউক্লিডিয়ান দূরত্ব দ্বারা নিকটতম পূর্ণসংখ্যার সাথে বৃত্তাকার করা প্রয়োজন। আমি অতএব মেঝেতে নিয়ে যাচ্ছি kএবং lতারপরে ভগ্নাংশের অংশগুলিতে কিছু পরীক্ষা নিরীক্ষা করবো যাতে সেগুলি বাড়িয়ে দেওয়ার ফলে আরও নিকটতম বিন্দুতে ফলাফল হয় কিনা a+ib


আমি ভগ্ন অংশের উপর আপনার পরীক্ষা ঘটনা সুবিধা গ্রহণ করা হয় এক্স সবসময় যে .2887 বা 0.577and Y সবসময় পারেন .1547 বা .577 হয়
SmileAndNod

@ স্মাইলঅ্যান্ডনড 3 বছর আগে? আমি সত্যিই মনে করতে পারি না, তবে আমি মনে করি না যে এটি এত জটিল, আমি হীরার নিকটতম কোণটি কেবলমাত্র কাজ করে যাচ্ছি।
নীল

2

এমএটিএল , 39 38 35 বাইট

t|Ekt_w&:2Z^tl2jYP3/*Zeh*!sbw6#YkY)

ইনপুট ফর্ম্যাটটি 6 + 14*1j(স্থানটি alচ্ছিক)। আউটপুট ফর্ম্যাট হয় 14 16

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

ব্যাখ্যা

কোডটি প্রথমে একটি জটিল সংখ্যা হিসাবে ইনপুট নেয়। এরপরে এটি জটিল বিমানে একটি বৃহত পরিমাণে ষড়ভুজ গ্রিড উৎপন্ন করে, ইনপুটটির নিকটতম পয়েন্টটি খুঁজে পায় এবং এর আইজেনস্টাইনকে "স্থানাঙ্কগুলি" প্রদান করে।

t         % Take input implicitly. This is the Gauss number, say A. Duplicate
|Ek       % Absolute value times two, rounded down
t_        % Duplicate and negate
w&:       % Range. This is one axis of Eisenstein coordinates. This will generate
          % the hexagonal grid big enough
2Z^       % Cartesian power with exponent 2. This gives 2-col 2D array, say B
t         % Duplicate
l         % Push 1
2jYP3/*   % Push 2*j*pi/3
Ze        % Exponential
h         % Concatenate. Gives [1, exp(2*j*pi/3)]
*         % Multiply by B, with broadcast.
!s        % Sum of each row. This is the hexagonal grid as a flattened array, say C
bw        % Bubble up, swap. Stack contains now, bottom to top: B, A, C
6#Yk      % Index of number in C that is closest to A
Y)        % Use as row index into B. Implicitly display

2

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

i=fromIntegral;r=[floor,ceiling];a!k=(i a-k)**2;c(a,b)|l<-2*i b/sqrt 3,k<-i a+l/2=snd$minimum[(x k!k+y l!l,(x k,y l))|x<-r,y<-r]

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

ইনপুট গাউসিয়ান পূর্ণসংখ্যার জন্য (ক, খ), নিকটতম আইজেনস্টাইন পূর্ণসংখ্যার জন্য চার প্রার্থী পেতে, ন্যূনতম দূরত্বের সাথে একটিটি খুঁজে বের করে এটি ফিরিয়ে আনতে আইজেনস্টাইন স্থানাঙ্ক, মেঝে এবং সিল উভয় উপাদানকে রূপান্তর করুন।


1

টিসিএল , 124 116 106 বাইট

{{a b f\ int(floor(2*$b/3**.5)) {l "[expr $f+(1-$f%2<($b-$f)*3**.5)]"}} {subst [expr $l+$a-($f+1)/2]\ $l}}

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

এটি @ নীলের তিন বছরের পুরানো পোস্ট থেকে কিছুটা অনুপ্রাণিত

মেঝে ফাংশনটি রম্বসের কোণটি প্রদান করে যার প্রান্তগুলি ভেক্টর 1 এবং । এই গম্বুজটি সম্পর্কে শ্রদ্ধার সাথে, গাউসিয়ান পূর্ণসংখ্যা শীর্ষ (যদি আমি সম হয়) বা নীচে (যদি বিজোড় হয়) উভয়ের উভয় খন্ডের লম্ব থাকে। এটি গুরুত্বপূর্ণ কারণ এটির অর্থ হ'ল নীচের বাম কোণে বা উপরের ডান দিকের কোণটি একটি গ্রহণযোগ্য সমাধান হবে। আমি নীচের বাম কোণার জন্য কে গণনা করছি এবং গৌসিয়ান পূর্ণসংখ্যাটি দুটি কোণকে পৃথক করে কর্ণটির উপরে বা নীচে রয়েছে কিনা তা পরীক্ষা করে দেখছি; আমি ত্রিভুজ উপরে যখন 1 কে যোগ করি, এবং আমি L এর জন্য একইভাবে করি।ω

"ত্রিভুজ ডি এর ক্রস-প্রোডাক্ট ভিএক্সডি এর চিহ্নটি ভেক্টর ভি এর সাথে নীচের ডান কোণে যোগদান করে এবং (ক, খ)" ব্যবহার করে 10 বাইট সংরক্ষণ করা হয়েছে, বিন্দুটি কোন দিকটির জন্য রয়েছে।


1

বারলেস্কু , 24 বাইট

pe@3r@2././J2./x/.+CL)R_

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

খুব নিশ্চিত যে এটি আরও খাটো হতে পারে। ইনপুট হিসাবে পড়াa b

pe      # Parse input to two ints
@3r@2./ # sqrt(3)/2
./      # Divide b by sqrt(3)/2
J2./    # Duplicate and divide by 2
x/.+    # swap stack around and add to a
CL      # Collect the stack to a list
)R_     # Round to ints

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