বিভক্ত মার্ক এর চিহ্ন


21

চ্যালেঞ্জ

মার্ক হলেন এমন এক শিক্ষার্থী যিনি Nএকক লাইনে একত্রিত পদ্ধতিতে তার নম্বর পান ।

চ্যালেঞ্জ তার চিহ্ন আলাদা, বুদ্ধিমান প্রতিটি চিহ্ন শুধুমাত্র হতে পারে 0বা 1বা 2বা 3বা 4বা 5বা 6বা 7বা 8বা 9বা 10

ইনপুট

N প্রাকৃতিক সংখ্যা এবং একটি লাইন

আউটপুট

প্রাকৃতিক সংখ্যার একটি সেট।

উদাহরণ

N, One line------------------> Set of marks
3, '843'---------------------> [8, 4, 3]
1, '0'-----------------------> [0]
2, '1010'--------------------> [10,10]
3, '1010'--------------------> [1,0,10] or [10,1,0] 
4, '1010'--------------------> [1,0,1,0]
9, '23104441070'-------------> [2, 3, 10, 4, 4, 4, 10, 7, 0]
12,'499102102121103'---------> [4, 9, 9, 10, 2, 10, 2, 1, 2, 1, 10, 3]
5, '71061'-------------------> [7, 1, 0, 6, 1]
11,'476565010684'------------> [4, 7, 6, 5, 6, 5, 0, 10, 6, 8, 4]
4, '1306'--------------------> [1, 3, 0, 6]
9, '51026221084'-------------> [5, 10, 2, 6, 2, 2, 10, 8, 4]
14,'851089085685524'---------> [8, 5, 10, 8, 9, 0, 8, 5, 6, 8, 5, 5, 2, 4]
11,'110840867780'------------> [1, 10, 8, 4, 0, 8, 6, 7, 7, 8, 0]
9, '4359893510'--------------> [4, 3, 5, 9, 8, 9, 3, 5, 10]
7, '99153710'----------------> [9, 9, 1, 5, 3, 7, 10]
14,'886171092313495'---------> [8, 8, 6, 1, 7, 10, 9, 2, 3, 1, 3, 4, 9, 5]
2, '44'----------------------> [4, 4]
4, '9386'--------------------> [9, 3, 8, 6]

বিধি

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

এখানে পাইথনের স্নিপেটটি আমি n, 'string'কপিপাস্ট করা উদাহরণ টেক্সট ব্লক থেকে জোড়াগুলি spl = [item.split('-')[0] for item in text.split('\n')]
পেতাম

3
ডাউন ভোটের জন্য কিছু মন্তব্য করুন ...
এমডাহুমনে

ডাউনভোটগুলিকে কোনও কারণে মন্তব্য করার প্রয়োজন নেই। এই চ্যালেঞ্জটি সম্পর্কে উন্নত করার মতো কিছুই নেই।
ব্যবহারকারী 202729

সুতরাং এটি সম্পর্কে চিন্তা করবেন না।
ব্যবহারকারী 202729

আউটপুটগুলি কি ইনপুট হিসাবে একই ক্রমে থাকা প্রয়োজন?

উত্তর:


6

ব্র্যাচল্যাগ , 23 21 বাইট

-2 বাইট ধন্যবাদ ফ্যাটালাইজ করার জন্য

h~c.{ịℕ≤10&ịṫ?∧}ᵛ&t~l

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

ইনপুটটি একটি জুড়ি [Line, N]

এটি আমার প্রথম ব্র্যাচিয়েলগ প্রোগ্রাম, সুতরাং সম্ভবত উন্নতির জন্য অনেক জায়গা রয়েছে।

লাইনটির দৈর্ঘ্য> 7 হলে এটি খুব ধীর হয়।

ব্যাখ্যা:

h~c.{ịℕ≤10&ịṫ?∧}ᵛ&t~l
h                         The first element in the input
 ~c                       is formed by concatenating
   .                      the elements in the output array
   .{         ∧}ᵛ     AND For every element in the output array holds that
     ị                      The element converted to an integer
      ℕ                       is a natural number
       ≤10                    and less than or equal to 10
          &ịṫ?              and it has no leading zeroes (*)
                 &t   AND The second element of the input
                   ~l     is the length of the output 

