নতুন অর্ডার # 6: ইস্টার ডিম


13

ভূমিকা (উপেক্ষা করা হতে পারে)

সমস্ত ধনাত্মক পূর্ণসংখ্যাটিকে তার নিয়মিত ক্রমে রেখে দেওয়া (1, 2, 3, ...) কিছুটা বিরক্তিকর, তাই না? সুতরাং এখানে সমস্ত ধনাত্মক পূর্ণসংখ্যার ক্রমবিন্যাস (রদবদল) চারপাশের চ্যালেঞ্জগুলির একটি সিরিজ। এটি এই সিরিজের ষষ্ঠ চ্যালেঞ্জ ( প্রথম , দ্বিতীয় , তৃতীয় , চতুর্থ এবং পঞ্চম চ্যালেঞ্জের লিঙ্ক)।

এই চ্যালেঞ্জটিতে একটি হালকা ইস্টার থিম রয়েছে (কারণ এটি ইস্টার)। আমি এই অত্যন্ত সজ্জিত (এবং আমার ব্যক্তিগত মতামত বরং কুৎসিত) হংস ডিম থেকে আমার অনুপ্রেরণা নিয়েছি।

সজ্জিত হংস ডিম

এটি আমাকে উলাম সর্পিলের স্মরণ করিয়ে দিয়েছে , যেখানে সমস্ত ধনাত্মক পূর্ণসংখ্যার ঘড়ির কাঁটার বিপরীতে সর্পিল স্থাপন করা হয়। এই সর্পিলটিতে প্রাথমিক সংখ্যা সম্পর্কিত কিছু আকর্ষণীয় বৈশিষ্ট্য রয়েছে তবে এটি এই চ্যালেঞ্জের জন্য প্রাসঙ্গিক নয়।

উলাম সর্পিল

আমরা যদি এই চ্যালেঞ্জের ইতিবাচক পূর্ণসংখ্যার ক্রমান্বয়ে পৌঁছায় তবে আমরা যদি উলাম সর্পিলটিতে নম্বরগুলি নিই এবং ঘড়ির কাঁটার দিক দিয়ে ঘূর্ণায়মান সমস্ত সংখ্যার সন্ধান করি , ১ থেকে শুরু করে This

1, 6, 5, 4, 3, 2, 9, 8, 7, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 25, 24, 23, etc.

যদি আপনি উভয় সর্পিল আঁকেন তবে আপনি কিছু পরিমাণে (ডিমের শেল) সর্পিলের অসীম জাল পেতে পারেন ( সেখানে নতুন অর্ডার রেফারেন্সটি নোট করুন )।

a(n)na(n)

কার্য

na(n)a(n)

a(0)=1;a(1)=6

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

Input | Output
---------------
1     |  1
5     |  3
20    |  10
50    |  72
78    |  76
123   |  155
1234  |  1324
3000  |  2996
9999  |  9903
29890 |  29796

বিধি

  • ইনপুট এবং আউটপুট হল পূর্ণসংখ্যা।
  • আপনার প্রোগ্রামটির কমপক্ষে 1 পর্যন্ত 32767 অবধি ইনপুট সমর্থন করা উচিত)।
  • অবৈধ ইনপুট (0, ভাসমান, স্ট্রিং, নেতিবাচক মান ইত্যাদি) অনির্দেশিত আউটপুট, ত্রুটি বা (আন) সংজ্ঞায়িত আচরণের দিকে পরিচালিত করতে পারে।
  • ডিফল্ট আই / ও বিধি প্রযোজ্য।
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • এটি , তাই বাইটে সংক্ষিপ্ত উত্তরগুলি জিতে

উত্তর:


12

জেলি ,  16 14 11 10 9  8 বাইট

লিনকে -1 ধন্যবাদ (মোড -২; যৌক্তিক নয়; স্বতে যুক্ত করুন: Ḃ¬+-> কিছুটা বা 1 |1:)

|1×r)ẎQi

একটি পূর্ণসংখ্যার লিঙ্ক একটি পূর্ণসংখ্যা গ্রহণ করে n, যা একটি পূর্ণসংখ্যার ফলন করে a(n)

n2

½‘|1×rƲ€ẎQin+12

কিভাবে?

অনুক্রমটি দৈর্ঘ্যের বিপরীত টুকরাগুলিতে প্রাকৃতিক সংখ্যাগুলি গ্রহণ করা [1,5,3,11,5,17,7,23,9,29,11,35,13,...]- অদ্ভুত ধনাত্মক পূর্ণসংখ্যার সাথে ধনাত্মক পূর্ণসংখ্যার সংমিশ্রণকে পাঁচটি মডুলোর ছয়, অর্থাৎ [1, 2*3-1, 3, 4*3-1, 5, 6*3-1, 7, 8*3-1, 9, ...]

