একটানা পূর্ণসংখ্যা সঙ্কুচিত করুন


22

সম্পর্কিত: আমাকে কতগুলি গণিতের সমস্যা আছে তা বলুন!

চ্যালেঞ্জ

দৃger়ভাবে ধনাত্মকভাবে আরোহণের পূর্ণসংখ্যা তালিকা এল এবং একটি পূর্ণসংখ্যার 3 ≤ N ≤ দৈর্ঘ্যের এল প্রদান করে, এল এর ক্রমাগত পূর্ণসংখ্যার রান length N এর মধ্যম পূর্ণসংখ্যাকে একক ড্যাশ দিয়ে প্রতিস্থাপন করুন -

বিধি

  • অনুভূমিক সাদা স্থান অপ্রাসঙ্গিক।
  • আপনি নিজের ভাষার ডিফল্ট তালিকার বিন্যাসের পরিচিতিকারী, বিভাজক এবং টার্মিনেটর অক্ষরগুলি optionচ্ছিকভাবে সংরক্ষণ করতে পারেন। দেখুন বিন্যাস উদাহরণ নীচে।

ডেটা উদাহরণ

এই সমস্ত উদাহরণ ব্যবহার L = 3 5 6 7 8 10 11 12 14 16 17 18 19 20 21 22 24

N = 33 5 - 8 10 - 12 14 16 - 22 24

N = 43 5 - 8 10 11 12 14 16 - 22 24

N = 53 5 6 7 8 10 11 12 14 16 - 22 24

N = 83 5 6 7 8 10 11 12 14 16 17 18 19 20 21 22 24

ফর্ম্যাট উদাহরণ

ইনপুট
L = [3,5,6,7,8,10,11,12,14,16,17,18,19,20,21,22,24]এবং N = 3
নীচের সমস্ত লাইনগুলি বৈধ প্রতিক্রিয়াগুলির উদাহরণ, উভয়ই আসল তালিকা এবং স্ট্রিং হিসাবে:

[3,5,"-",8,10,"-",12,14,16,"-",22,24]
[3,5,-,8,10,-,12,14,16,-,22,24]
[3,5-8,10-12,14,16-22,24]
3,5-8,10-12,14,16-22,24

সন্দেহের মতো {1 2 3}এবং অন্যান্য তালিকা ফর্ম্যাটগুলির ক্ষেত্রেও একই প্রযোজ্য (1; 2; 3)? জিজ্ঞাসা করুন!


এটি ব্যবহার করার প্রয়োজন কি না -আমাদের আলাদা চিহ্ন ব্যবহার করার অনুমতি রয়েছে?
মাইল

@ মাইলস কি কোনও আলাদা প্রতীক আপনাকে বাইট সংরক্ষণ করবে?
অ্যাডম

আমি অনন্তটি ব্যবহার করার কথা ভাবছি _যাতে আমি
মাইল

@miles আহ, হাঁ, তুমি কেন এগিয়ে যান না এবং যে না, কিন্তু এটি সম্পর্কে না করতে, এবং যদি আপনি বিরক্ত করা যেতে পারে, (আমি অনেক লম্বা অনুমান) boxed সঙ্গে সমাধান লিখতে '-'। ড্যাশগুলি সন্নিবেশ করার আগে আপনি সবকিছুকে স্ট্রিংফাই করতে সক্ষম হতে পারেন, না?
Adám

নিম্নলিখিত বৈধ? [3,5,-8,10,-12,14,16,-22,24](এটি এমন ফর্ম্যাট বলে মনে হয় যা প্রকারের দিক দিয়ে সর্বাধিক জ্ঞান অর্জন করে)
লিকি নুন

উত্তর:


7

পাইথন 2 , 132 115 বাইট

-17 বাইট ধন্যবাদ লিকি নুনকে ধন্যবাদ

x,n=input()
o=[]
i=1
while x:
 t=x[0]
 while[t+i]==x[i:i+1]:i+=1
 o+=[[t,'-',t+i-1],x[:i]][i<n];x=x[i:];i=1
print o

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



চান while t+i==x[i]:কাজ করে? নাকি আমি কিছু মিস করছি?
জাকারি

@ জাচারý iএর আকারের চেয়ে বেশি পেলে তা ভেঙে যাবেx
রড

6

জেলি ,  26 25  23 বাইট

-২ বাইটস এরিক দ্য আউটগোল্ফারকে ধন্যবাদ (যদি আইএফ বিবৃতিটি মূল লিঙ্কে আনার মাধ্যমে)

Ḣ;Ṫj”-
IỊ¬1;œṗ⁸¹ÇL<¥?€F

[3,5,"-",8,10,"-",12,14,16,"-",22,24]ফর্ম্যাটে একটি তালিকা ফেরত দেওয়া একটি ডায়াডিক লিঙ্ক ।

