কোড গল্ফ সেরা অনুমোদন


14

চ্যালেঞ্জ

একটি পূর্ণসংখ্যা n ≥ 4 দেওয়া , সংখ্যার এক ক্রমান্বন আউটপুট [0, n-1] এমন সম্পত্তি দিয়ে যে কোনও পর পর দুটি পূর্ণসংখ্যার একে অপরের পাশে নেই। একটি আদেশের মান piহ'ল abs(pi[i] - i)সমস্ত সূচকের যোগফল i

উদাহরণ

  • (1, 3, 0, 2) মান আছে 6
  • (0, 2, 4, 1, 3) মান আছে 6
  • (0, 2, 4, 1, 3, 5) মান আছে 6
  • (0, 2, 4, 1, 5, 3, 6) মান আছে 8

আপনার উত্তরের স্কোর

আপনার উত্তরের স্কোর হ'ল n = 4 .. 14আপনার কোডের বাইটের সংখ্যার জন্য আপনার অনুমতিগুলির মানগুলির যোগফল । স্কোর যত কম হবে তত ভাল। আপনার কোডটি অবশ্যই এই মানগুলির জন্য বৈধ আউটপুট দিতে হবে n

আপনার মেশিনে সম্পূর্ণ হওয়ার জন্য আপনার জমাটি চালাতে সক্ষম হবেন।

সম্পর্কের ক্ষেত্রে, শেষের সম্পাদনার সময় যা প্রাসঙ্গিক স্কোরের ফলস্বরূপ সিদ্ধান্ত গ্রহণ করবে।

এই হিসাবে একই প্রশ্ন না হয় এই এক ?

লিঙ্কযুক্ত প্রশ্নের উত্তরগুলি এই প্রশ্নের জন্য প্রতিযোগিতামূলক হতে পারে না কারণ তারা কোনও অনুমানের মূল্য অপ্টিমাইজ করার কোনও প্রচেষ্টা করে না। উদাহরণস্বরূপ n=10, [1, 3, 5, 7, 9, 0, 2, 4, 6, 8]বেশিরভাগ উত্তর দ্বারা প্রদত্ত ক্রমশক্তিটি একটি মান দেয় 30। আপনি তার থেকে অনেক ভাল করতে পারেন।

প্রশ্নই বিন্যাস অংশ জন্য, অনুকূল মূল্য সামগ্রিক সর্বাধিক হয় 120। (@ লাইকোনি আপনাকে ধন্যবাদ।) যেখানে ডেনিসের আগের প্রশ্নের স্কোরের উত্তর 222 । (@20202929 @ ইউজারকে আপনাকে ধন্যবাদ।)


4
@ জোকিং প্রতিটি উত্তর কোনও পরিবর্তন ছাড়াই পোর্ট করা যেতে পারে, তবে এই চ্যালেঞ্জের মধ্যে মারাত্মক খারাপ স্কোর হবে। এই চ্যালেঞ্জটিতে কোড পোস্ট করা কোড-গল্ফ চ্যালেঞ্জের কোড-পর্যালোচনা থেকে কোড পোস্ট করার সমতুল্য।
স্টিভি গ্রিফিন

2
স্কোরটিতে বিভিন্ন পরিমাণের মিশ্রণ আসলেই সমস্যাযুক্ত হতে পারে। সেরা অ্যালগরিদমের উত্তরটি সাধারণত যে কোনও ভাষায় পোর্ট করা যায়, সেক্ষেত্রে স্কোরিংটি স্বাভাবিক কোড গল্ফের কাছে হ্রাস পায়।
অ্যাঙ্গস্

4
অনুকূল মানগুলি [6,6,6,8,10,12,12,12,14,16,18]120 এর স্কোরের জন্য Interest আকর্ষণীয়ভাবে এই প্যাটার্নটি A078706 এ পাওয়া যাবে
লাইকোনি

3
আচ্ছা, থেকে পৃথক হতে শুরু A078706সঙ্গে n=17, যার মধ্যে একটি স্কোর থাকতে পারে 20
লাইকনি

4
আমি চ্যালেঞ্জটি পরিষ্কার এবং স্পষ্টতই বুঝতে পারি। আপনি যদি মতানৈক্য করেন এবং বন্ধ করতে ভোট দেন তবে এখানে একটি মন্তব্য করুন।
ব্যবহারকারী 202729

উত্তর:


7

জেলি , 36 34 33 32 31 30 বাইট, ফলাফল: 120

-1 বাইটের জন্য ডেনিসকে ধন্যবাদ! (স্পষ্টতই জেলি বাগটি ঠিক করে, যদিও বৈশিষ্ট্যটি চ্যালেঞ্জকে পোস্টডেট করে)