এটি একই ধরণের এবং এরপরে বিপরীত বিস্তৃত রেখাগুলি [1..x]যেখানে xএই স্লাইস দৈর্ঘ্যের (যেমন প্রতিটি স্লাইসের সর্বাধিক) [1,6,9,20,25,42,49,72,81,110,121,156,169,...]সংখ্যক যোগফল রয়েছে - যা তাদের বর্ধিত সংখ্যার সমান সংখ্যায় বিভক্ত পূর্ণসংখ্যার বর্গক্ষেত্র হয়, অর্থাৎ [1*1, 2*3, 3*3, 4*5, 5*5, 6*7, 7*7,...]

পার্থক্যগুলি 1 এর চেয়ে বেশি হওয়ায় আমরা [x..k]সরাসরি রেঞ্জগুলি তৈরি করে একটি বাইট (বিপরীত) সংরক্ষণ করতে পারি , যেখানে kস্লাইসের 1-সূচকযুক্ত সূচক।

P(n)=vP(v)=nn|1×r)ẎQị@n|1×r)ẎQi

|1×r)ẎQi - Link: integer, n       e.g. 10
    )    - for each k in [1..n]:  vs = [ 1, 2, 3, 4, 5, 6, 7, 8, 9,10]
|1       -   bitwise-OR (k) with 1     [ 1, 3, 3, 5, 5, 7, 7, 9, 9,11]
  ×      -   multiply (by k)           [ 1, 6, 9,20,25,42,49,72,81,110]
   r     -   inclusive range (to k)    [[1],[6..2],[9..3],[20..4],...,[110..10]]
     Ẏ   - tighten                     [1,6,5,4,3,2,9,8,7,6,5,4,3,20,...,4,......,110,...,10]
      Q  - de-duplicate                [1,6,5,4,3,2,9,8,7,20,...,10,......,110,...82]
       i - first index with value (n)  20

2
খুব সুন্দর. এবং আপনি এমএটিএল উত্তরকে ছাড়িয়ে গেছেন!
21

1
এখন বেঁধে ... :-)
লুইস মেন্ডো

@ লুইস মেন্ডো আমি ঠিক বুঝতে পেরেছিলাম যে আমি এখানে লুক্কায়িত কিছু করতে পারি এবং একটি বাইট সংরক্ষণ করতে পারি :)
জোনাথন অ্যালান

1
পুনঃটুইট এটি একটি উপস্থাপণের দাবিদার :-)
লুইস মেন্ডো

1
@ লিন আমি আসলে অন্য একটি 9 বাইটারে আপডেট করছি। ইতিমধ্যে আপনার 8 করা হবে!
জোনাথন অ্যালান

6

জাভাস্ক্রিপ্ট (ES7),  46 45  41 বাইট

0-ইন্ডেক্স।

n=>((x=n**.5+1&~1)*2-(n<x*x+x)*4+3)*x+1-n

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

কিভাবে?

এটি A090861 এর উদাহরণ প্রোগ্রামগুলিতে ব্যবহৃত 1- সূচকযুক্ত সূত্রের ভিত্তিতে তৈরি

xn0

xn=n1+12

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

kn62