(*) ịṫ?চেক করে যে কোনও নেতৃস্থানীয় জিরো নেই। এটি স্ট্রিংটিকে পূর্ণসংখ্যায় রূপান্তর করে এবং তারপরে স্ট্রিংয়ে ফিরে আসে এবং মূল স্ট্রিংয়ের সাথে তুলনা করে।


আপনার স্ট্রিং হিসাবে নম্বরটি ইনপুট করতে হবে না, কেবল একটি পূর্ণসংখ্যা ব্যবহার করুন। এই সব তাদের জন্য বিপদ দূর করে এবং শূন্য চেক জন্য: h~c.{ℕ≤10}ᵛ&t~l। এটি সম্ভবত ধীরে হলেও যদিও সংখ্যার অজানা পূর্ণসংখ্যার জন্য পূর্ণসংখ্যার ডিকনক্যাটেনেশন অবশ্যই কাজ করে যা এটি অদক্ষ করে তোলে।
ফ্যাটালাইজ করুন

(এছাড়াও মনে রাখবেন ব্যবহার hএবং tপ্রথম / শেষ উপাদান পেতে ব্যবহার অধিক কার্যকরী হয় উভয়ের জন্য (যা সবচেয়ে প্রোগ্রামে এমনকি কাজ না করবে না))।
ফ্যাটালাইজ করুন

@ ফ্যাটালাইজ আমি বুঝতে পেরেছি যে ইনপুট লাইনে নেতৃস্থানীয় শূন্য থাকতে পারে, সুতরাং ইনপুট হিসাবে কোনও পূর্ণসংখ্যা ব্যবহার করা সম্ভব হবে না।
ফার্গুসক

ঠিক আছে, এটি বিরক্তিকর…
11:30 এ ফ্যাটালাইজ করুন

5

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

->\a,\b{b~~/(10|.)**{a}/}

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

নামবিহীন কোড ব্লক যা একটি সংখ্যা এবং স্ট্রিং নেয় এবং ম্যাচ অবজেক্ট হিসাবে ফিরে আসে।

ব্যাখ্যা:

->\a,\b{                }  # Anonymous code block taking params a and b
        b~~/           /   # Match using b
            (10|.)           # 10 or a single digit
                  **{a}      # Exactly a times, being greedy

5

পাইথন 3 , 47 বাইট

lambda s,n:[*s.replace(b'\1\0',b'\n',len(s)-n)]

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

কাঁচা বাইটের সাথে বাইটারস্টিং হিসাবে "একটি লাইন" নেয় \x00 - \x09। যদি এটি গ্রহণযোগ্য না হয়:

পাইথন 3 , 56 বাইট

lambda s,n:[x-48for x in s.replace(b'10',b':',len(s)-n)]

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

বাইটস্ট্রিং হিসাবে "একটি লাইন" নেয়।


5

ভি , 17 , 12 বাইট

\ÓòÀGjí1“î…0

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

আমি 17 বাইটে সন্তুষ্ট ছিলাম, তবে 05AB1E এর চেয়ে 13 টি সহ আমি এসেছি এবং আমি কোনও চ্যালেঞ্জ উত্তরহীন হতে দিতে পারি না। : ডি

\Ó                      " Put each character on it's own line
  ò                     " Recursively (repeat until an error happens)...
   ÀG                   "   Go to the "n"th line
     j                  "   Move down a line (this will error if there are exactly "n" lines)
      í                 "   Remove...
       1                "     a '1'
        <0x93>          "     START THE MATCH HERE
              î         "     a newline
               <0x85>   "     END THE MATCH HERE
                   0    "     a '0'

Hexdump:

00000000: 5cd3 f2c0 476a ed31 93ee 8530            \...Gj.1...0

বিকল্প সমাধান:

\ÓòÀGjç1î0/J

দুর্ভাগ্যক্রমে, এটি এর সাথে প্রতিস্থাপন 10করে1 0


4

রুবি , 57 বাইট

