অংশ + অঙ্কগুলির একটি তালিকা গণনা করুন


12

আমার দশমিক সংখ্যাগুলির একটি তালিকা রয়েছে:

4, 4, 4, 7, 7, 9, 9, 9, 9, 2, 2, 2, 4, 4

দশমিক সংখ্যাগুলির তালিকা আইটেম হিসাবে পরিচিত। আমরা একই আইটেম থেকে অভিন্ন এবং সংলগ্ন সংখ্যার গ্রুপ করে এই আইটেমগুলি থেকে "খণ্ডগুলি" গঠন করতে পারি। আমি প্রতিটি অংশকে একটি অনন্য সংখ্যা নির্ধারণ করতে চাই, 1 থেকে শুরু করে এবং খণ্ডগুলি মূল তালিকায় ক্রম হিসাবে ক্রম হিসাবে প্রদর্শিত হবে। সুতরাং, প্রদত্ত উদাহরণের জন্য আউটপুটটি দেখতে এইরকম হবে:

1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5

ছক পূরণ করা

অঙ্কের একটি তালিকা। (0-9) আপনি চাইলে এই তালিকাটি পড়তে আপনার বিল্ট-ইনগুলি আপনার ভাষা ব্যবহার করতে পারেন। এনকোডিং: এএসসিআইআই

আউটপুট ফরমেট

ডিলিমিটার দ্বারা পৃথক দশমিক সংখ্যার একটি সিরিজ। আপনার প্রোগ্রামটি সর্বদা একই ডিলিমিটার ব্যবহার করতে হবে। ডিলিমিটারটি অবশ্যই 0 বিটের চেয়ে দীর্ঘ হতে হবে। এনকোডিং: এএসসিআইআই

স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।


8
কঠোর ইনপুট এবং আউটপুট বিন্যাসের জন্য কোনও বিশেষ কারণ?
অপ্রকাশিত স্ট্রিং

2
@ আনরলেটেডস্ট্রিং হুম, আমি তাদের আলগা করব।
noɥʇʎԀʎzɐɹƆ

8
আইও এখনও বরং কঠোর। আপনি কী বলতে পারবেন না "ইনপুট এবং আউটপুট একটি তালিকা হিসাবে" এবং সাইট ডিফল্ট আপনার জন্য এটি যত্ন নিতে দেয়?
জো কিং

2
আমরা কি ধরে নিতে পারি যে তালিকাটি খালি নয়?
জো কিং

1
সংজ্ঞা অনুসারে একটি তালিকায় ইতিমধ্যে সীমানা রয়েছে। এ কারণেই এটি একটি তালিকা। আপনি কি বলতে চাইছেন তাও আমি বুঝতে পারি না You may use your language built-ins to read this list however you want.। এর অর্থ কি আমাদের জমাতে রূপান্তরকারী তালিকার জন্য একটি স্ট্রিং অন্তর্ভুক্ত করতে হবে? আর হয় আমরা একটি তালিকা হিসাবে আউটপুট করার অনুমতি দেওয়া?
জো কিং

উত্তর:


7

পাইথন 3.8 (প্রাক রিলিজ) , 41 বাইট

lambda l,n=0:[n:=n+(l!=(l:=x))for x in l]

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

:=নির্ধারিত অভিব্যক্তিগুলির যাদু ওয়ালরাসকে প্রশংসা করুন ।


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

n=0
for x in input():n+=x!=id;id=x;print n

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


হুম, পাইথ এ আর কত দিন থাকবে?
noɥʇʎԀʎzɐɹƆ

হু, আমি এড়িয়ে গেলাম idকারণ এটি 2 বাইট দীর্ঘ ...
এরিক দি আউটগলফার

ওফ চমৎকার ধারণাid
ফরওয়ার্ড

একটি সরল অনুবাদ জন্য 8 নোট 8 নোট: এটি অনলাইন চেষ্টা করুন!
isaacg



3

জেলি , 6 5 বাইট

ŒɠµJx

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

আনলেলেটেড স্ট্রিংয়ের জন্য একটি বাইট সংরক্ষণ করা !

অ্যারের হিসাবে ইনপুট এবং আউটপুট (খোলার / বন্ধনী বন্ধনী সহ)

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

ŒɠµJx - Main link, takes one argument:                       [7, 7, 5, 5, 5, 1]
Œɠ    - Get the lengths of consecutive elements:             [2, 3, 1]
  µ   - Call these lengths A
   J  - range(length(A))                                     [1, 2, 3]
    x - Repeat each element by the corresponding value in A: [1, 1, 2, 2, 2, 3]


