প্রতারক মানচিত্র!


10

সমস্ত অ্যাসাইনমেন্ট জমা দেওয়ার পরে, একটি অভিধান তৈরি করা হয় যা তাদের ফাইলের হ্যাশটিতে শিক্ষার্থীর নম্বরকে ম্যাপ করে।

এই অভিধান, বা হ্যাশম্যাপ, বা ম্যাপিং (আপনার ভাষা এটি যাই বলুক না কেন) নীচের মত দেখতে পাবেন:

{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}

কীটি হ'ল শিক্ষার্থীর নম্বর এবং মান হ্যাশ।

আমাদের কাজটি ঠকাই বাছাই করা! প্রতারকরা হ'ল অভিন্ন হ্যাশগুলি।

ইনপুট দেওয়া {100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"}, ক্রিয়াকলাপটি নিম্নলিখিত পাঠ্যটি (বা মুদ্রণ) করা উচিত:

100 has identical files to 430

104 has identical files to 332

হ্যাশগুলি অনন্য যেখানে ফাইলগুলি উল্লেখ করা হয়নি তা লক্ষ্য করুন।

এছাড়াও, ক্রমটি এখানে গুরুত্বপূর্ণ :

{100: "aabb", 202: "aabb", 303: "ab", 404: "aabb"} নিম্নলিখিত পাঠ্য (মুদ্রণ) ফিরে আসা উচিত:

100 has identical files to 202,404

নিম্নলিখিতগুলির কোনও মুদ্রণ করা এটি ভুল :

202 has identical files to 100,404

100 has identical files to 404, 202

আপনার অভিধানে এটি কীভাবে প্রদর্শিত হবে তার পদে এটি মুদ্রণ করা উচিত। কিছু ভাষায়, অভিধানের মধ্য দিয়ে যাওয়া এলোমেলো, সুতরাং এই বিশেষ ক্ষেত্রে আপনাকে ইনপুট পদ্ধতিতে এমন পরিবর্তন করার অনুমতি দেওয়া হয় যাতে আপনি এটি একটি সুশৃঙ্খল ফ্যাশনে যেতে পারেন।

আরও উদাহরণ:

{} # prints nothing

{100: "ab", 303: "cd"} # prints nothing again

{100: "ab", 303: "cd", 404: "ab"}

100 has identical files to 404

{303: "abc", 304: "dd", 305: "abc", 405: "dd", 606: "abc"}

303 has identical files to 305,606

304 has identical files to 405

সবচেয়ে কম কোড জয়!


"আপনার অভিধানে এটি কীভাবে প্রদর্শিত হয় তার পরিপ্রেক্ষিতে আপনার এটি মুদ্রণ করা উচিত" - এর অর্থ কী তা আমি পুরোপুরি নিশ্চিত নই। অন্যথায় আমি চ্যালেঞ্জ পছন্দ করি।
জিউসেপ

3
আমি কি মূল সাইটে পোস্ট করার আগে স্যান্ডবক্স ব্যবহার করার পরামর্শ দেব ? সবসময় শোধন জন্য পোস্ট করা পরিবর্তে পেয়ে একটি মিলিয়ন মন্তব্য :-) প্রধান উপর সামনে এক প্রশ্নের পুনর্বিবেচনা পেতে সহায়ক
: Giuseppe

1
এক্ষেত্রে যেখানে প্রতারণার একাধিক গ্রুপ পাওয়া যায়, সেখানে দলগুলির মধ্যে প্রয়োজনীয় ক্রম রয়েছে? উদাহরণস্বরূপ, শেষ পরীক্ষার ক্ষেত্রে "304 has ..." "303 has ..." এর আগে মুদ্রণ করা যায়?
কামিল দ্রাকারী

2
আমরা কি 303 has identical files to [305, 606]পরিবর্তে আউটপুট অনুমতি দেওয়া হয় 303 has identical files to 305,606?
কেভিন ক্রুইজসেন

1
যে ভাষাগুলিতে একটি অভিধান, মানচিত্র, বা হ্যাশম্যাপ টাইপ বিদ্যমান নেই, সেখানে টিপলসের তালিকা (বা সমমানের) অনুমোদিত কি?

উত্তর:


2

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