এটি অনলাইন চেষ্টা করুন! (পাদলেখ উদাহরণস্বরূপ ফর্ম্যাট মুদ্রণের জন্য স্পেসগুলির সাথে পৃথক করে)।

কিভাবে?

Ḣ;Ṫj”- - Link 1, format a run: list R
Ḣ      -     head
  Ṫ    -     tail
 ;     -     concatenate
    ”- -     literal '-'
   j   -     join

IỊ¬1;œṗ⁸¹ÇL<¥?€F - Main link: list L, number N
I                - incremental differences
 Ị               - insignificant? (<=1)
  ¬              - not
   1;            - prepend a 1
       ⁸         - chain's left argument, L
     œṗ          - partition (L) at truthy indexes
              €  - for €ach row, R, in L:
             ?   -   if:
            ¥    -   condition: last two links as a dyad:
          L      -     length of R
           <     -     is less than N?
        ¹        -   then: identity - do nothing, yields R
         Ç       -   else: call the last link (1) as a monad with argument  R
               F - flatten into a single list

একটি monadic লিঙ্ক?
ফাঁস নুন

হি, এবং একটি "বিশেষ" এটি।
জোনাথন অ্যালান


চমৎকার জিনিস, ধন্যবাদ @ এরিকট আউটগল্ফার!
জোনাথন অ্যালান

4

পাইথ, 23 বাইট

sm?<ldvzd[hd\-ed).ga=hZ

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

কিভাবে এটা কাজ করে

sm?<ldvzd[hd\-ed).ga=hZkQ

                        Q    autoinitialized to eval(input())
                 .g          group by k ↦
                    =hZ          Z += 1, returning new value (Z is autoinitialized to 0)
                   a   k         absolute difference with k
 m                           map d ↦
  ?                              if
    ld                               length of d
   <  vz                             less than eval(z) (z is autoinitialized to input())
        d                        then d
         [hd\-ed)                else [d[0], '-', d[-1]]
s                            concatenate

3

জাপট , 24 বাইট

óÈÄ¥Yîl ¨V?Zv +'-+Zo :Z

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

ব্যাখ্যা

