পণ্য ক্যাটালগ


17

এই সমস্যাটি তিনটি উপাদানগুলিতে পণ্য শনাক্তকারীর প্রতিনিধিত্বকারী একটি স্ট্রিংকে পৃথক করা সম্পর্কে।

  • প্রথম অংশটিতে স্বেচ্ছাসেবী দৈর্ঘ্যের উপরের এবং নিম্ন বর্ণগুলি থাকে যা গুদামকে উপস্থাপন করে।
  • দ্বিতীয় অংশটি হ'ল অঙ্কগুলি যা পণ্যের সংখ্যাটি উপস্থাপন করে। এই অংশটিও নির্বিচারে দৈর্ঘ্যের।
  • শেষ অংশটি আকার এবং রঙ হিসাবে যোগ্যতা অর্জন করে এবং এই অংশটি স্ট্রিংয়ের শেষ অবধি অবিরত থাকে। বাছাইপদ্ধাদের একটি বড় অক্ষর দিয়ে শুরু করার এবং গৌণ বর্ণচিহ্নগুলি অন্তর্ভুক্ত করার গ্যারান্টিযুক্ত।

প্রতিটি অংশ পরিষ্কারভাবে পৃথকভাবে মুদ্রিত করা উচিত। এটি গ্যারান্টিযুক্ত যে প্রতিটি অংশ খালি নয়।

বিজয়ী হলেন তিনি যারা এই সমস্যাটি সমাধান করতে সর্বনিম্ন বাইট ব্যবহার করেন।

উদাহরণ:
ইনপুট: UK7898S14

আউটপুট:
যুক্তরাজ্য
7898
S14

এখানে যুক্তরাজ্যটি যুক্তরাজ্য, 7898 পণ্য কোড এবং এস 14 আকার 14।

উদাহরণ 2:
ইনপুট: cphDK1234CYELLOWS14QGOOD

আউটপুট:
সিএফডি কে
1234
সাইলভ 14 কুইগুড

এখানে সিএফডি কে হ'ল কোপেনহেগেন, ডেনমার্ক, 1234 প্রোডাক্ট কোড, সাইল্লো 1414 কিউগুড হলুদ বর্ণ, আকার 14 এবং ভাল মানের প্রতিনিধিত্ব করে।


2
প্রতিটি অংশ খালি নয়?
কার্ল ন্যাপ্ফ

@ কার্লনাপফ হ্যাঁ প্রতিটি অংশ খালি নয়।
হিগাহেস 2

@ এমিগনা একটি অতিরিক্ত উদাহরণ এখন অন্তর্ভুক্ত করা হয়েছে।
হিগাহেস 2

"প্রথম অংশটি উপরের এবং নিম্ন বর্ণগুলি নিয়ে গঠিত" - সম্ভবত উদাহরণগুলির মধ্যে একটিতে উপরের এবং ছোট হাতের বর্ণগুলির মিশ্রণ থাকতে পারে। এবং একটি দেশ কোডও 2 অক্ষর দীর্ঘ নয়। এছাড়াও, কোয়ালিফায়ারটিতে "গুণমান ★★★ ☆☆" এর মতো অ-অক্ষরচিহ্নগুলি থাকতে পারে?
manatwork

পিপিসিজিতে আপনাকে স্বাগতম!
এরিক আউটগল্ফার

উত্তর:


10

পার্ল, 12 বাইট

-pপতাকার জন্য 11 বাইট কোড + 1 বাইট ।

s/\d+/
$&
/

এটি চালানোর জন্য:

perl -pe 's/\d+/
$&
/' <<< "CYELLOWS14QGOOD"

2
সরলতা পছন্দ! :)
ডম হেস্টিংস

4

এপিএল, 18

{⍵⊂⍨3⌊+\1,2≠/⍵∊⎕D}'UK7898S14'
UK  7898  S14 

প্রথম দুটি পয়েন্ট অনুসন্ধান করে যেখানে অক্ষর থেকে ডিজিট বা তদ্বিপরীত পরিবর্তন হয়েছে এবং স্ট্রিংগুলিকে বিভক্ত করতে সেগুলি ব্যবহার করে কাজ করে।


4

রেটিনা , 28 14 10 8 বাইট

ডোম হেস্টিংসকে 4 বাইট সংরক্ষণ করে । মার্টিন ইন্ডারকে
ধন্যবাদ 2 বাইট সংরক্ষণ করা ।

