সমুদ্র ঘোড়ার জন্য জুতো


30

সিহর্সগুলির অবশ্যই জুতা দরকার। তবে, এক সমুদ্রের ঘোড়া, কেবল একটি পুচ্ছ রয়েছে, কেবল একটি জুতো দরকার। দুর্ভাগ্যক্রমে, জুতা কেবল জোড়া মধ্যে আসে in সমুদ্র সৈকত সরকারের জন্য অর্থ কঠোর, সুতরাং তাদের যতটা সম্ভব কম জোড়া কিনতে হবে। প্রতিটি সমুদ্রের জুতার আকারের এক্স থাকে যেখানে x একটি ধনাত্মক পূর্ণসংখ্যা। তবে, সমুদ্রের ঘোড়া কোনও আকারের জুতো পরতে পারে x - 1 বা x + 1 প্রয়োজনে।

আপনার কাজ হ'ল সমুদ্রযাত্রার সরকার তাদের সমস্ত সমুদ্র ঘোড়ার উপর জুতা রাখার জন্য ন্যূনতম সংখ্যক জোড়াটি আউটপুট করা।

আপনি চাইলে ইনপুট নিতে পারেন, স্ট্যান্ডার্ড লুফোলস ইত্যাদি

এটি , বাইট জেতে সংক্ষিপ্ততম কোড।

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

2 4 6 6 8 14 ->        4
2 1 3 1 1 ->           3
4 1 4 9 1 8 9 1 8 4 -> 6
1 2 3 5 7 8 10 12 ->   4

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

1
কীভাবে এটি তুচ্ছভাবে করা যায় তা আমি দেখছি না ...
লিকি নুন

5
@ bushdid911 আমি মনে করি জেলি কীভাবে একটি মন্তব্যে কাজ করে তা আমি ব্যাখ্যা করতে পারি না
লিকি নুন

1
@ কোডি গ্রে আপনার আকার 3 জোড়া থাকতে পারে যা 2 এবং 4 এর মধ্যে রয়েছে
জাগারব

2
সম্ভাব্য শিরোনাম সম্পাদনা: সমুদ্র-
ঘোড়াগুলি

উত্তর:


5

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

মন্তব্যগুলিতে বর্ণিত পদ্ধতির ওপিকে ব্যবহার করে।

