মূলটির কাছাকাছি ত্রিভুজাকার ল্যাটিস পয়েন্টস


34

পটভূমি

একটি ত্রিকোণ গ্রিড একটি গ্রিড পাশ দৈর্ঘ্য 1. সমবাহু ত্রিভুজ সাথে নিয়মিত সমতল টালি দ্বারা গঠিত ছবির নিচে একটি ত্রিকোণ গ্রিড একটি উদাহরণ।

একটি ত্রিকোণ জাফরি বিন্দু একটি ত্রিভুজ ত্রিদলীয় গ্রিড বিরচন একটি প্রান্তবিন্দু হয়।

মূল সমতল, যা ত্রিদলীয় জাফরি পয়েন্ট এক উপর একটি নির্দিষ্ট বিন্দু।

চ্যালেঞ্জ

একটি অ-নেতিবাচক পূর্ণসংখ্যা দেওয়া n, ত্রিভুজাকার জাল পয়েন্টগুলির সংখ্যাটি সন্ধান করুন যার উৎপত্তিস্থল থেকে ইউক্লিডিয়ান দূরত্ব কম বা সমান n

উদাহরণ

নিম্নলিখিত চিত্রটি উদাহরণস্বরূপ n = 7(সুবিধার জন্য কেবলমাত্র 60-ডিগ্রি অঞ্চল দেখায়, পয়েন্ট এ এর ​​উত্স হিসাবে):

পরীক্ষার মামলা

Input | Output
---------------
    0 |       1
    1 |       7
    2 |      19
    3 |      37
    4 |      61
    5 |      91
    6 |     127
    7 |     187
    8 |     241
    9 |     301
   10 |     367
   11 |     439
   12 |     517
   13 |     613
   14 |     721
   15 |     823
   16 |     931
   17 |    1045
   18 |    1165
   19 |    1303
   20 |    1459
   40 |    5815
   60 |   13057
   80 |   23233
  100 |   36295
  200 |  145051
  500 |  906901
 1000 | 3627559

ইঙ্গিতটি এই ক্রম না OEIS A003215

বিধি

জন্য স্ট্যান্ডার্ড বিধি প্রযোজ্য। সংক্ষিপ্ততম জমাটি জয়লাভ করে।

আপনার জমা দেওয়ার ক্ষেত্রে আপনি কীভাবে চ্যালেঞ্জ সমাধান করেছেন তা দয়া করে অন্তর্ভুক্ত করুন।


7
OEIS A053416 ব্যাসার্ধের পরিবর্তে ব্যাসের বৃত্তে থাকা পয়েন্টের সংখ্যার ক্রম n, তাই আপনি যা চান তার দ্বিগুণ পদ রয়েছে।
নীল

প্রাসঙ্গিক উইকিপিডিয়া এবং ম্যাথওয়ার্ল্ড । এক্সনরের সূত্র ধারণ করে এবং প্রমাণ নয়।
ব্যবহারকারী 202729

4
এটি OEIS A004016n^2+1 এর প্রথম পদগুলির যোগফল ।
আলেফাল্ফ

উত্তর:


49

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

f=lambda n,a=1:n*n<a/3or n*n/a*6-f(n,a+a%3)

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

এটি কালো যাদু।

একটি লিখিত আপ প্রমাণ জন্য 250 প্রতিনিধি অফারএকটি প্রমাণ এবং ব্যাখ্যা জন্যলিন এর উত্তরদেখুন।


7
কিভাবে কাজ করে? আমি একটি ভাল 30 মিনিটের জন্য ভাবছিলাম ... এটি এত সহজ দেখাচ্ছে তবে আমি এই পুনরাবৃত্তি এবং চেনাশোনাগুলির মধ্যে কোনও সম্পর্ক খুঁজে পাচ্ছি না ...
JungHwan Min

7
@ জংহওয়ানমিন আমার প্রমাণটি হ'ল বিমানের জ্যামিতি, আইজেনস্টাইন পূর্ণসংখ্যার সংখ্যা, ক্ষেত্রের ক্ষেত্রফলকে আরও বেশি করা, চতুষ্কোণ পারস্পরিক ক্রিয়াকলাপ, গণিতের অগ্রগতিগুলি এবং আন্তঃব্যবস্থাপনা সংক্ষিপ্তসারগুলি - এগুলি একটি সাধারণ অভিব্যক্তির জন্য। এগুলি লিখলে আমার পক্ষে আপাতত সময় নেই বলে একটি বড় উদ্যোগ গ্রহণ করা হবে, তাই আমি আশা করছি যে অন্য কেউ প্রমাণ দেবেন, সম্ভবত এটিই সহজতর যা আমার যা সংযোগকে আরও পরিষ্কার করে দেয়।
xnor

