কোডগল্ফ - গোলমালটি উপেক্ষা করুন # 1


15

নির্দেশনা

ব্যারি একটি ছোট এপিআইয়ের দায়িত্বে থাকা এতটা ভাল ব্যাকেন্ড ডেভেলপার নয় যা আপনাকে ক্লায়েন্টের দোকানে করা কেনাকাটা সম্পর্কে তথ্য দেয় give তবে, তিনি দুর্দান্ত কাজ করেন নি এবং আপনার বস আপনাকে ক্লায়েন্ট-সাইডের পরিবর্তে এটি ঠিক করতে বলেছেন। মূলত আপনি যেমন কমা দ্বারা পৃথক মান পাওয়া উচিত 927,2,45,90যা ভালো কিছু মিলা item_id, item_amount, unit_price,total

এই প্রথম ধাঁধাটিতে আমরা কেবল যত্নশীল item_idএবং item_amountসমস্যাটি উপস্থাপনের জন্য আমাদের অন্যান্য ক্ষেত্রের প্রয়োজন। ব্যারি কখনও কখনও জিনিষ আপ মিশিয়ে এবং আয় গোলমাল আউটপুট অংশ হিসেবে তিনি অর্ডার ভুল পায়, ফিরে পায় noise, noise, unit_price, total, item_id, item_amount

তোমার কাজ

আপনি একটি মানচিত্র (বা অনুরূপ গঠন) এ সঞ্চয় করতে জোড়া প্রয়োজন item_idএবং item_amountকিনা ব্যারি তাদের সঠিকভাবে বা না ফেরৎ এবং সম্ভব অক্ষরের কমপক্ষে সংখ্যা নতুন লাইন প্রতিটি উপাদান প্রিন্ট নির্বিশেষে। (সংরক্ষণ করা বাধ্যতামূলক নয়, আমরা কেবল আউটপুট সম্পর্কে যত্নশীল)

নমুনা ইনপুট (মিশ্র সঠিক এবং অগোছালো ফর্ম্যাট)

103,2,50,100
106,1,900,900
459,40,150,300,67,2
4,20,30,6000

অন্য কথায় ইনপুট হয় হয় a,b,x,xবা x,x,x,x,a,bযেখানে আমরা যা যত্ন করি তা হবে a& b। আপনার Gসিএসভির সমস্ত লাইন সহ একটি ভেরিয়েবল (বা অন্য কোনও নাম) বলা আছে তা ধরে নিয়ে আপনার কোড সরবরাহ করতে হবে।

নমুনা আউটপুট

103,2
106,1
67,2 //This one was messy
4,20

সহ্য

সহ্য করার জন্য একটি নির্দিষ্ট মার্জিন আছে যখন এটি উত্তর আসে। অনুরূপ ফর্ম্যাটে উত্তর কিন্তু সঠিক মান মেনে চলা, এছাড়াও গ্রহণ করা হবে। ফর্ম্যাট পছন্দ [a,b], (a,b)বা {a,b}বৈধ, কিন্তু a,bপছন্দ করা হয়।

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


ইনপুট কি সর্বদা বিন্যাসে থাকবে x,x,x,xএবং x,x,x,x,x,xযেখানে xসংখ্যাকে বোঝায়?
স্পিক্যাট্রিক্স

হ্যাঁ, ইনপুট two দুটি ফর্ম্যাটগুলির মধ্যে একটি অনুসরণ করবে, আমাকে স্পষ্ট করে বলতে দাও
জুয়ান কর্টস

আমাদের কি কোনও প্রোগ্রাম বা একটি ফাংশন বা অন্য কিছু জমা দেওয়ার দরকার আছে? এছাড়াও, সমস্ত ইনপুটগুলি কোথা থেকে নেওয়া যেতে পারে?
স্পিক্যাট্রিক্স

3
দ্রুত-গল্ফ মূলত একটি অসুবিধা ট্যাগ। Sensক্যমত্য বলে মনে হচ্ছে যে আমরা সেগুলি চাই না , তাই আপাতত আমি সেই ট্যাগটি সরিয়ে দিচ্ছি। যদি আপনি অসুবিধে ট্যাগগুলি পুনরায় মূল্যায়ন করতে চান তবে দয়া করে এটির জন্য একটি মেটা পোস্ট করুন। তবে এটি একটি বিশাল পুনরায় সংঘবদ্ধ প্রচেষ্টা হবে, যা আমি মনে করি সমন্বিত পদ্ধতিতে হওয়া উচিত, পৃথক ব্যবহারকারীরা এটির জন্য স্বেচ্ছাসেবী নতুন ট্যাগ তৈরি করার চেয়ে।
মার্টিন এন্ডার