[key, value]বিন্যাসে অ্যারের অ্যারে হিসাবে ইনপুট নেয় । যান গ্যাজেট ডাবল ফ্ল্যাটম্যাপ!

o=>o.flatMap(([x,h],i)=>(a=o.flatMap(([y,H],j)=>j>i&H==h?(o[j]=[,j],[y]):[]))+a?x+' has identical files to '+a:a)

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


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

নেটিভ জেএস অবজেক্ট হিসাবে ইনপুট নেয়।

o=>Object.keys(o).flatMap((x,i,a)=>(a=a.filter(y=>i--<0&o[y]==o[x]&&(o[y]=y)))+a?x+' has identical files to '+a:a)

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


1
সত্যিই সুন্দর! বেশ বড় একটি ফাইল কিন্তু তারপরেও আমি আর আশা করিনি যে এই সমস্যাটি অন্যান্য সমস্যাগুলির মতো সহজ হবে। মহান কাজ! আমি এটি আরও খতিয়ে দেখবflatMap
কে স্প্লিট এক্স

@KSplitX flatMapএখনও ব্যাপকভাবে সমর্থিত নয়। আমি নিশ্চিত যে এখানে আরও ছোট উপায় রয়েছে তবে দেরি হচ্ছে এবং আমি আর ভাবতে পারি না। : পি
আর্নল্ড

2

পাইথন 2 , 127 126 বাইট

def f(x):
 for l in{`[K for K,V in x if v==V]`[1:-1]for k,v in x}:
	if','in l:print l.replace(',',' has identical files to',1)

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

(<studentNumber>,<hash>)ইনপুট হিসাবে অর্ডারযুক্ত জোড়গুলির একটি তালিকা নেয় ।


একটি ছোট গল্ফ মিস করেছেন:if','in
বেদন্ত কান্দোই

@ ওয়েডেন্ট কান্দোই: থেক্স!
চ্যাস ব্রাউন 21

1

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

+m`((:.+)$(¶|.)+?)^(.+)\2$
,$4$1
:.*

G`,
%1`,
 has identical files to 

এটি অনলাইন চেষ্টা করুন! পৃথক রেখায় ইনপুট নেয় তবে লিঙ্কটিতে পরীক্ষার স্যুট অন্তর্ভুক্ত থাকে যা আপনার জন্য উদাহরণগুলি পৃথক করে। ব্যাখ্যা:

+

আর কোনও প্রতিস্থাপন না করা পর্যন্ত এই ম্যাচটি পুনরাবৃত্তি করুন।

m`((:.+)$(¶|.)+?)^(.+)\2$
,$4$1

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

:.*

সমস্ত হ্যাশ মুছুন।

G`,

কমা দিয়ে শুধুমাত্র লাইন রাখুন।

%1`,
 has identical files to 

প্রতিটি লাইনের প্রথম কমাটি কাঙ্ক্ষিত পাঠ্য (পেছনের স্থান সহ) সহ প্রতিস্থাপন করুন।


1

আর , 145 132 129 126 124 বাইট

function(m,`!`=names)for(e in !(t=table(m))[t>1])cat(el(n<-!m[m==e]),'has identical files to',paste(n[-1],collapse=','),'
')

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

এটি একটি নামযুক্ত ভেক্টরকে ইনপুট হিসাবে নেয় (নামগুলি কীগুলি হয়)

  • -2 বাইট জিউসেপ্পিকে ধন্যবাদ

যদি ", "একাধিক নকলের ক্ষেত্রে বিভাজক (কমা পরে কোনও স্থান সহ) এর অনুমতি দেওয়া হয় তবে আমরা এই কোডটি ব্যবহার করতে পারি এবং 10 বাইট সংরক্ষণ করতে পারি:

আর , 114 বাইট

function(m,`!`=names)for(e in !(t=table(m))[t>1])cat(el(n<-!m[m==e]),'has identical files to',toString(n[-1]),'
')

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


124 বাইট যদিও আমার অন্ত্র আমাকে বলছে একটি ভিন্ন পদ্ধতির 115 টি পরিসরে কিছু উপার্জন হতে পারে ...
জিউসেপ

0

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

Σθ}.γθ}vyg1›iy€нć“ÿ€°Ê¼‡œ€„ “?',ý,

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