ðRḟISị“Ƥ¿‘Ʋœ?$;@µ2x5~4¦ṁ_4$Ä’

নতুন বৈশিষ্ট্য: জমে থাকা পরিমাণ ( Ä)।

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

1-ইনডেক্সিং ব্যবহার করুন।

লিনিয়ার সময়ও লাগে।


এই সি ++ প্রোগ্রামটি ডিক্সোগ্রাফিকভাবে সবচেয়ে ক্ষুদ্রতর ক্রমানুবাদ উত্পন্ন করে, ধরে নিলেন | i - p i | About প্রস্থ (যেখানে প্রস্থটি হার্ডকডযুক্ত ধ্রুবক) সমস্ত 0 ≤ i <n এর জন্য সময়কালীন জটিলতার সাথে ও (প্রস্থ 2 × 2 2 × প্রস্থ × n) (যা নির্দিষ্ট প্রস্থের জন্য কেবল ও (এন) ): এটি অনলাইনে চেষ্টা করুন !


কিভাবে?

  1. সমস্যাটি সর্বোত্তমভাবে সমাধান করার চেষ্টা করে একটি সি ++ প্রোগ্রাম লিখুন।
  2. প্যাটার্নটি পর্যবেক্ষণ করুন। আমরা নোট করি যে 4 টি সর্বশেষ ব্যতীত সমস্ত উপাদানগুলির ক্রম একটি উপসর্গ ix

    0 2 4 1 3 5 7 9 6 8 10 12 14 11 13 15 17 19 16 18 20 22 24 21 23 25 ...
    
  3. ক্রমের ক্রমবর্ধমান পার্থক্য গণনা করে।

    2 2 -3 2 2 2 2 -3 2 2 2 2 -3 2 2 2 2 -3 2 2 2 2 -3 2 2
    

    সময়কাল 5 নোট করুন।

  4. জেলি বাস্তবায়ন:

    • n-4 প্রথম উপাদানগুলি উপরের ক্রম থেকে নেওয়া হয়েছে। হে (ঢ)
    • জন্য 4 গত উপাদান, শুধু নরপশু সব 24 সম্ভাবনার বাধ্যহে (1)

      (দ্রষ্টব্য: আমি আর 32 বাইট সংস্করণ থেকে সমস্ত 24 সম্ভাব্য জোর করে চাপিয়ে দেব না)


আহা, আপনি আমার কাছে একটি ভিন্ন উপসর্গ নিয়ে গেছেন। খনি শুরু হয় 0 2 4 1 3 5 8 6এবং এর একটি বৃহত্তর ব্রাঞ্চিং ফ্যাক্টর রয়েছে তবে এর মতো সাধারণ প্যাটার্ন নেই।
পিটার টেলর

7

সিজেম (60 বাইট + 120 = 180 স্কোর)

{_5/4*8e!961=7_)er<:A\,^e!{A\+}%{2ew::-:z1&!},{_$.-:z1b}$0=}

ইন্টিগ্রেটেড স্কোরিং সহ অনলাইন টেস্ট স্যুট

এন = 24 পর্যন্ত এক্সটেনশান

ব্যবচ্ছেদ

{
  _5/4*        e# Work out how much of the hard-coded prefix to use
  8e!961=7_)er e# Prefix [0 2 4 1 3 5 8 6]
               e# I identified this by brute forcing up to n=10 and looking for patterns
               e# I then used the identified prefix [0 2 4 1] to brute-force further
  <:A          e# Take the desired prefix of the hard-coded array, and store a copy in A
  \,^e!        e# Generate all permutations of the values in [0 .. n-1] which aren't in A
  {A\+}%       e# Prepend A to each of them
  {            e# Filter...
    2ew::-     e#   Take each difference of two consecutive elements
    :z         e#   Find their absolute values
    1&         e#   Test whether 1 is among those absolute values
    !          e#   Reject if it is
  },
  {            e# Sort by...
    _$.-       e#   Take pairwise differences of permutation with the identity
    :z         e#   Absolute values
    1b         e#   Add them (by interpreting in base 1)
  }$
  0=           e# Take the first
}

খুব চিত্তাকর্ষক! আপনি এটি কীভাবে করেছেন তা আবিষ্কার করার অপেক্ষায় রয়েছি।
আনুশ

এটি কি 24 অবধি সর্বোত্তম?
আনুশ

@ আনুশ আমার প্রোগ্রাম অনুসারে সম্ভবত
ব্যবহারকারী 202729

@ আনুশ, আমি এটি প্রমাণিত করতে পারি নি, তবে আমি সম্ভবত এটি বিশ্বাস করি।
পিটার টেলর

আমি আপনার অ্যালগরিদম দ্বারা আরও কৌতূহলী!
আনুশ