{¥3‹J0¡€gÌ2÷O

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

ব্যাখ্যা

{¥3‹J0¡€gÌ2÷O   Argument l
{               Sort l
 ¥              Push deltas
  3‹            Map to lower than 3 (1 for true, 0 for false)
    J0¡         Join and split on 0
       €g       Map to length
         Ì      Each + 2
          2÷    Integer division by 2
            O   Sum

8

হুশ , 15 14 বাইট

Γ0(→₀?tI↑<+3)O

লোভী অ্যালগরিদম ব্যবহার করে: বাম থেকে সাজান এবং জোড়া pair এটি অনলাইন চেষ্টা করুন!

লিওকে 1 বাইট সংরক্ষণ করার জন্য ধন্যবাদ

ব্যাখ্যা

এটি প্রথম হুস্কের উত্তর যা ব্যবহার করে Γ, তালিকার সাথে মেলে প্যাটার্নের জন্য ফাংশন। এই ব্যবহারের ক্ষেত্রে, যদি aমান হয় এবং gএকটি ফাংশন হয়, তবে হাস্কেল স্নিপেট দ্বারা সংজ্ঞায়িত Γagফাংশনটির সাথে মিলে যায়f

f [] = a
f (x:xs) = g x xs

আমি বেস কেসটি হিসাবে a = 0এবং হিসাবে সংজ্ঞায়িত করি

g x xs = 1 + line0 (if head xs < x+3 then tail xs else xs)

যেখানে line0পুরো লাইনকে বোঝায়। তুষ কোড ইন, xএবং xsল্যামডা ফাংশন অন্তর্নিহিত আর্গুমেন্ট আছে, এবং line0হয় । প্রতিটি পুনরাবৃত্তির কলটিতে তালিকাটি আবার সাজানো হয় তবে গল্ফ চ্যালেঞ্জের ক্ষেত্রে এটি কোনও ব্যাপার নয়।

Γ0(→₀?tI↑<+3)O
             O  Sort
Γ               and pattern match
 0              giving 0 for an empty list
  (         )   and applying this function to a non-empty list:
          +3     Add 3 to first argument (x),
         <       make a "test function" for being less than that,
        ↑        take values from second argument (xs) while they pass the test.
     ?           If that prefix is nonempty (next value can be paired),
      t          take tail of xs,
       I         otherwise take xs as is.
    ₀            Apply the main function (line0) to this list
   →             and add 1 for the singleton/pair we just processed.

এই সমস্ত লোকেরা তাদের নিজস্ব ভাষা ব্যবহার করে আমাকে নিজের তৈরি করতে চায়। প্রথমে আমাকে একটি নাম নিয়ে আসতে হবে: পি
রিগড

5

পাইথন 3 , 69 66 60 বাইট

9 বাইট Xnor ধন্যবাদ।

f=lambda a:a[1:a.sort()]and-~f(a[1+(a[1]-a[0]<3):])or len(a)

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


আমি মনে করি আপনি করতে পারেন a.sort()
xnor

@ এক্সনর সম্পন্ন হয়েছে, ধন্যবাদ
ফাঁস নুন

বাছাই একটি আটকে যেতে পারে lambda:f=lambda a:a[1:a.sort()]and-~f(a[1+(a[1]-a[0]<3):])or len(a)
xnor

or[]<a3 বাইট সংরক্ষণ করতে
ফিলিপ নারদী বাটিস্তা

4

জেলি , 20 18 বাইট

ṢLµIḢ<3+2⁸ṫß‘µLỊ$?

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

আমার এর কাঁটাচামচ পাইথন উত্তর


-4 বাইট: IḢ<3+2⁸ṫß‘µLḊ?(মূলত আমি এর আগে করার কোনও কারণ দেখতে পাচ্ছি না L, এবং তালিকাটি যদি 1 বা 0 দৈর্ঘ্যের হয় তবে ফিরে []আসি এবং এর µথেকে আমি একটি অপসারণ করতে পারি LµḊ?)
এরিক দ্য আউটগলফার

তবে আপনি কোথাও বাছাই করেননি ...
লিকি নুন

এখন আমি টিবিএফ থেকে কিছুটা বিভ্রান্ত হয়ে পড়েছি ... আমার ধারণা আপনার কোডটি আসলে যা করে তার চেয়ে কিছুটা আলাদা? আমি যদি সঠিকভাবে বুঝতে পারি তবে আপনি আমার গল্ফের জন্য একটি প্রিপেন্ড করতে চাইতে পারেন।
এরিক আউটগল্ফার

আপনার সাজানোর সাথে কিছু বিস্মৃত। [1, 1, 1, 1, 4, 4, 4, 8, 8, 9, 9] কাজ করে তবে [4,1,4,9,1,8,9,1,8,4,1] 'না টি।
কারচুপি করা হয়েছে

@ bushdid911 তারা দুজনেই কাজ করে। আপনি প্রদর্শন করতে পারেন?
লিকি নুন

4

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

f=lambda a:a>[a.sort()]and-~f(a[[3+a.pop(0)]>a:])

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

লিকি নুনের পুনরাবৃত্ত সমাধানের উপর ভিত্তি করে ।


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

p=c=0
for x in sorted(input()):c+=x>p;p=(x>p)*(x+2)
print c

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

xসাজানো ক্রমে আকারগুলির মাধ্যমে প্রযোজ্য । pপূর্বেরটির সাথে জোড় করে বর্তমান আকারের জন্য উপরের প্রান্তটিকে স্মরণ করে । যদি তাই হয় ( x>p), পরেরটির 0জোড় তৈরি করা অসম্ভব করে তুলতে প্রান্তিকতাটি পুনরায় সেট করুন । যদি না হয়, আউটপুট গণনা বাড়ায় cএবং পরবর্তী থ্রেশহোল্ড সেট pকরতে x+2

নতুন প্রান্তিকতা p=(x>p)*(x+2)একটি পুষ্পিত এক্সপ্রেশন। আমি এটি ছোট করার জন্য একটি উপায় খুঁজে পেতে চাই like


2

সি #, 111 108 137 102 বাইট

এটি কখনই জিতবে না তবে আমি অনুশীলনটি যাইহোক সমাধান করতে চেয়েছিলাম:

Array.Sort(a);var c=0;for(var i=0;i<a.Length;i++){c++;i+=a.Length-i>1&&a[i+1]-a[i]<3?1:0;}Console.WriteLine(c);

@ গ্র্যাবেথিশের মন্তব্যের জন্য ধন্যবাদ, আমি আরও কয়েকটি বাইট নিবল করতে সক্ষম হয়েছি:

Array.Sort(a);int c=0,i=0;for(;i<a.Length;i++){c++;i+=a.Length-i>1&&a[i+1]-a[i‌​]<3?1:0;}Console.Wri‌​teLine(c);

পিসি ও জি বিশেষ সি # নিয়ম অনুসরণ করে:

class P{static void Main(){Array.Sort(a);int c=0,i=0;for(;i<a.Length;i++){c++;i+=a.Length-i>1&&a[i+1]-a[i]<3?1:0;}Console.WriteLine(c);}}

ল্যাম্বডা ফাংশন ব্যবহার করে:

a=>{System.Array.Sort(a);int c=0,i=0;for(;i<a.Length;c++)i+=a.Length-i>1&&a[i+1]-a[i]<3?2:1;return c;}

মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
ডেনিস

উত্তরের মাধ্যমে অগ্রগতি রক্ষার জন্য আপনাকে ধন্যবাদ - এটি চূড়ান্ত উত্তরের মতোই আকর্ষণীয়।
ক্রিগগি

2

পার্ল, 113 বাইট

say sub{for(1..$#_){$x{$i}++;$i++if$_[$_]-$_[$_-1]>2}$x{$i}++;$-+=$_/2+$_%2for values%x;$-}->(sort{$a<=>$b}@ARGV)

কমান্ড লাইন (আ @ARGV) থেকে প্রিন্ট করে আর্গুমেন্টের তালিকা নেয়STDOUT ডিফল্টরূপে করে।

সিহর্সভিলে ...

একটি পাড়া প্রতিবেশী জুতো আকারের ক্রম ence বাছাই করার সময়, প্রতিটি সমুদ্রের ঘাটে আশেপাশের প্রতিবেশী থাকে যা একই জুতার আকার ভাগ করে নিতে পারে। আশেপাশে একাধিক প্রতিবেশী থাকতে পারে এবং কোনও প্রতিবেশী দুইজনের চেয়ে বেশি আলাদা হতে পারে:

যেমন 3 3 4 5 5 6একটি একক পাড়া, যেমন আছে 2 4 6 6, এবং1 2 3 5 7 8 10 12

যেমন 1 1 1 4 5 6দুটি পাড়া থাকে: 1 1 1এবং 4 5 6

অ্যালগরিদমের ভিত্তি

দুটি ধরণের পাড়া রয়েছে:

  • এমনকি আকারের

    এগুলির জন্য, n/2জোড়া সর্বদা পর্যাপ্ত:

    উদাহরণস্বরূপ , এবং এর 3 3 4 5 5 6জন্য তিন জোড়া দরকার requires3 34 55 6

  • বিজোড় আকারের

    এগুলির জন্য, ceil(n/2)জোড়া সর্বদা পর্যাপ্ত:

    যেমন 12 13 13 14 15তিন জোড়া প্রয়োজন 12 13, 13 14এবং 15একা।

অ্যালগরিদম পরীক্ষা করার জন্য অগল্ফড কোড

sub pairs {
    @_ = sort { $a <=> $b } @_;
    my @hood;
    my $i = 0;
    for (1..$#_) {
        push @{$hood[$i]}, $_[$_-1];
        $i++ if $_[$_]-$_[$_-1]>2
    }
    push @{$hood[$i]}, $_[$#_];
    my $pairs;
    $pairs += int(@{$hood[$_]} / 2) + @{$hood[$_]} % 2 for 0..$#hood;
    return "$pairs : @{[map qq([@$_]), @hood]}\n";
}

নমুনা ফলাফল

(আশেপাশে আবদ্ধ [ ] )

4 : [2 4 6 6 8] [14]
3 : [1 1 1 2 3]
6 : [1 1 1] [4 4 4] [8 8 9 9]
4 : [1 2 3 5 7 8 10 12]
17 : [1 2 3] [6 8 9 11 13 13 15 17 19 20 21] [27 28 29 30 32 33 35 35] [38 38 40] [43 45 45 46] [49]
18 : [3 3 3] [8 10 11 11 11 12 14] [18] [21 22 23] [29] [32 33 34 34 34 35 37 38 39 41] [44 46 48 49 49]
18 : [1 2 3] [6] [9] [12 13 15 17 18 19 20 21 21 23 24 25 25] [35 36] [40 41 41 41 43 45 46 46 46] [49]
16 : [1 3] [6 6 6 6] [11 12 14 14 15 17 19 20 20 21 21 22] [25 25 27 29 31 32 33] [38 39] [44 45] [49]
16 : [2 4] [7 7 8 10 12 13 15 16] [22 22 24 24] [27 29 31 31 33 34] [37 38 39] [42 43 43 44 45 46 47]
17 : [2 4 5 6 7] [11 11 13 13 14 15 16 17 17 17 19] [29] [34 35 36] [39 39 41 41 41 42 44 46] [49 49]
18 : [3 4 5 7 7] [10 10 12 12 12 14 15 15 17 18] [21] [24 24] [28] [32] [39 40 41 42 43 44 44] [47 47] [50]
16 : [2 4] [7 7 8 8] [11 11] [14 16 17 17 18 19] [22 24 26 26] [30 31 33 34 34 35] [38 38 39] [42 43] [50]
16 : [1 3 4 5] [11 11] [15 15 17 18 19 21 22 23 23 25 27 27 27 27 28 29 30 30] [33 34] [41 41] [45] [48]
17 : [2 2 3 4 6 6 7] [10 10] [13 14 15 16 17 19] [23 25] [28 30 31 32 33 34 36 37 38] [42] [48 49 50]
17 : [2] [7 9 9 9 9 10 10 12] [16 16] [19 21 21 22 24] [27 27 27] [36 36 36 37 39 39 40 40 40 41] [46]
18 : [1] [5 6 6 8] [11 11 12] [19 19 20 21 22 24 26 26] [29 30 31 32 34 35 35] [38] [42] [45] [48 48 49 49]
16 : [2 4 4 6] [11 12 13 13 13] [21 21 21 23] [30 31 31 33 35] [41 41 41 43 45 46 47 48 48 49 49 50]
16 : [2 2] [8 10 12] [15 15 15 15 16 16] [19 20] [23 24] [28 28 29] [32 34 36 36 36 37 39 41] [44 45 47 48]
17 : [3 3] [6] [9 10 11] [17 18] [21 23 23] [27 28 29 29 30 31 31 33] [37 37 39 39 39 40] [43 44] [47 48 49]
17 : [4] [7 9 10 10] [14 14 14] [17] [21] [25 25 27 27 28 30] [33 35 37 37 38 40 41 43 44 45 47 48 49 50]
18 : [3 4 5 6 7] [10 11 12 12 14 15 16 17] [20] [23 24 25 25 26 26] [31] [35] [38 40 41 42] [45 46 47] [50]
17 : [1 3] [8 10] [16 16 18 19 20 20] [23 23] [26] [30 31 33 34 35] [39 39 39 40 41 42 43] [46 46 47 47 49]
18 : [2 4 4 4 4 6 7 8 8 10 10] [13] [16 17] [20 22 23 25 25] [29 29 29] [33] [39 40 42] [48 48 49 49]
16 : [1 1 3 4] [7 8 10 10] [18 18 20 21] [24 25 26 27 29 31 33 33 34 34] [37 37 39] [45 46 48 49 49]
17 : [1] [4 4] [7 9 9 11 12] [15 16 17 17 18 19 21 21 21 22 23] [27 28 30 31] [37 39] [42] [48 49 49 50]
17 : [3 4 6 7 7 8 9 10 10 11 13 14 14] [21 21 23] [26 27] [31 32] [35 36] [39 40 41 41 41] [44 44] [49]
16 : [1] [4 6 6 8 10 12 13 15] [20 20 21 21] [29 29 30] [34 36 36 37 37 38 38 40] [44 45 46 47 47 48]
17 : [3 4 4 6] [12 14 15 16 17] [20 21 22 22 22 23 24 26 26] [29 30 32] [35 37 37 37 38 39 41 42] [48]
19 : [1] [5] [8 9] [14 14 14 16 16 17 17 17 17] [21] [24 24 24] [30] [34 35 36 37 39 40 40] [45 46 46 47 48]

1

গণিত, 67 বাইট

Length@Flatten[Partition[#,UpTo@2]&/@Split[Sort@#,Abs[#-#2]<3&],1]&

ওল্ফ্রাম স্যান্ডবক্সে চেষ্টা করুন ।


কোনভাবেই আমরা পরীক্ষা করতে পারি? ওল্ফ্রামের মতো জিনিস?
লিফডেভেন

আপনি কি অনলাইনে চেষ্টা করতে পারেন! গণিতে। ম্যাথিক্স ওল্ফ্রাম ভাষার সমস্ত ক্রিয়াকলাপ সমর্থন করে না, তবে এই এন্ট্রিতে ব্যবহৃত সমস্তগুলি প্রয়োগ করা হয়েছে, সুতরাং ম্যাথিক্স নষ্ট হয়েছে বা এই সমাধানটি অবৈধ।
পাভেল

এটি স্যান্ডবক্স.ওপেন.ওল্ফ্রামক্লাউড.কম এ কাজ করে , সুতরাং সমস্যাটি ম্যাথিকসের পক্ষে
ওভিএস

1
@ ফিনিক্স মনে করেন না যে ম্যাথিক্স সমর্থন করেUpTo
মার্টিন

0

পার্ল, 103 বাইট

say sub{for(1..$#_+1){$x{$i}++;$i++if$_[$_]-$_[$_-1]>2}@_/2+.5*grep$_%2,values%x}->(sort{$a<=>$b}@ARGV)

কমান্ড লাইন (আ @ARGV) থেকে আর্গুমেন্টের তালিকা নেয় ,STDOUT ডিফল্টরূপে প্রিন্ট করে।

নিম্নলিখিত সম্পর্কের ভিত্তিতে এটি একটি বিকল্প পদ্ধতি:

Minimum pairs = ( Population size + # Odd neighbourhoods ) / 2

( কিভাবে এই উত্তর দেখুন আশপাশ নির্ধারণ করা থাকে)


0

জাভাস্ক্রিপ্ট, 67 বাইট

a=>(a=a.sort((a,b)=>a-b)).filter((n,i)=>m=!m|n-a[i-1]>2,m=0).length

কোড স্নিপেট উদাহরণ:

f=
a=>(a=a.sort((a,b)=>a-b)).filter((n,i)=>m=!m|n-a[i-1]>2,m=0).length

v=[[2,4,6,6,8,14],[2,1,3,1,1],[4,1,4,9,1,8,9,1,8,4],[1,2,3,5,7,8,10,12]]
for(k=0;k<4;k++)
  console.log(`f([${v[k]}])=${f(v[k])}`)

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