2
@ কুলগুই তেমন কোনও জিনিস নেই। আপনি পাইথকে সি দিয়ে পরাজিত করবেন না (কারণ আপনি কখনই যাবেন না)। আনন্দ একই ভাষা বা অনুরূপ শব্দভাণ্ডারের ভাষায় অন্য জমাগুলিতে প্রহার করে। যদি ইতিমধ্যে 50 বাইট সি জমা দেওয়া থাকে তবে আমি পোস্ট না করাকে বুঝতে পারি (যদিও তারপরেও, আমি যদি পদ্ধতিটি আলাদা এবং আকর্ষণীয় হয় তবে পোস্ট করতে পারি)। তবে যেহেতু নেই, দয়া করে আপনার উত্তর পোস্ট করুন। আপনি জাভাস্ক্রিপ্ট এবং পাইথনের মোটামুটি কাছাকাছি, সুতরাং এটি অবশ্যই সি এর জন্য অত্যধিক দীর্ঘ নয়
মার্টিন এন্ডার

উত্তর:


8

পাইথ, 10 বাইট

FNG<.<N4 2

এটি অনলাইনে ব্যবহার করে দেখুন: পাইথ কমপাইলার / এক্সিকিউটার

(প্রথম 4 টি অক্ষর =G.Qসমস্ত ডেটা পড়ে এবং এতে সঞ্চয় করে G)

ব্যাখ্যা

FNG              for row N in G:
    .<N4            cyclic leftshift by 4
   <     2          print the first two elements

4
সুন্দর, আমি পাইথকে ইতিমধ্যে পছন্দ করতে শুরু করছি
হুয়ান কর্টেস

3
@ JuanCortés: এই একটি ভাল সম্পদ Pyth দিয়ে শুরু করতে খুঁজছেন যদি হতে পারে।
অ্যালেক্স এ


7

পাইথন 3, 123 76 72 62 বাইট

আমি একজন নবাগত, কোথাও শুরু করতে হবে ...

 for l in G:
  d=l.rstrip().split(',');x=[0,4][len(d)>5];print(d[x:x+2])

এক্সনোরস এবং ডিএলকসের পরামর্শ (62 বাইট) সহ:

for l in G:d=l.rstrip().split(',');print(d[4*(len(d)>5):][:2])

8
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! যেহেতু এটি একটি কোড-গল্ফ প্রতিযোগিতা, আপনি নিজের কোডটি যতটা সম্ভব সংক্ষিপ্ত করতে চাইবেন। একটি জিনিস যা আপনি করতে পারেন তা হ'ল ইনডেন্টগুলির জন্য ব্যবহৃত স্থানের পরিমাণ হ্রাস করা; পাইথনে একক স্থান যথেষ্ট। এই পোস্টে পাইথনে গল্ফ করার টিপস তালিকাভুক্ত করেছে এবং এটি একটি ভাল রেফারেন্স হতে পারে।
অ্যালেক্স এ।

@ অ্যালেক্স, ধন্যবাদ - আমি সঠিক নিয়মগুলি কী তা বোঝার চেষ্টা করছিলাম, আমি আশা করছিলাম যে আমি কিছু সাদা জায়গা উপেক্ষা করতে পারব, তবে আমার ধারণা নেই।
মংগুইন

না, নিউলাইন এবং স্পেস দুটিই আপনার চরিত্রের গণনায়।
অ্যালেক্স এ।

আসলে, এই ক্ষেত্রে, আপনার এমনকি নতুন লাইন এবং ইনডেন্টের প্রয়োজন নেই। মত ব্লক বিবৃতি forপাইথন মধ্যে একই লাইনে সব হতে পারে, যতদিন দেহের মধ্যে আরেকটি ব্লক বিবৃতি নয় হিসাবে।
ডিএলসাস

3
একটি ভালো শুরু. আপনি লাগাতে পারেন একই লাইনে সবকিছু যেমন forইনডেন্ট এড়ানো। শর্তসাপেক্ষে 0/1 সমান বলগুলি ব্যবহার করে শর্তটি [0,4][...] সংক্ষিপ্ত করা যেতে পারে 4*(...) । এছাড়াও, যদি আপনি লিখতে d[x:x+2]যেমন d[x:][:2], যদিও একটি অক্ষর আর, আপনার জন্য অভিব্যক্তি সংরক্ষণ এড়ানো দেয় xএকটি পরিবর্তনশীল করতে।
xnor