->n,m{m.sub!"10",?A while m[n];m.chars.map{|c|c.to_i 16}}

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

এই বের করে দিতে পার golfiest পদ্ধতির হতে না, কিন্তু এটা সাময়িকভাবে প্রতিস্থাপন একটি মজার ধারণা মত দেখায় 10একটি হেক্স জন্য A, যা প্রসঙ্গক্রমে আরো একটি উচ্চ চিহ্ন আছে (যদি আমরা এ এফ গ্রেডিং পদ্ধতি বিবেচনা :))




4

পাইথন 3 , 71 68 59 বাইট

আরও 9 বাইট নিচে ovs ধন্যবাদ।

lambda n,s:[int(c,11)for c in s.replace('10','a',len(s)-n)]

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

আমি অবিচ্ছিন্নভাবে str.partition()পুনরাবৃত্তভাবে ব্যবহার করার চেষ্টা করছিলাম , তবে ব্যবহারের ফলে replaceআমাকে খুব বেশিদিন পরেই মুখের মধ্যে স্ম্যাক করে নিল । কেউ কি এই উন্নতি করতে পারেন?

এছাড়াও, এখানে একটি টিআইও লিঙ্ক যা আমি পরীক্ষার কেসগুলিকে আরও কিছু অনুলিপি / পেস্টেবল তৈরি করতে ব্যবহার করি


1
-3 বাইট: ড্রপ স্থান মধ্যে : [cএবং 'x' elseএবং10 for
mdahmoune

@ এমদাহমৌনে দেখার জন্য ধন্যবাদ, কী একসাথে স্কুয়েশ করা যায় তা মনে রাখতে আমার খুব কষ্ট হয়েছে।
গিগাফ্লপ

8
থাম্বের সাধারণ নিয়ম: মূলত দুটি অক্ষর ব্যতীত অন্য যে কোনও কিছুই একসাথে স্কোয়াশ করা যায়। যদি আপনি একটি সিনট্যাক্স ত্রুটি পান তবে এটি কাজ না করা অবধি র্যান্ডম স্পেস যুক্ত করুন :)
কুইন্টেক

সেখানে যেমন কিছু ব্যতিক্রম আছে <number>e,<letter><number> , f'
ব্যবহারকারী 202729

3
59 এর সাথে 10 টি প্রতিস্থাপন করে এবং প্রতিটি অক্ষরকে বেস 11 ইন্টি: হিসাবে পড়তে হবে lambda n,s:[int(c,11)for c in s.replace('10','a',len(s)-n)]
ovs

3

হাস্কেল , 98 বাইট

n!x=[y|y<-s x,y==take n y]!!0
s('1':'0':x)=do y<-s x;[1:0:y,10:y]
s(x:y)=(read[x]:)<$>s y
s _=[[]]

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষা করুন!

ব্যাখ্যা

ফাংশনটি sসমস্ত সম্ভাব্য বিভাজন করে, উদাহরণস্বরূপ: "1010"হয়ে যায় [[1,0,1,0],[10,1,0],[1,0,10],[10,10]], নোট করুন কীভাবে দীর্ঘতম বিভাজন শুরুতে শেষ হয় (কারণ 1:0:yআগে আসে 10:y)।

এটি মনে রেখে, আমরা এই সমস্ত মানগুলি নিতে পারি এবং গুলিগুলি ফিল্টার করতে পারি yযেখানে y == take n yপ্রয়োজনের তুলনায় আরও কম বিভাজনগুলি রাখে। উদাহরণস্বরূপ 4আমরা তালিকা একই ছেড়ে [[1,0,1,0],[10,1,0],[1,0,10],[10,10]]

এখন আমরা শুধু যে তালিকায় প্রথম উপাদান পেতে পারেন কারণ ইনপুট সবসময় কার্যকর থাকবে (যেমন। 5!"1010"দিতে হবে [1,0,1,0]খুব, কিন্তু আমরা তা পরিচালনা করতে প্রয়োজন হবে না)।

দ্রষ্টব্য: আমি কোনওভাবেই ভুল হিসাব রক্ষণ করি .. y==take n yএকই দৈর্ঘ্য length y==n: এস




2

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

