একটি চ্যাট পিং কাউন্টার লিখুন


19

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

চশমা

  • ইনপুটটি 2 টি টিপলগুলির তালিকায় আসে এবং প্রতিটি আইটেমই ফর্মের হয় ("username", "message")
  • অন্য ব্যবহারকারীর কাছে একটি পিংকে @3 বা ততোধিক অক্ষর দ্বারা সংজ্ঞায়িত করা হয় যা নির্বিশেষে সেই ব্যবহারকারীকে বোঝায়।
  • যাইহোক, আপনাকে এমন উত্তরগুলিও বিবেচনা করতে হবে, যার :messageidএকটি স্পেস দিয়ে শুরু করতে হবে ।
  • ধরুন প্রথম বার্তায় আইডি রয়েছে 0এবং ধারাবাহিকভাবে এগিয়ে যান।
  • প্রতিটি ব্যবহারকারীর ফলাফল আউটপুট করুন এবং বলুন যে প্রত্যেকে কতবার পিন হয়েছে।
  • আউটপুট যে কোনও ক্রম / যুক্তিসঙ্গত বিন্যাসে হতে পারে।
  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড !

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

[["AlexA.", "I am wrong"], ["Quartatoes", "@Alex you are very wrong"], ["AlexA.", ":1 I am only slightly wrong"]]
AlexA.: 1
Quartatoes: 1

[["Doorknob", "I have never eaten an avocad."], ["AquaTart", ":0 I will ship you an avocad"], ["AlexA.", ":0 this is shocking"]]
Doorknob: 2
AquaTart: 0
AlexA.: 0

[["Geobits", "I like causing sadness through downvotes."], ["Flawr", "I want to put random message ids in my chat messages :0 askjdaskdj"]]
Geobits: 0
Flawr: 0

[["Downgoat", "goatigfs.com/goatgif"], ["Downotherthing", "@Downgoat cool gifs"], ["Dennis", "@Down cool gifs this is an ambiguous ping"]]
Downgoat: 1
Downotherthing: 0
Dennis: 0

2
আমি পছন্দ করি কীভাবে :0আশ্চর্য ইমোটিকন হিসাবে দ্বিগুণ।
ডুরকনব

4
"আমি নিম্নাঞ্চলের মাধ্যমে দুঃখ জাগাতে চাই" " আপনি জানেন যে কেবলমাত্র একটি সঠিক উপায় আমি তার প্রতিক্রিয়া জানাতে পারি, তাই না? ;)
জিওবিটস

9
"অ্যালেক্সটি কি ভুল" রসিকতা নিয়ে আমরা কোন পর্যায়ে থামছি?
মার্টিন ইন্ডার

1
কোনও উত্তর সীমার বাইরে থাকতে পারে (উদাহরণস্বরূপ প্রথম বার্তাটি শুরু হচ্ছে :3) বা কোনও পিং ঘরের কোনও ব্যবহারকারীর সন্তুষ্ট নয় (যেমন @zzz)?
Sp3000

2
পিনযুক্ত ব্যবহারকারী কি পিন করা অবস্থায় এখনও কোনও বার্তা পোস্ট করতে পারেননি? যেমন [["Doorknob","@Alex is wrong"],["Alex","I am only slightly wrong"]]বৈধ ইনপুট?
ইটিএইচ প্রডাকশনগুলি

উত্তর:


2

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

a=>(p={},a.map(b=>p[b[0]]=0),(a.map(b=>b[1].match(/@[a-z]{3,}|^:\d+/gi)||[]).map(c=>c.map(d=>(z=(d[0]=='@'?(y=Object.keys(p).filter(e=>e.startsWith(d.slice(1)))).length<2?y:0:a[d.slice(1)[0]]))&&p[z[0]]++))),p)

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


অবশ্যই একটি বস্তু ব্যবহার সংক্ষিপ্ত। যদি এটি না হয় তবে আমি মনে করি না যে আপনাকে মানচিত্রটি একটি অ্যারে হিসাবে ফিরিয়ে দেওয়া দরকার
ডাউনগোট

@ ডাউনগোট তবে Mapকি আরও মজা আছে? না, আমি মূলত কোনও বস্তুর রেফারেন্স করতে কতটা অতিরিক্ত লাগবে তা বিবেচনা করেছিলাম, ভেবেছিলাম নামের জন্য আমাকে আলাদা আলাদা অ্যারে করতে হবে, তবে আপনি ঠিক বলেছেন যে এটি এইভাবে আরও খাটো।
Mwr247

0

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

foreach($_GET[a]as $c){$r[]=&$n[$c[0]]??$n[$c[0]]=0;preg_match("#^(:(\d+)|@(\w+))#",$c[1],$m);$m[2]==""?!$m[3]?:count($a=preg_grep("#^{$m[3]}#",array_keys($n)))>1?:$n[end($a)]++:$r[$m[2]]++;}foreach(($n)as$k=>$v)echo"$k: $v\n";
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.