1
এই সমস্ত নতুন-জ্বলন্ত পরমাণুগুলিকে @ আনরলেটেড স্ট্রিং!
আগস্ট'১১-




2

পার্ল 6 , 21 বাইট

{+<<[\+] $,|$_ Zne$_}

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

নামবিহীন কোড ব্লক যা একটি তালিকা নেয় এবং একটি তালিকা ফেরত দেয়। এটি সংযুক্ত উপাদানগুলির প্রতিটি জোড়া সমান নয় কিনা তা তুলনা করে কাজ করে, তালিকার সংখ্যার যোগফল তুলনায়।


2

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

γdƶ˜

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

γ       # group adjacent equal digits together
 d      # replace all digits with 1
  ƶ     # multiply each group by its 1-based index
   ˜    # flatten

আমি ভুলে যাচ্ছি যে 05ab1e এর ƶ... + 1 আছে
মিঃ এক্সকোডার

1
এখানে বিকল্প 4-বাইটার:ηεγg
কেভিন ক্রুইজসেন







1

পার্ল 5 , 27 বাইট

s/\d/$i+=$&!=$p;$p=$&;$i/ge

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

কমান্ড লাইন বিকল্পটি -pপার্ডটি এসটিডিআইএন থেকে "ডিফল্ট ভেরিয়েবল" এ ইনপুট লাইন পড়তে সক্ষম করে $_। এটি তখন $_কাউন্টারটির সাথে সমস্ত অঙ্ক সন্ধান করে $i। এবং $iপ্রতিটি অঙ্কের জন্য বৃদ্ধি করা হয় যা পূর্ববর্তী অঙ্কের চেয়ে পৃথক, যা এটিও প্রথম অঙ্কে থাকে তাই কাউন্টারটি শুরু হয় 1। আগের অঙ্কটি সংরক্ষণ করা হয় $p


1

পাইথ , 13 11 বাইট

s.e*]hkhbr8

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

         r8  # Run-length encode (implicit argument is the input) (-> [[frequency, char], ...]
 .e          # Enumerated map (current element is b, index is k) over rQ8
   *]hk      # [ k+1 ] *
       hb    #           b[0]
s            # Reduce list on + ([a]+[b] = [a,b])

-২ বাইটস মিঃ এক্সকোডারকে ধন্যবাদ


hMsM._+0nVt-2 বাইট জন্য।
মিঃ এক্সকোডার

অথবা আপনি আপনার পদ্ধতির রাখতে চান তাহলে, rQ8হিসাবে একই r8এবং .nহতে পারে sজন্য -2 পাশাপাশি
জনাব Xcoder

আহা সুন্দর, দস্তাবেজগুলি কোন ফাংশনগুলি অন্তর্ভুক্ত করে তা উল্লেখ করেনিQ
ar4093

1

স্কালা , 75 বাইট

s=>s.scanLeft(("",0))((x,y)=>(y,x._2+(if(x._1!=y)1 else 0))).tail.map(_._2)

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

যদি ইনপুট এবং আউটপুট অবশ্যই কমা দ্বারা পৃথক স্ট্রিং (এবং তালিকা নয়) তবে 102 বাইট।

s=>s.split(", ").scanLeft(("",0))((x,y)=>(y,x._2+(if(x._1!=y)1 else 0))).tail.map(_._2).mkString(", ")

1

জেলি , 5 বাইট

nƝÄŻ‘

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

আমি প্রথম দিকে 4-বাইটারের জন্য লক্ষ্য রেখেছিলাম (একই প্রোগ্রামটি কিন্তু ছাড়াই Ż) তবে দ্রুত বুঝতে পেরেছিলাম যে একটি তদারকির কারণে প্রতিবার 1 জনকে চাপ দেওয়া হয়েছিল ... যদিও জেলিতে আরও 5-বাইটার রয়েছে, আমি থাকব আসলে এটি রাখুন কারণ এটি একটি ভিন্ন পদ্ধতি ব্যবহার করে।

LLiLi+1,1i<|L|



1

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

পূর্ণসংখ্যার অ্যারের হিসাবে ইনপুট নেয়।

a=>a.map(p=n=>i+=p!=(p=n),i=0)

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

মন্তব্য

a =>                // a[] = input array
  a.map(p =         // initialize p to a non-numeric value
  n =>              // for each value n in a[]:
    i +=            //   increment i if:
      p != (p = n), //     p is not equal to n; and update p to n
    i = 0           //   start with i = 0 (chunk counter)
  )                 // end of map()