S1`(\d+)

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


@ দাদার উত্তরের মতো একই প্রক্রিয়াটি ব্যবহার করে আপনি আরও 4 টি বাইট সংরক্ষণ করতে পারবেন: retina.tryitonline.net/… ( টিবিএইচ , সম্ভবত আরও বেশি, তবে এটাই আমি বাঁচাতে পেরেছি ! :))
ডম হেস্টিংস

@DomHastings। আহ, সুন্দর ধারণা প্রতিস্থাপনের সাথে যাচ্ছে!
Emigna

3

হাস্কেল, ৩৩ বাইট (কোনও রেজেক্স নেই)

d c='/'<c&&c<':'
(span d<$>).break d

এটি ফরম্যাটে ফলাফল দেয় ("UK",("7898","S14"))। ধারণাটি হ'ল প্রথম অঙ্কে বিভক্ত হবে এবং তারপরে বাকিটি প্রথম অ-অঙ্কে ভাগ করবে। আইডিয়নে চেষ্টা করে দেখুন


একটি টিপলে এফএম্যাপের দুর্দান্ত ব্যবহার।
xnor


3

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

s=>s.replace(/\d+/,`
$&
`)

@ গ্রাক্সকে ধন্যবাদ 2 বাইট সংরক্ষণ করা

উদাহরণ


আপনি আপনার প্রতিস্থাপনে এবং প্রথম বন্ধনী মুছে ফেলাতে আরও 2 টি অক্ষর হ্রাস করতে পারেন। s=>s.replace(/\d+/,` $& `)
Grax32

2

গেমা, 17 12 টি অক্ষর

(দেশের স্পষ্টভাবে নির্লজ্জভাবে থেকে ধার কোড হ্যান্ডলিং না কৌতুক দাদা 'র পার্ল সমাধান । কৃতজ্ঞতা সেখানে প্রকাশ করা উচিত।)

<D>*=\n$1\n*

নমুনা রান:

bash-4.3$ gema '<D>*=\n$1\n*' <<< 'UK7898S14'
UK
7898
S14

bash-4.3$ gema '<D>*=\n$1\n*' <<< 'cphDK1234CYELLOWS14QGOOD'
cphDK
1234
CYELLOWS14QGOOD

2

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

আমি বেশি রেইগেক্স জানি না, তবে ধন্যবাদ এই সমস্যাটি যথেষ্ট সহজ :) ইনপুট স্ট্রিং 3 দৈর্ঘ্যের তালিকায় পৃথক করে যা প্রতিটি অংশকে অন্তর্ভুক্ত করে।

import re
lambda k:re.split('(\d+)',k,1)

2

05AB1E ,39 37 16 বাইট

এমিগিনার কাছে অনেকগুলি বাইট সংরক্ষণ করা হয়েছে।

এটি সিপি -1222 এনকোডিং ব্যবহার করে।

TvDSdykF¬?¦}¶?}?

T                push "10"
 v               for each element (i.e., 1 and 0). Element is stored in 'y'
  DS             split string (input during the first iteration)
    d            for each character, 1 if digit or 0 otherwise
     yk          get index of the first occurrence of 'y'
       F         for 0 <= i < string.firstIndexOf(y)
        ¬?       print the first character of the string
          ¦      remove it from the string
           }     end inner for
            ¶?   display a newline
              }  end outer for
               ? display the remaining string

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

(এটি এখানে আমার প্রথম পোস্ট!)


আপনি অক্ষরের পরিবর্তে অঙ্কগুলি পরীক্ষা করে কমপক্ষে 14 বাইট সংরক্ষণ করতে পারেন । এবং এটি সম্ভবত আরও গল্ফ করা যেতে পারে।
এমিগানা

এছাড়াও, পিপিসিগিতে আপনাকে স্বাগতম :)
এমিগিনা

ধন্যবাদ! এবং আপনি ঠিক বলেছেন, আমি আক্ষরিকভাবে বাম থেকে ডানে এই প্রতি সমস্ত নির্বাক হয়ে গিয়েছিলাম। আমি .páà¬প্রথম অংশটি পাওয়ার জন্য খনন করার চেষ্টাও করেছি , তবে প্রথম নজরে এটি বিশ্রামের জন্য সাহায্য করবে বলে মনে হয় না।
ওবলযোগ্য

আপনার কোডটি আমার কোড দিয়ে আপডেট করার জন্য নির্দ্বিধায় (এবং আপনি যদি পারেন তবে এটি আরও কিছু গল্ফ করুন)। আমি মনে করি না যে এটির নিজের উত্তরটি পাওয়ার জন্য যথেষ্ট আলাদা to
Emigna

ঠিক আছে আমি এটি করব তখন আমি এটি একটি লুপে রাখার উপায় খুঁজে পেয়েছি। খুব পরিশীলিত কিছুই না, তবে কমপক্ষে এটি 16 বাইটে নেমে যায়। আবার আপনাকে ধন্যবাদ! (এখন আমাকে ব্যাখ্যাগুলি আপডেট করতে হবে ... তবে ব্যাখ্যা করার জন্য খুব কম বাইট রয়েছে)


1

জাভা 7, 200 185 174 167 বাইট

import java.util.regex.*;String c(String s){Matcher m=Pattern.compile("(.*?)(\\d+)(.*)").matcher(s);s="";for(int i=0;i<3;)if(m.matches())s+=m.group(++i)+" ";return s;}

অবরুদ্ধ এবং পরীক্ষার কোড:

এখানে চেষ্টা করুন।

import java.util.regex.*;
class M{
  static String c(String s){
    Matcher m = Pattern.compile("(.*?)(\\d+)(.*)").matcher(s);
    s = "";
    for(int i = 0; i < 3;){
      if(m.matches()){
        s += m.group(++i) + " ";
      }
    }
    return s;
  }

  public static void main(String[] a){
    System.out.println(c("UK7898S14"));
    System.out.println(c("cphDK1234CYELLOWS14QGOOD"));
  }
}

আউটপুট:

UK 7898 S14 
cphDK 1234 CYELLOWS14QGOOD 

1

সি #, 191 177 বাইট

Golfed:

void F(string s){var a=s.ToList();int i=a.FindIndex(char.IsDigit);int n=a.FindIndex(i,char.IsUpper);Console.Write($"{s.Substring(0,i)}\n{s.Substring(i,n-i)}\n{s.Substring(n)}");

Ungolfed:

    void F(string s)
    {
        var a = s.ToList();
        int i = a.FindIndex(char.IsDigit);
        int n = a.FindIndex(i, char.IsUpper);

        Console.Write($"{s.Substring(0, i)}\n{s.Substring(i, n - i)}\n{s.Substring(n)}");
    }

EDIT1: @ লিঙ্ক এনজি 14 বাইট সংরক্ষণ করেছে।


আপনার ToCharArray () লাগবে না। স্ট্রিং ইতিমধ্যে অনুমেয় <<<
লিঙ্ক এনজি

অবশ্যই, আমি বিশ্বাস করতে পারি না আমি এটি লক্ষ্য করেছি না।
পালদির

1

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

print_r(preg_split('/(\D+|\d+)\K/',$argv[1],3));

এর $limitপরামিতি এবং চমত্কারভাবে দরকারী \K, preg_split()এই চ্যালেঞ্জের জন্য উপযুক্ত is


1

ম্যাটল্যাব, 81 73 বাইট

function y=f(x)
[~,~,~,m,~,~,s]=regexp(x,'(?<=^\D+)\d+');y=[s(1) m s(2)];

ফাংশন যা কোনও স্ট্রিং গ্রহণ করে এবং তিনটি স্ট্রিংয়ের একটি সেল অ্যারে প্রদান করে। সংস্করণ R20105b পরীক্ষিত।

উদাহরণ ব্যবহার:

>> f('UK7898S14')
ans = 
    'UK'    '7898'    'S14'

>> f('cphDK1234CYELLOWS14QGOOD')
ans = 
    'cphDK'    '1234'    'CYELLOWS14QGOOD'

ব্যাখ্যা

নিয়মিত প্রকাশটি (?<=^\D+)\d+')স্ট্রিংয়ের শুরু থেকে অ-সংখ্যাগুলির আগে সংখ্যার একটি সংখ্যার সাথে মেলে; দ্বিতীয়টি ম্যাচের অংশ নয়।

এর চতুর্থ আউটপুট regexpহল 'match'; এবং সপ্তম আউটপুটটি 'split'ম্যাচের আগে এবং পরে স্ট্রিংয়ের দুটি অংশ।


1

রুবি, 28 বাইট

->s{puts s.sub(/\d+/,"\n\\&\n")}

এটি নিউলাইনগুলির সাথে অঙ্কের প্রথম ক্লাস্টারটিকে ঘিরে।


0

jq, 47 টি অক্ষর

(৪৩ টি অক্ষরের কোড + ৪ টি অক্ষরের কমান্ড লাইন বিকল্প)

match("(\\D+)(\\d+)(.+)").captures[].string

(আবার পুরানো গল্প: শুরুতে মোটামুটি মার্জিত, তারপরে বেদনাদায়ক ভার্বোস হয়ে যায়))

নমুনা রান:

bash-4.3$ jq -Rr 'match("(\\D+)(\\d+)(.+)").captures[].string' <<< 'UK7898S14'
UK
7898
S14

bash-4.3$ jq -Rr 'match("(\\D+)(\\d+)(.+)").captures[].string' <<< 'cphDK1234CYELLOWS14QGOOD'
cphDK
1234
CYELLOWS14QGOOD

অন-লাইন পরীক্ষা ( -rইউআরএল মাধ্যমে পাস করা সমর্থিত নয় - কাঁচা আউটপুট নিজেই দেখুন))


0

পিএইচপি, 61 59 56 55 বাইট

preg_match('/(\D+)(\d+)(.+)/',$argv[1],$a);print_r($a);

এটি প্রাথমিক কোডও আউটপুট দেয়:

Array
(
    [0] => cphDK1234CYELLOWS14QGOOD
    [1] => cphDK
    [2] => 1234
    [3] => CYELLOWS14QGOOD
)

সম্পাদন করা

আমার জন্য কয়েকটা বাইট সংরক্ষণের
জন্য @ মান্যাটওয়ার্ককে ধন্যবাদ, রোমানগ্রাফকে ধন্যবাদ আরও কয়েকটি বাইট সংরক্ষণের জন্য


1
[\d]? : ও \dযথেষ্ট।
manatwork

@ মান্যাটওয়ার্ক ধন্যবাদ আমি যথেষ্ট পরিমাণে রেগেক্স ব্যবহার করি না (তর্কযোগ্যভাবে একটি ভাল জিনিস) এবং 0 d
gabe3886

1
কেন নয় প্রতিস্থাপন [a-z]সঙ্গে \D?
রোমান গ্রাফ

1
এখন আপনার কোনও নেই [a-z], iপতাকাটিরও দরকার নেই।
manatwork

নিয়মিত প্রকাশের ক্ষেত্রে আমার আরও বেশি সময় কাটাতে হবে nd
gabe3886

0

রেগেক্স ছাড়া জাভাস্ক্রিপ্ট, 84 81 79 বাইট

p=>{for(i=n=o='';i<p.length;){if(n==isNaN(c=p[i++])){o+=' ';n++}o+=c}return o}


2
আপনি একটি একক জায়গায় সব initializations মুখে ফেলতে পারে: o=n=i=''
manatwork

আর তার প্রথম ব্যবহারের গ নিয়োগ সরান: isNaN(c=p[i++])
manatwork

p=>{for(i=n=o=0;i<p.length;){c=p[i++];if(n++==c<59){o+=' '}o+=c}return o}
রোমান গ্রাফ

@ রোমানগ্রাফ, সূচনাটি হওয়া উচিত ''কারণ ও, যার ফলস্বরূপ একত্রিত করা হবে। তবে দুঃখের বিষয় হচ্ছে আপনার কোডটি আমার পক্ষে কাজ করছে না, শর্তসাপেক্ষে এন বৃদ্ধি করা দরকার।
manatwork

p=>{for(i=n=0,o='';i<p.length;){c=p[i++];if(n==c<59){o+=' ';n++}o+=c}return o}
রোমান গ্রাফ

0

গণিত, 39 বাইট

StringSplit[#,a:DigitCharacter..:>a,2]&

বেনামে ফাংশন। ইনপুট হিসাবে একটি স্ট্রিং নেয় এবং আউটপুট হিসাবে স্ট্রিংয়ের একটি তালিকা প্রদান করে।


0

র‌্যাকেট 274 বাইট

(let((g 0)(j'())(k'())(l'())(m list->string)(r reverse)(n char-numeric?)(c cons))(for((i(string->list s)))
(when(and(= g 0)(n i))(set! g 1))(when(and(= g 1)(not(n i)))(set! g 2))(match g[0(set! j(c i j))]
[1(set! k(c i k))][2(set! l(c i l))]))(list(m(r j))(m(r k))(m(r l))))

Ungolfed:

(define (f s)
  (let ((g 0)
        (j '())
        (k '())
        (l '())
        (m list->string)
        (r reverse)
        (n char-numeric?)
        (c cons))
    (for ((i (string->list s)))
      (when (and (= g 0) (n i)) (set! g 1)  )
      (when (and (= g 1) (not (n i))) (set! g 2) )
      (match g
        [0 (set! j (c i j))]
        [1 (set! k (c i k))]
        [2 (set! l (c i l))]))
    (list (m (r j)) (m (r k)) (m (r l)))))

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

(f "UK7898S14")
(f "cphDK1234CYELLOWS14QGOOD")

আউটপুট:

'("UK" "7898" "S14")
'("cphDK" "1234" "CYELLOWS14QGOOD")

0

আর, 63 52 বাইট

সম্পাদনা: @ জেডিএলকে ধন্যবাদ একগুচ্ছ বাইট সংরক্ষণ করা

স্টিডিন থেকে স্ট্যান্ডআউটতে প্রিন্ট করে:

gsub("([a-z]+)(\\d+)(.+)","\\1 \\2 \\3",scan(,""),T)

উদাহরণ আউটপুট:

[1] "UK 7898 S1"
[1] "cphDK 1234 CYELLOWS14QGOOD"

gsub (...,"\\1 \\2 \\3")আরও দক্ষ হবে না ?
জেডিএল

@ জেডিএল নিশ্চিত নয় যে আমি অনুসরণ করি। বিশদ বিবরণ বা একটি উদাহরণ দিতে যত্ন?
বিলিউব

এর মতো কিছু gsub("([A-Za-z]+)([0-9]+)(.+)","\\1 \\2 \\3",scan()), যদিও প্রথম যুক্তি সম্ভবত
এটির

@ জেডিএল খুব চতুর কিন্তু "\\1 \\2 \\3"প্রতিস্থাপনটি কীভাবে কাজ করবে তা সম্পর্কে আমার কোনও ধারণা নেই । এছাড়াও রেজেক্স প্যাটার্নটি কিছুটা আপডেট এবং ব্যবহার করুন ignore.case = TRUE
বিলিওব

তাদের কেবলমাত্র "প্রথম / দ্বিতীয় / তৃতীয় জোড়া ()বন্ধনীতে যা ধরা পড়েছিল আউটপুট"
জেডিএল

0

জেলি , 14 বাইট

O<65ITḣ2‘ṬœṗµY

TryItOnline!

কিভাবে?

O<65ITḣ2‘ṬœṗµY - Main link: productIdentifier   e.g. "UK7898S14"
O              - cast to ordinals               e.g. [85,75,55,56,57,56,83,49,52]
 <65           - less than 65?                  e.g. [ 0, 0, 1, 1, 1, 1, 0, 1, 1]
    I          - incremental difference         e.g. [ 0, 1, 0, 0, 0,-1, 1, 0]
     T         - truthy indexes                 e.g. [2, 6, 7]
      ḣ2       - head to 2                      e.g. [2, 6]
        ‘      - increment                      e.g. [3, 7]
         Ṭ     - set truthy indexes             e.g. [0, 0, 1, 0, 0, 0, 1]
          œṗ   - split y at truthy indexes of x e.g. ["UK", "7898", "S14"]
            µ  - monadic chain separation
             Y - join with line feeds

0

সি, 107 বাইট

#define p(x) printf("%c",x);
f(char*s){for(;*s>64;s++)p(*s)p(10)for(;*s<58;s++)p(*s)p(10)for(;*s;s++)p(*s)}

সাথে কল করুন:

int main()
{
   f("UK7898S14");
   return 0;
}

0

পাইথন 2, 103 94 88 বাইট

রেজেক্স ব্যবহার না করে সমাধান করুন

a,b=input(),""
for f in a:
 if ord(f)<58:b+=f
 elif b"":c,d=a.split(b);print c,b,d;break

খালি মাঝখানে থেকে সংখ্যাগুলি বের করে তারপরে একটি সূচক হিসাবে নম্বরটি ব্যবহার করে ইনপুটটি টুকরো টুকরো করে। ইনপুটটির চারপাশে উদ্ধৃতি প্রয়োজন তবে কোথাও দেখিনি যে উদ্ধৃতিগুলি বাতিল করা হয়েছে।

-9 মাঝের সংখ্যায় একটি বিভক্ত করে এরপরে বি দিয়ে উপাদানগুলি মুদ্রণ করুন

-6 @ শেবাংকে ধন্যবাদ

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

D:\>python codes.py
"UK7898S14"
UK 7898 S14

D:\>python codes.py
"cphDK1234CYELLOWS14QGOOD"
cphDK 1234 CYELLOWS14QGOOD

b!="" -> b>""এবং c=a.split(b) -> c,d=a.split(b) ... print c[0],b,c[1] -> print c,b,d5 বাইট সাশ্রয় করে।
কেদে

খুব সুন্দর ইঙ্গিত @ শেবাং। ধন্যবাদ
এলপেড্রো

আহ, আমি ভুলে গেছি খালি স্ট্রিংগুলি মিথ্যা। আপনি এটি তৈরি করে আরও 3 বাইট সংরক্ষণ করতে পারেন elif b:;)
কেড

0

সি #, 74 বাইট

v=>new System.Text.RegularExpressions.Regex("\\d+").Replace(v,"\n$&\n",1);

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

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