kn={2if n4xn2+2xn6otherwise

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

an

an=8xn2+knxn+2n

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

যার অনুবাদ করা যেতে পারে:

n=>8*(x=(n-1)**.5+1>>1)*x+(n<=4*x*x+2*x?-2:6)*x+2-n

এটি 0-সূচিযুক্ত করা এখনই 5 বাইট সাশ্রয় করে:

n=>8*(x=n**.5+1>>1)*x+(n<4*x*x+2*x?-2:6)*x+1-n

সূত্রটি ব্যবহার করে আরও সরল করা যেতে পারে:

xn=2×n+12

যা হিসাবে প্রকাশ করা যেতে পারে:

x=n**.5+1&~1

নেতৃস্থানীয়:

n=>2*(x=n**.5+1&~1)*x+(n<x*x+x?-1:3)*x+1-n

এবং পরিশেষে:

n=>((x=n**.5+1&~1)*2-(n<x*x+x)*4+3)*x+1-n




3

পাইথন 3.8, 104 74 65 60 57 বাইট

lambda n:(-2,6)[n>4*(x:=(n**.5+1)//2)*x+2*x]*x+2+~n+8*x*x

সম্পাদনা করুন: জননাথন অ্যালানকে এটি 74 থেকে 57 বাইটে পাওয়ার জন্য ধন্যবাদ!

এই সমাধান 0-ভিত্তিক সূচক ব্যবহার করে।


1
39, আমদানি এড়ানো কিছু অপ্রয়োজনীয় প্রথম বন্ধনী সরিয়ে দেওয়া, আর ব্যবহার সংরক্ষণ >স্থানে <=এবং x*xস্থানে x**2... যেমন: def f(n):x=((n-1)**.5+1)//2;return 8*x**2+(-2,6)[n>4*x*x+2*x]*x+2-n... Tio
জনাথন অ্যালান

অসাধারণ! আমি সম্পাদনাগুলি অন্তর্ভুক্ত করব। আমি আপনার মন্তব্যটি দেখার আগে কিছু পরিবর্তন করেছি এবং এটি 74 বাইটে নেমে এসেছি। আপনার রিটার্নগুলি ভেসে যায় তাতে কি फरक আসে? আমি ধরে নিচ্ছি না ...
কাপোকসি

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

খুব ঠান্ডা. সরাসরি আরও যে কোনও সম্পাদনা করতে নির্দ্বিধায়!
কাপোকসি

3

2

বেফুঞ্জ, 67 57 বাইট

এই সমাধানটি ইনপুট মানগুলির জন্য 0-ভিত্তিক সূচক ধরে নিয়েছে।

p&v-*8p00:+1g00:<
0:<@.-\+1*g00+*<|`
0g6*\`!8*2+00g4^>$:0

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

ব্যাখ্যা

আমরা "ব্যাসার্ধ" গণনা করে শুরু করি যেখানে লুপের সাথে ইনপুট এন পাওয়া যায়:

radius = 0
while n > 0
  radius += 1
  n -= radius*8

লুপের শেষে, n এর পূর্বের মানটি সেই ব্যাসার্ধের সর্পিলটিতে অফসেট হয়:

offset = n + radius*8

তারপরে আমরা নির্ধারণ করতে পারি যে আমরা নিম্নরূপভাবে সর্পিলের শীর্ষ বা নীচের অংশে রয়েছি:

bottom = offset >= radius*6

এবং একবার আমাদের এই সমস্ত বিবরণ হয়ে গেলে, সর্পিল মানটি এই সাথে গণনা করা হয়:

value = ((bottom?10:2) + 4*radius)*radius + 1 - offset

ব্যাসাডিয়াই হ'ল একমাত্র মান যা আমাদের "ভেরিয়েবল" হিসাবে সংরক্ষণ করতে হবে, এটি বেফুঞ্জ -৩৩-এ সর্বোচ্চ 127 এর সীমাবদ্ধ করে, সুতরাং এই অ্যালগরিদম ইনপুটগুলি 65024 পর্যন্ত পরিচালনা করতে পারে।


1

জাপট , 15 বাইট

জোনাথনের জেলি সমাধান বন্দরের। 1-ইন্ডেক্স।

gUòȲ+X*v)õÃcÔâ

চেষ্টা করে দেখুন

gUòȲ+X*v)õÃcÔâ     :Implicit input of integer U
g                   :Index into
 Uò                 :  Range [0,U]
   È                :  Map each X
    ²               :    Square X
     +X*            :    Add X multiplied by
        v           :    1 if X is divisible by 2, 0 otherwise
         )          :    Group result
          õ         :    Range [1,result]
           Ã        :  End map
            c       :  Flatten
             Ô      :    After reversing each
              â     :  Deduplicate

আমি জোনাথনকে কেবল বলেছি যে x+(1-x%2)এটি x|1(জেলিতে একটি বাইট সংরক্ষণ করা), যা এই উত্তরটি থেকেও উপকৃত হতে পারে, আমি বাজি ধরছি।
লিন

0

সি ++ (জিসিসি) , 88 বাইট

#import<cmath>
int a(int n){int x=(sqrt(n-1)+1)/2;return x*(8*(x+(n>4*x*x+2*x))-2)+2-n;}

1-ইন্ডেক্স; OEIS পৃষ্ঠায় সূত্রটি ব্যবহার করে, তবে কয়েকটি বাইট সংরক্ষণ করার জন্য ম্যানিপুলেটেড।

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


সুপারিশ sqrt(n-1)/2+.5পরিবর্তে(sqrt(n-1)+1)/2
ceilingcat
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.