4

সেড, 32 বাইট

s/,/=/4
s/.*=//
s/,/:/2
s/:.*//

এটি চতুর্থ কমা পর্যন্ত সমস্ত কিছু মুছবে যদি সেখানে একটি থাকে। তারপরে এটি ২ য় কমা থেকে সমস্ত কিছু মুছে ফেলবে (যা আগে ষষ্ঠ হতে পারে)।

এবং আমি এমনকি ডান-ন্যায়সঙ্গত করতে পরিচালিত!


ডেমো দেখার কোনও সুযোগ?
হুয়ান কর্টেস

ডেমো থেকে আপনি কী চান তা আমি নিশ্চিত নই - আমি আপনার সরবরাহিত পরীক্ষার ইনপুটটি চালিয়েছি এবং প্রয়োজনীয় আউটপুট পেয়েছি।
টবি স্পিড

4

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

চলক ইনপুট ধরে G

সম্পাদনা: আমি ঠিক বুঝতে পেরেছি, এটি দেখতে অনেকটা নটকির পার্ল সমাধানের মতো।

alert(G.replace(/(\d+,){4}|,\d+,\d+$/gm,''))

স্নিপেট ডেমো:

function run(){
    G = input.value;
    /* start solution */
    alert(G.replace(/(\d+,){4}|,\d+,\d+$/gm,''))
    /* end solution */
}
<textarea id="input" cols="25" rows="6">103,2,50,100
106,1,900,900
459,40,150,300,67,2
4,20,30,6000</textarea><br />
<button id="run" onclick="run();">Run</button>


4

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

G.map(_.split(",")).map(x=>println((x++x).slice(4,6).mkString(",")))

- মিঃবোনস

স্কালা, 46 70 বাইট

সম্পাদনা: ফলাফল মুদ্রণ করুন

for{l<-G;r=l.split(",");x=(r++r).slice(4,6).mkString(",")}{println(x)}

ডেমো


1
1 টি বাইট কম, পরিবর্তে মানচিত্র ব্যবহার করেG.map{k=>val x=k.split(",");println((x++x).slice(4,6).mkString(","))}
স্কুইলি

1
বাইন্ডিংটি ফেলে অন্য একটি বাইট সংরক্ষণ করা হয়েছে:G.map(_.split(",")).map(x=>println((x++x).slice(4,6).mkString(",")))
স্কয়ারলি

3

সিজেম, 18 15 14 বাইট