6

হাস্কেল , 146 + 89 স্কোর + বাইট

f i|k<-mod i 4=scanl(+)1$take(i-2-k)(cycle[2,-3,2,3])++[[2],[2,2],[5,-3,2],[5,-3,2,2]]!!k

প্যাটার্ন পুনরাবৃত্তি করে [1,3,0,2], শেষ mod i 4উপাদানগুলি হাত দিয়ে সুর করা হয়।

পূর্ববর্তী অ্যালগরিদম (১৩২ + ১১6):

f i=last$filter(\a->all(`elem`a)[0..i-1]).(!!(i-1)).iterate((\l->map((:l).(+head l))[-3,2,-2,3])=<<)$pure<$>[i-3..i]

দৈর্ঘ্যের umps 2 বা 3 ± লাফের সঠিক সংখ্যার উপর হামলা চালায়। সর্বশেষটি নির্বাচন করে যার এতে সঠিক সংখ্যা রয়েছে, মনে হয় ঠিক কাজ করে এবং স্কোর বাস্তবায়নের চেয়ে অনেক সস্তা। টিও শেষ স্কোরের আগে মাত্র রান আউট করে যা 18 টি।

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


2

জাপট, 120 + 20 = 140

(অন্য চ্যালেঞ্জ থেকে আমার সমাধানগুলির একটি অনুলিপি করা আমার কাছে 227 রান করে)

o á k_äa d¥1ÃñxÈaYÃg

স্কোরগুলি পরীক্ষা করতে এটি ব্যবহার করুন বা এই সংস্করণটি ব্যবহার করুন । উভয় সংস্করণ 9 আপনি কাছাকাছি ক্রপ আউট শুরু করতে পারে।


ব্যাখ্যা

o                        :Range [0,input)
  á                      :All permutations
    k_      Ã            :Remove sub-arrays that return true
      äa                 :  Get the consecutive absolute differnces
         d¥1             :  Do any equal 1?
               È  Ã      :Pass the integers in each remaining sub-array through a function
                aY       :  Get the absolute difference with the integer's index
              x          :Reduce by addition
             ñ           :Sort the main array by those values
                   ñ     :Return the first sub-array

9
" আপনার মেশিনে সম্পূর্ণরূপে আপনার জমা দিতেই সক্ষম হবেন " "প্রশ্ন পোস্ট হওয়ার পরে আপনি কি 14 ঘন্টার মধ্যে 14 টি উপাদানের 87E9 ক্রিয়াকলাপটি গুরুতরভাবে পরিচালনা করতে পেরেছিলেন?
পিটার টেলর

3
এছাড়াও, বিবেচনা করুন যে জাপট জাভাস্ক্রিপ্টের উপর ভিত্তি করে, এটি কি সত্যিই 87E9 অনুক্রমের পরিচালনা করতে পারে? এই প্রশ্নটি বলছে যে জাভাস্ক্রিপ্ট অ্যারেটির দৈর্ঘ্য সর্বাধিক E 4E9 হতে পারে। জাপটে কি ফাংশন বা কিছু উত্পন্ন করছে ... \
ব্যবহারকারী 202729

2

রুবি , 120 স্কোর + 112 106 91 82 বাইট

->n{(0...n).map{|a|a+(a+2)%5-([[],[],[0,4,3],[-1,4,4,4],[1,1,6,1]][n%5][a-n]||2)}}

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

ক্রম মূলত (a-2)+(a+2)%5

যদি এন মোড 5 0 বা 1 না হয় তবে শেষ 3 বা 4 টি উপাদান আলাদা।

এটি এখনও অর্ধ-হার্ডকোডযুক্ত, সর্বদা সর্বোত্তম সমাধানটি সন্ধান করে, সম্ভবত এটি আরও কিছুটা গল্ফ করা যেতে পারে তবে আমি ধারণার বাইরে চলে এসেছি।


1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 148 স্কোর + 109 73 বাইট

n=>[...Array(n)].map(_=>l=!m|l>n%5+2&&l>m+2?[+m,m=l+2][0]:l+2,m=n>4,l=~m)

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা: lউত্পাদিত শেষ সংখ্যাটি mট্র্যাক করে এবং বিপরীত দিকের পরবর্তী নম্বরটির উপর নজর রাখে l; একবার lছাড়িয়ে m+2গেলে ভেরিয়েবলের আদান-প্রদান হয়। সিক্যুয়েন্সের শুরুতে একটি সমন্বয় করা হয় যাতে সিক্যুয়েন্সগুলির দৈর্ঘ্য 5 এর গুণক হয় না এমন কোনও সংখ্যা মিস না করে এবং অন্য একটি সমন্বয় করা হয় n=4

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