14
প্রুফ । এটি লিনের চেয়ে বেশি দীর্ঘ কিন্তু স্বনির্ভর: এটি আইজেনস্টাইন পূর্ণসংখ্যার উপর ভিত্তি করে ফ্যাক্টরিয়েশন সম্পর্কে অপ্রমাণিত দাবিগুলির কোনও ব্যবহার করে না।
পিটার টেইলর

2
@ পিটারটেলর চেদার সন্ন্যাসী? যেমন দারথস এবং ড্রয়েডস?
নিল

3
@ নীল, জিজ্ঞাসা করা প্রথম ব্যক্তি হওয়ার জন্য অভিনন্দন! আমি একাডেমির নেভোটিয়েশন, স্তর 1 এর জন্য দর কষাকষির চিপ হিসাবে এটি ব্যবহার করার জন্য ডোমেনটি নিবন্ধভুক্ত করেছি।
পিটার টেলর

30

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

f n=1+6*sum[(mod(i+1)3-1)*div(n^2)i|i<-[1..n^2]]

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

এক্সনোর "ব্ল্যাক ম্যাজিক" সূত্রটি ব্যবহার করে:

(এন)=1+ +6Σএকটি=0এন23একটি+ +1-এন23একটি+ +2

এর সঠিকতার প্রমাণ এবং পাইথনের ৪৩ বাইটে এক্সনর কীভাবে এটি প্রকাশ করতে সক্ষম হয়েছিল তার একটি ব্যাখ্যা এখানে পাওয়া যাবে

1এনএন2এন=(এক্স+ +Yω)(এক্স+ +Yω*)(এক্স,Y)