ব্যাখ্যা:

Σθ}                   # Sort the (implicit) input by the string
.γθ}                  # Then group it by the string
v                     # Loop `y` over each grouped inner list
 yg1i                #  If the group contains more than 1 key-value pairs:
      y€н             #   Only leave the keys
      ć               #   Pop and push the head and rest of the list separately
                      #   (with the head being at the top of the stack now)
       “ÿ€°Ê¼‡œ€„    #   Compressed string "ÿ has identical files to "
                      #   where the "ÿ" is automatically replaced with the top of the stack
                   ?  #   Print it (without trailing newline)
       ',ý           '#   Join the remaining numbers by a comma
          ,           #   And output it as well (with trailing newline)

আমার এই 05AB1E উত্তরটি দেখুন (অভিধানটি কীভাবে ব্যবহার করবেন? ) কেন “ÿ€°Ê¼‡œ€„ “তা বোঝার জন্য "ÿ has identical files to "




0

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 130 বাইট

a=>a.GroupBy(x=>x.Value,x=>x.Key).Where(x=>x.Count()>1).Select(x=>x.First()+" has identical files to "+String.Join(",",x.Skip(1)))

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

এই প্রশ্নটি সম্পর্কে আশ্চর্যের বিষয় হ'ল উদাহরণগুলি কী / মান জোড়া হিসাবে একটি জেএসওএন ফর্ম্যাটে দেওয়া হয় যা সাধারণত বোঝা যায় যে তারা নিরবচ্ছিন্ন ... এই ক্ষেত্রে, ক্রমটি গুরুত্বপূর্ণ। এর মতো, আমি ইনপুটটির জন্য টিপলগুলির একটি তালিকা এবং আউটপুট হিসাবে স্ট্রিংগুলির একটি তালিকা ব্যবহার করছি।

// a is a list of tuples
// (student #, hash)
a=>a
  // group by hash
  // grouped items are the student #'s
  .GroupBy(x=>x.Value,x=>x.Key)
  // remove single student groups
  .Where(x=>x.Count()>1)
  // format the output strings
  .Select(x=>x.First()+
    " has identical files to "+
    String.Join(",",x.Skip(1)))


0

জাপট , 34 বাইট

üÌl>1 ®mgîÎ+` •s ÅÁÈól fÅC ‘ `+ZÅ

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

এই মুহুর্তে এটি লাইনের ক্রমক্রমে সামঞ্জস্যপূর্ণ নয় তবে একটি লাইনের মধ্যে এটি সঠিকভাবে আউটপুট দেয়। যদি আউটপুটটির লাইনগুলি একটি নির্দিষ্ট ক্রমে হওয়া দরকার তবে এটি আরও কয়েকটি বাইট লাগবে। ইনপুট কেবল একটি অ্যারে[id, hash] জোড়াগুলির

ব্যাখ্যা:

üÌ                                    :Group by hash
  l>1                                 :Remove the ones that are unique
      ®mgà                            :Get just the Ids
          ®                           :Generate a string for each hash:
           Î                          : The first Id with that hash
            +` •s ÅÁÈól fÅC ‘ `       : Plus " has identical files to " compressed
                               +ZÅ    : Plus the remaining Ids
                                      : Implicitly comma delimited

0

পার্ল 6 , 115 110 103 বাইট

-2 বাইট জো কিংকে ধন্যবাদ জানায়

{unique map {.[0]~" has identical files to "~join ',',.skip},grep *>1,.map:{.grep(*{*}eq$^p{*})>>.key}}

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

হ্যাশগুলি নিয়ন্ত্রণহীন হওয়ায় জোড়গুলির তালিকা তৈরি করে। দ্বি-উপাদানগুলির তালিকার একটি তালিকা কয়েক বাইট সংরক্ষণ করতে পারে তবে একচেটিয়া মনে হয়। লাইনের একটি তালিকা ফেরত দেয়।

95 88 বাইট যদি ফলাফলের লাইনের ক্রমটি বিবেচনা করে না:

*.classify(*{*}){*}>>.key.grep(*>1).map:{.[0]~" has identical files to "~join ',',.skip}

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


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