óÈ   Ä ¥ YÃ ®   l ¨ V?Zv +'-+Zo :Z
óXY{X+1==Y} mZ{Zl >=V?Zv +'-+Zo :Z}   Ungolfed
                                      Implicit: U = input array, V = input integer
óXY{      }                           Group U into runs such that for each pair X, Y:
    X+1==Y                              Y is exactly 1 more than X.
            mZ{                   }   Map each run Z to:
               Zl >=V?                  If Z has at least V items:
                      Zv     Zo           Z.unshift() and Z.pop() (the first and last items)
                         +'-+             joined with a hyphen.
                                :       Otherwise:
                                 Z        just Z.
                                      Implicit: output result of last expression



1

পিএইচপি 7, 137 136 134 117 110 108 বাইট

for($a=$argv,$i=2;$n=$a[$i++];$k<$a[1]||array_splice($a,$i,$k-2,"-"))for($k=print"$n ";$a[$i+$k]-++$k==$n;);

Lপ্রথম যুক্তি থেকে নেওয়া, তার পরে উপাদান তালিকাবদ্ধ করুন । এটি দিয়ে চালান -nrবা অনলাইনে চেষ্টা করুন

পিএইচপি <7 এর জন্য (+1 বাইট) $L=($a=$argv)দিয়ে প্রতিস্থাপন করুন $a=$argv,$L=

ভাঙ্গন

for($a=$argv,$i=2;              # import input
    $n=$a[$i++];                # loop $n through list elements
    $k<$a[1]||                      # 3. if streak length ($k) is >=L ($a[1])
        array_splice($a,$i,$k-2,"-")    # then replace with "-"
)
for($k=print"$n ";                  # 1. print element and space
    $a[$i+$k]-++$k==$n;);           # 2. find consecutive numbers

1

রেটিনা , 101 বাইট

\d+
$*
\b(1+) (?=1\1\b)
$1X
T`X` `\b((X)|1)+\b(?=.*¶(?<-2>1)+(?(2)(?!))11)
T`X`-
-1+(?=-)|¶1+

1+
$.&

এটি অনলাইন চেষ্টা করুন! Lপ্রথম লাইনে স্পেস-বিভাজিত তালিকা এবং Nদ্বিতীয় লাইনে পূর্ণসংখ্যা নিয়ে যায়। ব্যাখ্যা: প্রথম পর্যায়ে ইনপুটটিকে অবিচ্ছিন্ন রূপান্তরিত করে। দ্বিতীয় পর্যায়ে ক্রমাগত পূর্ণসংখ্যার মধ্যে স্থানকে একটিতে পরিবর্তন করা হয় X। তৃতীয় পর্যায়ে ধারাবাহিক পূর্ণসংখ্যার রান সন্ধান করা হয় যার দৈর্ঘ্য কম Nএবং তাদের Xস্থানগুলিতে ফিরে আসে। চতুর্থ পর্যায় পরিবর্তন Xকরতে গুলি -(এই 3 ব্যবহার চেয়ে খাটো বাইট ছিল -পঞ্চম পর্যায় সব পূর্ণসংখ্যার এখনও একটি রান মাঝখানে বাম মোছা হয়, ভাল হিসাবে হিসাবে প্রথম স্থানে গুলি।) Nচূড়ান্ত পর্যায়ে ধর্মান্তরিত দশমিক ফিরে যায়।



1

জে , 40 বাইট

;@((](,_,{:)/)^:(<:#)&.>]<;.1~1,1<}.-}:)

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

_পরিবর্তে ব্যবহার করে -

ব্যাখ্যা

;@((](,_,{:)/)^:(<:#)&.>]<;.1~1,1<}.-}:)  Input: integer N (LHS), array L (RHS)
                                  }.      Behead L
                                     }:   Curtail L
                                    -     Subtract elementwise to get the increments
                                1<        Test if greater than 1
                              1,          Prepend a 1
                        ]                 Get L
                         <;.1~            Partition L into boxes using the previous array
                     & >                  Operate on each box (partition) with N
              ^:                            If
                   #                          The length of the partition
                 <:                           Is greater than or equal to N
   (](     )/)                                Reduce (right-to-left) it using
         {:                                     Tail
       _,                                       Prepend _
      ,                                         Append to LHS
                     &.>                    Box the result
;@                                        Raze - join the contents in each box

0

জেলি, 39 37 36 বাইট

IỊṣ0;€1ṁ@
ÇL€<Ɠ¬TịÇḊ€Ṗ€F;€”-FyµŒgQ€F

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

আর্গুমেন্টের মাধ্যমে অ্যারে এবং STDIN এর মাধ্যমে পূর্ণসংখ্যা নেয়। টিআইও লিঙ্কটি পাদলেখ ব্যবহার করেÇG যাতে আউটপুট স্থান দ্বারা পৃথক করা হয়।

কিভাবে? (অ্যারে a:, পূর্ণসংখ্যা n:)

(`f`)
IỊṣ0;€1ṁ@
I          Deltas of `a`
 Ị         Insignificant (x -> abs(x)<=1) applied to each element
  ṣ0       Split at occurrences of `0`.
    ;€1    Append `1` to each element
       ṁ@  `a` shaped like that
ÇL€<Ɠ¬TịÇḊ€Ṗ€F;€”-FyµŒgQ€F
Ç                            `f`
 L€                          Length of each element
   <Ɠ                        x -> x < n applied to each element
     ¬                       Logical not of each element (because Jelly doesn't have <= nor >= atoms)
      T                      Nonzero indexes
       ịÇ                    Index `f` at those indexes
         Ḋ€Ṗ€                x -> x[1:-1] applied to each element
             F               Flatten
              ;€”-           Append a hyphen to each element
                  F          Flatten
                   y         Translate (replaces all elements to be deleted with a hyphen)
                    µ        Start a new monadic link
                     Œg      Group runs of equal elements
                       Q€    Uniquify each element (make runs of hyphens one hypen)
                         F   Flatten, yet again.

আমি অনুমান করছি আমি পড়ে গিয়েছি ... এই একদম ফ্ল্যাট


0

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

(e,c)=>{for(i=0,R='';i<e.length;R+=(R&&',')+(u-m>=c?m+'-'+--u:e.slice(z,i))){m=u=e[i],z=i;while(e[++i]==++u);}return R}

একটি বেনামী ফাংশন। ক্রমে ইনপুট নেয় Array L, Integer Nএবং কমা-বিচ্ছিন্ন স্ট্রিং হিসাবে ফলাফল প্রদান করে।


বাইট সংরক্ষণের জন্য কার্চিং ব্যবহার করুন e=>c=>
TheLethalCoder

0

ডায়ালগ এপিএল ভি 16.0, 82 80 78 76 75 65 62 বাইট

{S/⍨1,⍨2≠/S←'-'@(⍸⊃∨/(-0,⍳⍺-3)⌽¨⊂(⍴⍵)↑∧/¨(⍺-1),/¯1⌽1=-2-/⍵)⊢⍵}

বাহ, এটা খারাপ ... স্টেনসিলের সাথে সম্ভবত আরও অনেক খাটো সমাধান রয়েছে।

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

গল্ফিং পরামর্শ স্বাগত!


হ্যাঁ, এটা কি?
জাকারি

দুঃখিত, ভুল জায়গা
অ্যাডম

You আপনার মানে কি?
জাকারি

আমার মন্তব্যটি একটি ভিন্ন চ্যালেঞ্জের ভিত্তিতে ছিল।
অ্যাডম

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