6×((# এর বিভাজক এর এন1 (গেলিক ভাষার 3))-(# এর বিভাজক এর এন2 (গেলিক ভাষার 3)))

1এন2


4
Xnor যখন "সমস্যাটি গল্ফ করার পিছনে কিছু গভীর গাণিতিক অন্তর্দৃষ্টি রয়েছে" বলেছিলেন তখন আমি অবশ্যই এটি আশা করিনি।
বুদ্বুদ

29

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

-1 বাইট @ মাইল ধন্যবাদ

Sum[Boole[x(x+y)+y^2<=#^2],{x,-2#,2#},{y,-2#,2#}]&

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

কিভাবে?

এর পরিবর্তে এ বিষয়ে চিন্তাভাবনা করুন:

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

এইভাবে ভেবে দেখুন:

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

সুতরাং আমরা [[sqrt(3)/2, 0], [1/2, 1]]দ্বিতীয় চিত্রটিকে প্রথমটিতে রূপান্তর করতে ট্রান্সফর্মেশন ম্যাট্রিক্স প্রয়োগ করি ।

তারপরে কার্টেসিয়ান স্থানাঙ্কের ক্ষেত্রে আমাদের অবশ্যই ত্রিভুজাকার গ্রিডে বৃত্তটি সন্ধান করতে হবে।

(sqrt(3)/2 x)^2 + (1/2 x + y)^2 = x^2 + x y + y^2

সুতরাং আমরা x, yযেমন জাল পয়েন্ট খুঁজেx^2 + x y + y^2 <= r^2

উদাহরণস্বরূপ, এর সাথে r = 3:

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


1
এফওয়াইআই, সূত্রটি 120 ডিগ্রি সহ কোসাইনস আইনx^2+x y+y^2 থেকেও নেওয়া যেতে পারে ।
বুবলার

3
x^2+x y+y^2-> x(x+y)+y^2একটি বাইট সংরক্ষণ করুন
মাইল

সূত্রটি x^2 + xy + y^2একটি আইস্টেনস্টাইন পূর্ণসংখ্যার আদর্শ থেকেও নেওয়া যেতে পারে, যা a^2 - ab + b^2। মনে রাখবেন যে, চিহ্ন aএবং bমেয়াদে ব্যতীত অপ্রাসঙ্গিক abতাই এটি সমাধান একই পরিমাণ হয়েছে।
orlp


7

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

{_*_,f{)_)3%(@@/*}1b6*)}

এটি একটি বেনামে ব্লক (ফাংশন) যা স্ট্যাকের উপর একটি যুক্তি নেয় এবং ফলাফলটি স্ট্যাকের উপরে ফেলে। অনলাইন পরীক্ষা স্যুট । নোট করুন যে দুটি বৃহত্তম ক্ষেত্রে খুব ধীর।

ব্যাখ্যা

এ বিষয়ে একটি মন্তব্যে আলেফাল্ফ উল্লেখ করেছেন

এটি OEIS A004016 এর প্রথম n ^ 2 + 1 পদগুলির যোগফল

(এন)=1+ +6Σএকটি=0এন23একটি+ +1-এন23একটি+ +2

আমার সেই সূত্রটির সঠিকতার প্রমাণ আলিফাল্ফের ওইআইএস লিঙ্ক থেকে সংগৃহীত কিছু তথ্যের উপর ভিত্তি করে:

জিএফ: 1 + 6 * যোগ_ {n> = 1} x ^ (3 * এন -2) / (1-এক্স ^ (3 * এন -2)) - এক্স ^ (3 * এন -1) / (1- এক্স ^ (3 * এন -1))। - পল ডি হান্না, জুলাই 03 2011

এক্সএকটি

Π=0(1-কুই+ +1)(1+ +এক্সকুই+ +1)(1+ +এক্স-1কুই)=Σজেডকুই(+ +1)/2এক্স
Σমি,এনজেডωমি-এনকুইমি2+ +মিএন+ +এন2=Π=1(1-কুই)31-কুই3
ω
Σমি,এনজেডকুইমি2+ +মিএন+ +এন2=1+ +6Σ0(কুই3+ +11-কুই3+ +1-কুই3+ +21-কুই3+ +2)

কোড বিচ্ছেদ

{          e# Define a block. Stack: ... r
  _*       e#   Square it
  _,f{     e#   Map with parameter: invokes block for (r^2, 0), (r^2, 1), ... (r^2, r^2-1)
    )      e#     Increment second parameter. Stack: ... r^2 x with 1 <= x <= r^2
    _)3%(  e#     Duplicate x and map to whichever of 0, 1, -1 is equal to it (mod 3)
    @@/*   e#     Evaluate (r^2 / x) * (x mod 3)
  }
  1b6*     e#   Sum and multiply by 6
  )        e#   Increment to count the point at the origin
}

4

জে , 27 বাইট

[:+/@,*:>:(*++&*:)"{~@i:@+:

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

জাংহওয়ান মিনের পদ্ধতির উপর ভিত্তি করে ।

ব্যাখ্যা

[:+/@,*:>:(*++&*:)"{~@i:@+:  Input: n
                         +:  Double
                      i:     Range [-2n .. 2n]
                  "{~        For each pair (x, y)
                *:             Square both x and y
              +                Add x^2 and y^2
             +                 Plus
            *                  Product of x and y
        >:                   Less than or equal to
      *:                     Square of n
     ,                       Flatten
  +/                         Reduce by addition

4

এপিএল (ডায়ালগ ক্লাসিক) , 23 বাইট

{1+6×+/-/⌊⍵÷1+3⊥¨⍳⍵2}×⍨

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

রাজস্ব xnor এর এবং লিন এর উত্তর

শেষ পরীক্ষাটি মন্তব্য করা হয়েছে কারণ এটি আরও মেমরির প্রয়োজন, যেমন MAXWS=200Mএনভির মধ্যে



3

জেলি ,  15  13 বাইট

-2 ডেনিসকে ধন্যবাদ (একটি শূন্যের সংমিশ্রণ এড়াতে কেবল বর্গক্ষেত্রকে বাড়িয়ে তোলা; প্রাক-পার্থক্যের স্লাইসের পরিবর্তে পোস্ট-পার্থক্যযুক্ত মডুলো-স্লাইস ব্যবহার করে মাথা এড়ানো)

পাইথন উত্তরে xnor দ্বারা প্রকাশিত উত্তরটিতে সম্মান দেওয়ার "কালো যাদু" পদ্ধতিটি ব্যবহার করে তবে পুনরাবৃত্তির পরিবর্তে পুনরাবৃত্তি (এবং কিছুটা কম গণনা) ব্যবহার করে

²:Ѐ‘$Im3S×6C

একটি মোনাডিক লিঙ্ক একটি অ-নেতিবাচক পূর্ণসংখ্যাকে গ্রহণ করে এবং ইতিবাচক পূর্ণসংখ্য ফেরত দেয়।

এটি অনলাইন চেষ্টা করুন! অথবা পরীক্ষা-স্যুটটি দেখুন

কিভাবে?

²:Ѐ‘$Im3S×6C - Main Link: non-negative integer, n     e.g. 7
²             - square                                     49
     $        - last two links as a monad:
    ‘         -   increment                                50
  Ѐ          -   map across (implicit range of) right with:
 :            -     integer division                       [49,24,16,12,9,8,7,6,5,4,4,4,3,3,3,3,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0]
      I       - incremental differences                    [-25,-8,-4,-3,-1,-1,-1,-1,-1,0,0,-1,0,0,0,-1,0,0,0,0,0,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,-1]
       m3     - every third element                        [-25,-3,-1,0,0,-1,0,0,0,0,0,0,0,0,0,0,-1]
         S    - sum (vectorises)                           -31
          ×6  - multiply by six                           -186
            C - complement (1-X)                           187

2

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

এটি @ জংহওয়ানমিনের সমাধানের একটি বন্দর ।

f=(n,y=x=w=n*2)=>y-~w&&(x*x+x*y+y*y<=n*n)+f(n,y-=--x<-w&&(x=w,1))

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


আসল উত্তর (ES7), 70 বাইট

কেবল গ্রিডের মধ্যে দিয়ে হেঁটে যায় এবং ম্যাচের পয়েন্টগুলি গণনা করে।

f=(n,y=x=n*=2)=>y+n+2&&(x*x*3+(y-x%2)**2<=n*n)+f(n,y-=--x<-n&&(x=n,2))

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


পোর্টিং এক্সনরের উত্তরটি সংক্ষিপ্ত: 42 বাইট ( trueপরিবর্তে আউটপুট 1; 46 যদি আমরা এটিও পূর্ণসংখ্যা-ভাগ করি)। এবং আমি পূর্ণসংখ্যার বিভাগগুলি গল্ফ করার জন্য জাভাস্ক্রিপ্টকে ভালভাবে জানি না ~~(a/b), তবে আমি নিশ্চিত তাদের পক্ষে আরও একটি ছোট উপায় আছে ..
কেভিন ক্রুইজসেন


1

পরী / জিপি , 42 বাইট

অন্তর্নির্মিত ব্যবহার করে qfrep

n->1+2*vecsum(Vec(qfrep([2,1;1,2],n^2,1)))

qfrep (q, B, {ফ্ল্যাজ = 0}): অবিচ্ছেদ্য এবং সুনির্দিষ্ট চতুষ্কোণ ফর্ম q এর জন্য 1 থেকে বি পর্যন্ত নিয়মের ভেক্টরের সংখ্যা (অর্ধেক) এর ভেক্টর। পতাকা যদি 1 হয়, 1 থেকে 2 বি পর্যন্ত সমমানের ভেক্টরগুলি গণনা করুন।

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


0

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 68 বাইট

n=>{int g(int x,int y)=>x*x<y/3?1:x*x/y*6-g(x,y+y%3);return g(n,1);}

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

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



0

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

nD>L÷¥ā3%ÏO6*±Ì

পোর্ট অফ @JonathanAllan গুলি জেলি উত্তর , যেটা ঘুরে ফিরে থেকে ব্যুৎপন্ন হয় @ xnor এর 'কালো জাদু' সূত্র

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

n                # Square the (implicit) input-integer
 D>              # Duplicate it, and increase the copy by 1
   L             # Create a list in the range [1, input^2+1]
    ÷            # Integer divide input^2 by each of these integers
     ¥           # Take the deltas
      ā          # Push a list in the range [1, length] without popping the deltas itself
       3%        # Modulo each by 3
         Ï       # Only leave the values at the truthy (==1) indices
          O      # Take the sum of this list
           6*    # Multiply it by 6
             ±   # Take the bitwise NOT (-n-1)
              Ì  # And increase it by 2
                 # (after which the result is output implicitly)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.