.œsù.ΔïTÝÃJ¹Q

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

ব্যাখ্যা

.œ              # partitions of the first input
  sù            # of a length equal to the second input
    .Δ          # find the first partition that returns true when:
      ï         # each element is converted to integer
       TÝÃ      # and only numbers in [0 ... 10] are kept
          J     # then join it together
           ¹Q   # and compare it to the first input for equality

2

জাভাস্ক্রিপ্ট (বাবেল নোড) ,  70 69  59 বাইট

হিসাবে ইনপুট লাগে (n)(line)

n=>s=>(a=s.match(/10|./g)).flatMap(x=>x>9&&!a[--n]?[1,0]:x)

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

মন্তব্য

n => s =>                       // given n and s
  (a = s.match(/10|./g))        // split s into marks; a '1' followed by a '0' is always
                                // interpreted as '10'
  .flatMap(x =>                 // for each mark x:
    x > 9 &&                    //   if x = '10',
    !a[--n] ?                   //   then decrement n; if a[n] is undefined:
      [1, 0]                    //     yield [1, 0]
    :                           //   else:
      x                         //     yield the mark unchanged
  )                             // end of flatMap()

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

@ গেস্ট 271314 কে 5 বাইট সংরক্ষণ করা হয়েছে

হিসাবে ইনপুট লাগে (n)(line)

n=>g=([...s])=>1/s[n]?g(eval(`[${s}]`.replace('1,0',10))):s

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

মন্তব্য

n =>                            // main function, taking n
  g = ([...s]) =>               // g = recursive function, taking s
                                //     (which is either a string or an array)
    1 / s[n] ?                  // if s[n] is defined (i.e. we have too many marks):
      g(                        //   do a recursive call to g:
        eval(                   //     build a new array by evaluating ...
          `[${s}]`              //       ... the string representation of s[] where the
          .replace('1,0', 10)   //       first occurrence of '1,0' is replaced with '10'
        )                       //     end of eval()
      )                         //   end of recursive call
    :                           // else:
      s                         //   return s

এন = 3 এবং লাইন = '1010' এর আউটপুট কেন মিশ্র প্রকারের সাথে হয় [1, 0, '10']?
mdahmoune

s.match()স্ট্রিংগুলির একটি অ্যারে প্রদান করে তবে এর কলব্যাক ফাংশনে একটি (2 পূর্ণসংখ্যার) এ "10"বিভক্ত হতে পারে । [1,0]flatMap()
আর্নৌল্ড

1
আমরা +1 বাইটের জন্য পূর্ণসংখ্যায় সবকিছু জোর করতে পারি ।
আর্নৌল্ড

59 বাইটeval(`[${s}]`.replace('1,0',10))
অতিথি 271314

@ গেস্ট 271314 ধন্যবাদ! আমার স্নাতকের.
আর্নল্ড

2

জাভা (ওপেনজেডিকে 8) , 78 বাইট

স্ট্রিম এপিআই ব্যবহার করে একটি দুর্দান্ত এক-লাইনার।

(n,l)->l.join(":",l.split("10",l.length()-n+1)).chars().map(i->i-48).toArray()

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


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

(n,l)->                     // Lambda function taking int and string
  l.join(":",               // Join the following array with colons
    l.split("10",           // Split the original string on "10"...
      l.length()-n+1))      // But limit the parts to the difference between the length
                            // and expected length, to only remove  required number of 10s              
  .chars()                  // Convert to an intstream of codepoints
  .map(i->i-48)             // Remove 48 to get the numeric value of each codepoint
  .toArray()                // Return an int array

2

আর , 63 বাইট

স্ট্রিংয়ের দৈর্ঘ্য বৃহত্তর nহলেও, পরবর্তী 10 টির পরিবর্তে আপনি একটি ":"(9 এর পরে ASCII অক্ষর) এর জন্য পৌঁছাবেন । তারপরে স্ট্রিংয়ের প্রতিটি চরের ASCII মান নিয়ে সংখ্যায় বিভক্ত করুন।

function(n,x){while(nchar(x)>n)x=sub(10,":",x);utf8ToInt(x)-48}

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



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