1

পিএইচপি , 52 বাইট

while(''<$d=$argv[++$x])echo$i+=$argv[$x-1]!=$d,' ';

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

কমান্ড লাইন মাধ্যমে আউটপুট, আউটপুট STDOUT

সমস্যাযুক্ত '0' == 0তুলনা বাগফিক্সের জন্য থেক্স থেকে @ নাইট 2 !


@ নাইট 2 ভাল ধরা! আপডেট এবং স্থির। ধন্যবাদ!
640KB



0

++ , 23 বাইট যুক্ত করুন

D,f,@*,BGd€bL$bLRz€¦XBF

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

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

D,f,@*,     - Define a function, f, that takes one argument:  [7 7 5 5 5 1]
       BG   - Group neighbouring elements together:           [[[7 7] [5 5 5] [1]]]          
       d    - Duplicate:                                      [[[7 7] [5 5 5] [1]] [[7 7] [5 5 5] [1]]]
       €bL  - Get the length of each:                         [[[7 7] [5 5 5] [1]] [2 3 1]]
       $bLR - Length, then range of length:                   [[2 3 1] [1 2 3]]
       z    - Zip together:                                   [[2 1] [3 2] [1 3]]
       €¦X  - Reduce each by repetition:                      [[1 1] [2 2 2] [3]]
       BF   - Flatten:                                        [1 1 2 2 2 3]
            - Due to the * in the function definition,
                 return the whole stack:                      [1 1 2 2 2 3]


0

রেটিনা 0.8.2 , 34 বাইট

\b\d+\b(?<=(\b(\3|(\d+))\D*)*)
$#3

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

\b\d+\b

ঘুরে প্রতিটি সংখ্যার সাথে মিল দিন।

(?<=(...)*)

যতটা সম্ভব ম্যাচের জন্য পিছনের দিকে তাকাতে শুরু করুন। (পরবর্তী এন্ট্রিগুলি ডান থেকে বাম ক্রমে থাকবে যেমন লুকবাইন্ড কাজ করে))

\D*

বিভাজনকারীদের এড়িয়ে যান।

(\3|(\d+))

গতবারের মতো একই সংখ্যার সাথে মিলিয়ে দেখার চেষ্টা করুন, তবে এটি ব্যর্থ হয়ে কেবল যে কোনও সংখ্যার সাথে মেলে তবে মনে রাখবেন যে আমাদের একটি নতুন সংখ্যাটি মেলাতে হয়েছিল।

\b

পুরো নম্বরটি মিলছে কিনা তা নিশ্চিত করুন।

$#3

নতুন সংখ্যার সংখ্যা গণনা করুন।


0

স্ট্যাক্স , 10 বাইট

▓ª2ªmD?Ä╧╖

এটি চালান এবং এটি ডিবাগ করুন

আউটপুট একটি ডিলিমিটার হিসাবে স্থান ব্যবহার করে। ইনপুটটি বিভাজনকারী হিসাবে কমা ব্যবহার করে এবং এখন বন্ধনীগুলি বন্ধনী হিসাবে সুনির্দিষ্ট স্পেসিফিকেশন অনুসরণ করে।


0

সি (জিসিসি) , 62 61 বাইট

এটি আমার করা কয়েকটি এন্ট্রিগুলির মধ্যে একটি যেখানে একটি সম্পূর্ণ প্রোগ্রাম কোনও ফাংশন জমা দেওয়ার চেয়ে খাটো হয়!

প্রথম পাসে, আমি পূর্ববর্তী মানটির বিষয়ে চিন্তা করি না, সুতরাং আমি যে সত্যটি argvকোথাও একটি পয়েন্টার এবং তার মধ্যে [0..9] হওয়ার সম্ভাবনা খুব কম!

s;main(i,j){for(;~scanf("%d,",&i);j=i)printf("%d ",s+=j!=i);}

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



0

সি (জিসিসি) , 62 বাইট

f(_,l)int*_;{printf("%d ",l=--l?f(_,l)+(_[l]!=_[l-1]):1);_=l;}

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

একটি ফাংশন যা তালিকা এবং তার দৈর্ঘ্যকে আর্গুমেন্ট হিসাবে গ্রহণ করে।


সি (জিসিসি) , 60 বাইট

f(_,l)int*_;{_=printf("%*d",--l?f(_,l)+(_[l]!=_[l-1]):2,0);}

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

অচেনা আউটপুট 0গুলি , দ্বারা নির্ধারিত

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