r{',/4m<2<pr}h

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

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

r      e# Read a whitespace separated token from STDIN.
{      e# Do-while loop:
  ',/  e#    Split at commas.
  4m<  e#    Rotate the resulting array 4 units to the left.
  2<   e#    Discard everything but the first 2 elements.
  p    e#    Print the array.
  r    e#    Read a whitespace separated token from STDIN.
}h     e# If the token is a nonempty string, repeat the loop.

3

পসিক্স শেল, 30 বাইট

POSIX ধরে নিচ্ছেন sedএবং cutউপস্থিত আছেন:

sed 's/.*/&,&/'|cut -d, -f5,6

৫ এবং fields নম্বর ক্ষেত্র থেকে আকর্ষণীয় ডেটা প্রস্তুত করার জন্য রেখে লাইনটিকে নকল করে।


3

জাভাস্ক্রিপ্ট, 117 112 99 95 84 76 71 বাইট

for(r of G.split('\n'))s=r.split(','),console.log(s[t=s[4]?4:0],s[t+1])

জেএস ফিডল


1
অনুগ্রহ করে একটি বেহালতা, বা ডেমো পোস্ট করুন
হুয়ান কর্টেস

লুপের শরীরে প্রতিস্থাপন ;করে ,এবং তাই বন্ধনীগুলি মুছে ফেলার মাধ্যমে আপনি দুটি বি সরিয়ে ফেলতে পারেন {এবং}
জুয়ান কর্টস

@ জুয়ানকোর্টস - ধন্যবাদ, এটি জানতেন না। এর পিছনে তত্ত্ব কী?
রিচিএইচবি

যদি কোনও ধনুর্বন্ধনী যোগ না করা হয় তবে লুপটির বডিটি বন্ধ হয়ে যাওয়া বন্ধকের পরে প্রথম প্রকাশ হবে। একটি প্রকাশ একটি সেমিকোলন দিয়ে শেষ হয়। কমা দিয়ে এক্সপ্রেশন পৃথক করা তাদেরকে বাছাইয়ের গ্রুপের মতো করে তোলে যদি আপনি তাদের পরে প্রকাশের সমাপ্তি করেন
জুয়ান কর্টস

1
for ofআপনি ব্যবহার করে 3 বাইট সংরক্ষণ করতে পারেন। এটি যে কোনও আধুনিক ব্রাউজারে কাজ করে। for(r of q=G.split('\n'))s=r.split(','),console.log(s[t=s[4]?4:0],s[t+1])
edc65

2

পিপ , 12 + 1 = 13 বাইট

-lপতাকাটি ব্যবহার করে , যা প্রতিটি লাইনে সংখ্যার স্পেস-বিভাজিত তালিকা হিসাবে আউটপুট দেয় *

_@[4 5]Mg^',

ব্যাখ্যা:

  • সংখ্যা তালিকা আশা করা হয় g। যেহেতু gসাধারণত কমান্ড-লাইন আর্গুমেন্ট থেকে শুরু করা হয়, আপনি একই ফলাফলের জন্য সেখানে ইনপুটটিও রাখতে পারেন।
  • ^', বিভক্ত (প্রতিটি স্ট্রিং) কমাতে তালিকা।
  • M ফলাফল প্রতিটি উপাদান একটি ফাংশন মানচিত্র।
  • _@[4 5]একটি ল্যাম্বদা ফাংশন সংজ্ঞায়িত করে। ফাংশন যুক্তির প্রতিনিধিত্ব করে _; @[4 5]এর চতুর্থ এবং 5 ম উপাদানগুলির একটি তালিকা প্রদান করে। তালিকায় যদি ছয়টি উপাদান থাকে তবে এগুলি সর্বশেষ দুটি হবে। যদি এর চারটি হয় তবে সূচকগুলি চারপাশে মোড়ানো থাকে, এবং ফলাফলটি প্রথম দুটি হয়। (উদা "abcd"@4 == "abcd"@0 == "a"।)
  • আমাদের কাছে এখন তালিকার একটি তালিকা রয়েছে, যেমন [[103 2] [106 1] [67 2]]প্রোগ্রামের শেষে স্বয়ংক্রিয়ভাবে মুদ্রিত। -lতাই এর ফলে অনুসরণ করা হয় পতাকা, স্থান প্রতিটি উপ-তালিকা এবং তারপর newline উপর পুরো জিনিস যোগদান করে:
সি: pip> পাইপ.পি-লে "_ @ [4 5] এমজি ^ '," 103,2,50,100 106,1,900,900 459,40,150,300,67,2
103 2
106 1
67 2

* বর্তমানে আমি এই আচরণটি পরিবর্তন করতে পারি, তবে আমি এখনও কিছু পতাকা লাগানোর পরিকল্পনা করছি যা একই কাজ করে।


1

পার্ল, 37

@c=/(\d+,\d+)/g;$_=@c>2?$c[2]:$c[0]

35এবং +2জন্য অক্ষর । আমি নিশ্চিত নই যে পার্লের এমন কোনও পন্থা রয়েছে যা @ নটকির সমাধানটিকে পরাজিত করবে , তবে আমি বুঝতে পেরেছিলাম যে আমি এই ধারণাটি পোস্ট করে যাই হোক না কেন।-p-l

সাথে চালান:

cat input.txt | perl -ple'@c=/(\d+,\d+)/g;$_=@c>2?$c[2]:$c[0]'


0

সি, 95 বাইট

f(a,b,c,d){scanf("%d,%d,%*d,%*d,%d,%d",&a,&b,&c,&d)>2?printf("%d,%d",c,d):printf("%d,%d",a,b);}

কোডটি সহজ। নিখরচায় সংস্করণটি এখানে:

f(a,b,c,d){                                    //Four int variables
    scanf("%d,%d,%*d,%*d,%d,%d",&a,&b,&c,&d)>2 //Scan input
        ?                                      //If scanf returned a value > 2
        printf("%d,%d",c,d)                    //Print last two values
        :                                      //else 
        printf("%d,%d",a,b);                   //Print first two values
}

এটি এখানে পরীক্ষা করুন


0

রুবি, 53

G.each_line{|x|g=x.split',';p[g[4]||g[0],g[5]||g[1]]}

বা ভাল।

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