অরিজিনালিটি অনুসারে গ্রুপ ইন্টিজার্স


12

পরিচিতি:

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

তবে চীনা সংস্থাও নক-অফ ধাঁধা তৈরি করে। এই নক-অফগুলি হয় হয় মূল স্রষ্টার অনুমতি ব্যতীত ব্যবহৃত নকশাগুলি বা ইতিমধ্যে বিদ্যমান ধাঁধাগুলির স্বল্প মূল্যে স্বল্প মানের কপি।

চ্যালেঞ্জ:

আমরা একটি নির্দিষ্ট ক্রমে (বাম থেকে ডান দিকে ) 'প্রকাশিত' সংখ্যার মৌলিকত্ব নির্ধারণ করতে যাচ্ছি ।
পূর্ণসংখ্যার একটি তালিকা দেওয়া হয়েছে, গোষ্ঠী এবং তাদের মৌলিকতা দ্বারা আউটপুট।

সংখ্যার মৌলিকতা কীভাবে নির্ধারণ করা হয়?

  • কোনও সংখ্যাটি কি আগের সংখ্যাটির হুবহু নকল? গ্রুপ এক্স+ +1 (কমপক্ষে আসল), যেখানে গ্রুপ এক্স+ +1 অন্যান্য সমস্ত গ্রুপের পরে চলছে।
  • একটি সংখ্যা কি পূর্ববর্তী সংখ্যার সদৃশ, তবে এর পরিবর্তে এর নেতিবাচক (অর্থাত্ মূল সংখ্যাটি এন ছিল , তবে এখন -এন ; বা তদ্বিপরীত)? গ্রুপ এক্স
  • সংখ্যার পরম মানটি এক বা একাধিক পূর্বের নিখুঁত সংখ্যার সাথে যুক্ত করে তৈরি করা যেতে পারে এবং এটি কি পূর্ব বর্ণিত গ্রুপগুলির অংশ নয় এক্স+ +1 বাএক্স ? গ্রুপএক্স-এন , যেখানেএন হ'ল সংক্ষিপ্তকরণে ব্যবহৃত স্বতন্ত্র সংখ্যাগুলির পরিমাণ (এবংএন1 )।
  • সংখ্যাটি কি উপরের কোনও গ্রুপের সাথে খাপ খায় না, তাই এখন পর্যন্ত সম্পূর্ণ অনন্য? গ্রুপ 1 (সর্বাধিক মূল), যা অন্যান্য সমস্ত গ্রুপের আগে নেতৃত্ব দিচ্ছে।

এটি বেশ অস্পষ্ট মনে হতে পারে, সুতরাং এখানে ধাপে ধাপে উদাহরণ :

ইনপুট-তালিকা: [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]

  • 34প্রথম সংখ্যা, যা সর্বদা আসল এবং গোষ্ঠী 1 । এখনও পর্যন্ত আউটপুট:[[34]]
  • 9 এটিও মূল: [[34,9]]
  • 4 এটিও মূল: [[34,9,4]]
  • -34পূর্ববর্তী সংখ্যার নেতিবাচক 34, তাই এটি এক্স গ্রুপে রয়েছে :[[34,9,4],[-34]]
  • 19 মূল: [[34,9,4,19],[-34]]
  • -199পূর্বের দুটি সংখ্যা দ্বারা গঠিত হতে পারে 19এবং 9তাই এটি এক্স-2 গ্রুপে রয়েছে :[[34,9,4,19],[-199],[-34]]
  • 34পূর্ববর্তী সংখ্যার হুবহু অনুলিপি, সুতরাং এটি এক্স+ +1 গ্রুপে রয়েছে :[[34,9,4,19],[-199],[-34],[34]]
  • -213 মূল: [[34,9,4,19,-213],[-199],[-34],[34]]
  • 94পূর্বের দুটি সংখ্যা দ্বারা গঠিত হতে পারে 9এবং 4তাই এটি এক্স-2 গ্রুপে রয়েছে :[[34,9,4,19,-213],[-199,94],[-34],[34]]
  • 1934499চার আগের সংখ্যার দ্বারা গঠিত হতে পারে 19, 34, 4, এবং দুই বার 9, তাই এটি গ্রুপ আছে এক্স-4 :[[34,9,4,19,-213],[19499],[-199,94],[-34],[34]]
  • 213পূর্ববর্তী সংখ্যার নেতিবাচক -213, তাই এটি এক্স গ্রুপে রয়েছে :[[34,9,4,19,-213],[1934499],[-199,94],[-34,213],[34]]
  • 3 মূল: [[34,9,4,19,-213,3],[1934499],[-199,94],[-34,213],[34]]
  • 21 মূল: [[34,9,4,19,-213,3,21],[1934499],[-199,94],[-34,213],[34]]
  • -2134দুই আগের সংখ্যার দ্বারা গঠিত হতে পারে 213এবং 4(বা তিন আগে সংখ্যার 21, 3এবং 4, কিন্তু আমরা সবসময় সংখ্যার concatenating মৌলিকত্ব নির্ধারণ করতে অন্তত পরিমাণ ব্যবহার করুন), তাই এটি গ্রুপ আছে এক্স-2 :[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134],[-34,213],[34]]
  • 44449দুটি পূর্ববর্তী সংখ্যা দ্বারা চারবার গঠিত হতে পারে 4এবং 9তাই এটি এক্স-2 গ্রুপে রয়েছে :[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[-34,213],[34]]
  • 44একক পূর্ববর্তী সংখ্যা দ্বারা গঠিত হতে পারে 4, দু'বার পুনরাবৃত্তি করা হয়েছে, তাই এটি এক্স-1 গ্রুপের মধ্যে রয়েছে - 1 : [[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]

সুতরাং ইনপুট [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]জন্য আউটপুট হয় [[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]

চ্যালেঞ্জ নিয়ম:

  • I / O নমনীয়। আপনি পূর্ণসংখ্যা বা স্ট্রিংগুলির তালিকা / অ্যারে / স্ট্রিম হিসাবে ইনপুট করতে পারেন, এসটিডিআইএন-এর মাধ্যমে একে একে ইনপুট ইনপুট আউটপুট কী হিসাবে দলগুলির সাথে একটি মানচিত্র হতে পারে, উদাহরণ হিসাবে একটি নেস্টেড তালিকা এবং এই চ্যালেঞ্জের পরীক্ষার কেসগুলি মুদ্রিত নিউলাইন পৃথক, ইত্যাদি
  • আপনাকে বিপরীত ক্রমে ইনপুট-তালিকাটি নেওয়ার অনুমতি দেওয়া হয়েছে (স্ট্যাক-ভিত্তিক ভাষার জন্য সম্ভবত দরকারী) useful Case যে ক্ষেত্রে উল্লিখিত বাম থেকে ডান অবশ্যই ডান থেকে বাম।
  • আপনি পূর্ণসংখ্যা উদাহরণস্বরূপ এ দেখতে পাচ্ছি -2134, আমরা সবসময় গ্রুপ একটি সংখ্যা হিসাবে কয়েক সম্ভব সঙ্গে অন্যান্য সংখ্যার একটি সংযুক্তকরণের যে (দ্বারা গঠিত 213এবং 4- দুটি সংখ্যার আর নয় 21, 3আর 4- তিন নম্বর)।
  • আপনি যেমন পূর্ণসংখ্যার উদাহরণে দেখতে পাচ্ছেন 1934499, আপনি 9একাধিকবার আগের ক্ষেত্রে ( এই ক্ষেত্রেটি) একাধিকবার ( উদাহরণে 44449চারটি 4এবং একটি ব্যবহারের অনুরূপ) ব্যবহার করতে পারেন 9। গ্রুপটি নির্ধারণের জন্য এগুলি কেবল একবার গণনা করা হয়।
  • খালি গোষ্ঠীর জন্য আউটপুটে আপনার খালি অভ্যন্তরীণ তালিকা রাখার অনুমতি নেই। সুতরাং পরীক্ষার ক্ষেত্রে [1,58,85,-8,5,8585,5885,518]এর [[1,58,85,8,5],[518],[5885],[8585],[],[]]পরিবর্তে ফলাফল নাও পাওয়া যায়, যেখানে খালি গোষ্ঠীগুলি এক্স এবং এক্স-1 এবং উপরের উদাহরণটির [[34,9,4,19,-213,3,21],[1934499],[],[-199,94,-2134,44449],[44],[-34,213],[34]]পরিবর্তে ফলাফল নাও পেতে পারে , যেখানে খালি গ্রুপটি এক্স-3
  • গোষ্ঠীর ক্রম কঠোর (যদি আপনি কোনও মানচিত্র ব্যবহার না করেন, তবে গ্রুপগুলি কীগুলি থেকে কেটে নেওয়া যেতে পারে) তবে গোষ্ঠীর মধ্যে সংখ্যার ক্রম যে কোনও ক্রম হতে পারে। সুতরাং [34,9,4,19,-213,3,21]গ্রুপ 1 উপরের উদাহরণে এর জন্যও হতে পারে [21,3,-213,19,4,9,34]বা [-213,4,34,19,9,21,3]
  • আপনি গ্যারান্টিযুক্ত যে পূর্বের নয়টিরও বেশি সংখ্যার দ্বারা তৈরি হওয়া কোনও সংখ্যা কখনও থাকবে না। যদি আপনি কোন হবে না তাই এক্স-10 : গ্রুপ, এবং সম্ভব দলের বৃহত্তম পরিমাণ 12 [1,এক্স-9,এক্স-8,,এক্স-2,এক্স-1,এক্স,এক্স+ +1]
  • আপনি ধরে নিতে পারেন পূর্ণসংখ্যার সর্বাধিক 32 বিট হবে, সুতরাং সীমার মধ্যে [−2147483648,2147483647]

সপ্তাহের দিন:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার জন্য যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • আপনার উত্তরটির জন্য ডিফল্ট আই / ও বিধিগুলির সাথে মানক বিধিগুলি প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং ফিরতি-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে দয়া করে আপনার কোডের (যেমন টিআইও ) একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন ।
  • এছাড়াও, আপনার উত্তরের জন্য একটি ব্যাখ্যা যুক্ত করা অত্যন্ত প্রস্তাবিত।

পরীক্ষার কেস:

Input:  [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
Output: [[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]

Input:  [17,21,3,-317,317,2,3,117,14,-4,-232,-43,317]
Output: [[17,21,3,2,117,14,-4],[-317,-232,-43],[317],[3,317]]

Input:  [2,4,8,10,12,-12,-102,488,10824]
Output: [[2,4,8,10,12],[10824],[-102,488],[-12]]

Input:  [0,100,-100,10000,-100,1001000]
Output: [[0,100],[10000,1001000],[-100],[-100]]

Input:  [1,58,85,-8,5,8585,5885,518]
Output: [[1,58,85,-8,5],[518],[5885],[8585]]

Input:  [4,-4,44,5,54]
Output: [[4,5],[54],[44],[-4]]

তাই X + 1সঠিক কপি জন্য বিশেষ গ্রুপ, এবং Xএই ধরনের তার অস্বীকৃতি হিসাবে অন্যান্য সংখ্যার যে একটি একক সংখ্যা কপি থেকে যাবে গঠিত, জন্য একটি গ্রুপ?
নীল

1
[-2147483648,2147483647][1, 1111111111]

1
আমি নিজেই একজন সংগ্রাহক হয়েছি: কেভিন, এটি একটি জঘন্য সংগ্রহ। সত্যিই খুব সুন্দর.
জে স্যালা

1
আমি ম্যাজিক সংগ্রহ করি: জমায়েত কার্ড এবং সেটগুলি মোটামুটি ছোট হলেও সেক্ষেত্রে এখনও একটি আশ্চর্যরকম বড় জায়গা দখল করে।
জে সালোé

1
@ জে.সালোé ওহ, আমি অনুভূতি জানি। আমি পোকমন টিসিজি কার্ডগুলিও সংগ্রহ করি (এবং সত্যিকার অর্থে 1200 টিরও বেশি অনন্য পিকাচু কার্ডের সাথে বিশ্বের দ্বিতীয় বৃহত্তম পিকাচু টিসিজি সংগ্রহ রয়েছে) .. যখন আপনার 9,000 এর বেশি কার্ড রয়েছে তখন এটি অবশ্যই বেশ খানিকটা জায়গা নেয়। ধাঁধা যতটা না, যদিও। 10 এর পরিবর্তে মাত্র 1.5 তাক; পি
কেভিন ক্রুইজসেন

উত্তর:


1

জেলি , 36 33 বাইট

ADṪŒṖfƑƇƊQ€Ẉ.*;,AṪe$€SƲṀµƤż⁸ṢZ¹ƙ/

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

আমি নিশ্চিত এটি আরও গল্ফ করা যেতে পারে। গ্রিমির 05 এবি 1 ই উত্তর থেকে কিছু অনুপ্রেরণা নিয়েছে , তাই সেটিকেও উজ্জীবিত করতে ভুলবেন না!


9

পাইথন 3 , 565 564 524 523 500 437 399 394 393 389 385 372 বাইট

ব্রুট ফোর্স বাস্তবায়ন ব্যবহার করে itertools ; সমস্ত টেস্ট-কেস টিআইও-র 60 সীমাতে চলে না।

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

ধন্যবাদ ArBo 101 বাইট, এর golfing জন্য গ্যালেন ইভানভ 19 বাইট, এর golfing জন্য ElPedro 5 বাইট golfing, এর জন্য movatica 17 বাইট, এর golfing জন্য কালো পেঁচা কাই 2 বাইট golfing জন্য, এর স্কুইড 2 বাইট golfing জন্য এবং কেভিন Cruijssen জন্য গল্ফিং 1 বাইট

from itertools import*
w=permutations
def c(l,x):
 for i in range(9):
  for q in w(map(abs,sum(l,[]))):
   for s in w(q[:i+1]*len(x)):
    z='';s=[*s]
    while x[len(z):]:
     z+=str(s.pop(0))
     if z==x:return 9-i
 return 0
def f(a):
 l=[[]for _ in a*6]
 for x in a:l[(x in sum(l,[]))*11or(-x in sum(l,[]))*10or any(l)and c(l,str(abs(x)))]+=x,
 return[*filter(len,l)]

ব্যাখ্যা:

from itertools import *
w = permutations  # We'll be using this twice

def c  # Helper function to calculate which group a number belongs in according to the concatenation rule; returns 0 (original) if none is found
(l, x):  # First parameter is the list of groups (a list of lists of numbers), second parameter is the number to investigate
 for i in range(9):  # There won't be any concatenations of more than 9 elements
  for q in w(map(abs,sum(l,[]))):  # Flatten l to get a plain list of previous numbers, then generate permutations of their absolute values as lists; for each permutation ...
   for s in w(q[:i+1]*len(x)):  # ... use only the first i + 1 elements; inflate the list with enough copies to compose the target number and permutate; then try to compose the target number from each permutation:
    z = ''  # Start with the empty string
    s = [*s]  # Convert permutation to list
    while x[len(z):]:  # Keep going until the length of the concatenated string equals the length of the target number
     z += str(s.pop(0))  # Concatenate the first element of the current permutation list and remove it
     if z == x:  # If the target number has been synthesized successfully ...
      return 9 - i  # stop searching and return the appropriate group
 return 0  # If no concatenation has been found, consider the number original

def f(a):  # Solution function, takes a list of numbers as argument
 l = [[] for _ in a * 6]  # Populate the result list with at least 12 empty groups if there is more than one number in the input (we'll be using only the first 12 and removing empty ones later); if there is just one, we'll only need one group in the output
 for x in a:  # For each number in order:
  l[(x in sum(l, [])) * 11 or (-x in sum(l, [])) * 10 or any(l) and c(l, str(abs(x)))] += x,  # If x is not the first number, attempt concatenation (if not, c(l, str(abs(x))) would crash due to l not containing any non-empty sublists; use absolute value of the number under investigation; convert to string since we'll be needing the number of digits and comparing it to a string later); if -x has already been seen, put it in Group X; if x has already been seen, put it in Group X + 1
  return [* filter(len, l)]  # Remove empty lists and return the result

পাইথন 2 , 406 379 374 373 372 368 355 বাইট

একই দৃষ্টিভঙ্গি, তবে কিছু গল্ফিং ট্রিকসের কারণে পাইথন 3 আর সমর্থন করে না any ধন্যবাদ ArBo গুলো পুরনো এবং 28 বাইট, এর golfing জন্য ElPedro 5 বাইট golfing, এর জন্য movatica 17 বাইট golfing জন্য, এবং স্কুইড 1 এর আরও বেশি বাইট golfing জন্য।

from itertools import*
w=permutations
def c(l,x):
 for i in range(9):
  for q in w(map(abs,sum(l,[]))):
	for s in map(list,w(q[:i+1]*len(x))):
	 z=''
	 while x[len(z):]:
		z+=`s.pop(0)`
		if z==x:return 9-i
 return 0
def f(a):
 l=[[]for _ in a*6]
 for x in a:l[(x in sum(l,[]))*11or(-x in sum(l,[]))*10or any(l)and c(l,`abs(x)`)]+=x,
 return filter(len,l)

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


2
মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
জেমস

আপনি উভয় মধ্যে 5 বাঁচাতে পারবেন str(abs(x))(বা পাইথন 2 এ ব্যাকটিক্স সহ অ্যাবস (এক্স)) ফাংশন কলটিতে এবং এক্স ফাংশন সংজ্ঞায় y কে y = str (অ্যাবস (এক্স)) মুছে ফেলাতে। দুঃখিত, এই মুহুর্তে টিআইও কাজ করতে পারে না।
এলপেড্রো

আপনি lenঅন্য বাইট শেভ করে ফিল্টার করতে পারবেন , তাই না?
স্কুইড

আপনি any()কলগুলির অভ্যন্তরে তালিকার বাক্য
গঠনটি

... এবং আরও ছোট: উভয়ের (x in sum(l,[]))পরিবর্তে এবং আরও 13 টি বাইট সংরক্ষণ করে! any(x in s for s in l)x-x
মুভিটিকা

7

পাইথন 2 , 235 234 232 246 245 244 241 240 238 237 236 বাইট

from itertools import*
s=[];r=map(list,[s]*12)
for e in input():r[-(e in s)or max([10*(-e in s)]+[10-len(set(p[:i]))for p in permutations(`abs(x)`for x in s*11)for i in range(len(p))if''.join(p[:i])==`e`])]+=e,;s+=e,
print filter(len,r)

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

অন্যান্য পাইথন উত্তরের বিষয়ে স্কাইডের মন্তব্যে -1 বাইট ধন্যবাদ

এই উত্তরের পরীক্ষার কেসগুলির মধ্যে সবচেয়ে তুচ্ছ ছাড়া আর কোনও সমাধানের আশা নেই । Tio লিংকের মাধ্যমে s*11দ্বারা প্রতিস্থাপিত হয়েছে s*2, দ্রুত জন্য কিছু কিছু ক্ষেত্রে শুদ্ধতা sacrificing Er সঞ্চালনের সময়, কিন্তু যতদূর আমি দেখতে পারেন, এই পোস্টে সংস্করণটি সবসময়ই সঠিক উত্তর উৎপাদ তত্ত্ব।

ব্যাখ্যা

from itertools import*          # So that we can abuse permutations
s=[];                           # s will hold the already classified numbers
r=map(list,[s]*12)              # r will hold these too, but in the form of
                                #  a nested list, sorted by originality
for e in input():               # Here comes the big one; iterate over the input
 r[-(e in s)or                  # If e has already passed, it is not original
   max([10*(-e in s)]+          # Else, we count 10 - the number of seen elements
                                #  needed to make this one, or 0 if it's new,
                                #  or 10 if its inverse has already passed
   [10-len(set(p[:i]))          # The number of distinct elements in...
    for p in permutations(      #  for each permutation of the seen elements,
      `abs(x)`for x in s*11)
                                #  with values occuring up to 10 times (to
                                #  account for 1111111111, for example;
                                #  we need 11 here and not 10, because
                                #  p[:i] doesn't include i)...
    for i in range(len(p))      #  each prefix...
    if''.join(p[:i])            #  only if its concatenation is equal to
      ==`e`])]                  #  the current element
 +=e,;s+=e,                     # Append the element to the relevant lists
print filter(len,r)             # And finally, print the non-empty result lists

2
আপনি নিজের পাইথনের উত্তরটি তৈরি করেছেন দেখে আমি আনন্দিত :-) এবং এটিও খাটো!
ওবালেন্স

@ ওউবালেন্স এখনই, যদি এটি আমার জীবনকালের মধ্যেই শেষ হয়ে যায় ...
আরবো

1
ওহ, আমি কীভাবে উইন্ডোজ সংস্করণটির সাথে এটি একটি নির্বোধ জিনিস ভুলে গেছি (এটি int32৪-বিট সংস্করণে এমনকি কেবল 32 বিট ব্যবহার করে )।
ফেয়ারসুম

7

05AB1E , 43 41 38 35 27 বাইট

.¡IN£UÄ.œεgΘ>XÄyÙå;P*}àXyå+

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

ব্যাখ্যা:

.¡                              # group by:
  IN£                           #  first N elements of the input, N being the iteration count
     U                          #  store this as X
  Ä                             #  absolute value of the current number
   .œ                           #  partitions (eg 449 => [[4, 4, 9], [44, 9], [4, 49], [449]])
     ε             }            #  map each partition to:
      gΘ>                       #   2 if length = 1, 1 otherwise
           yÙ                   #   for each unique element in the current partition:
         XÄ  å                  #    1 if it's in the absolute value of X, 0 otherwise
              ;                 #   divide all by 2
               P*               #   product of all these numbers
                  à             #  take the maximum
                   Xyå+         #  add 1 if X contains the current number

যেহেতু গ্রুপ নম্বরগুলি আউটপুটের অংশ নয়, ততক্ষণ অর্ডার সঠিক হওয়া পর্যন্ত আমরা যে কোনও নম্বর চাইব তা ব্যবহার করতে মুক্ত। এটি আসল সংখ্যার জন্য 0, গ্রুপ এক্সএন এর জন্য 2 ^ -N, গোষ্ঠী X এর জন্য 1, গোষ্ঠী এক্স + 1 এর জন্য 2 ব্যবহার করে।


3
আমি 05AB1E পড়তে পারি না বলে এটি কীভাবে কাজ করে তার একটি ব্যাখ্যা দেখতে আমি চাই।
ওবালান্স

@ ওউবালেন্স আমি একটি ব্যাখ্যা যুক্ত করেছি, আশা করি এটি যথেষ্ট পরিষ্কার।
গ্রিমি

ধন্যবাদ, এটি সুন্দরভাবে ব্যাখ্যা করে। ভাল পদ্ধতির, আমার
উপভোগ করুন

2

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

ধীরতম পরীক্ষার কেস টিআইওতে পূর্ণ হতে পারে না , তবে এটি আমার মেশিনে প্রায় 10 সেকেন্ড সময় নেয়।

import re
a=[()];m=a*99
for n in input():
    i=0;r='-('
    while i<10>re.search(r'(\b.+\b).+'*i+r+')+$','%s-%%s'%a%n):i+=1;r+='|\\'+`i`
    m[48*(n in a)|32*(-n in a)|14-i]+=n,;a+=n,
print filter(len,m)

এটি এলপি Py৪ পাইথন বিল্ডসের '%s-%%s'%a%nসাথে প্রতিস্থাপন করে 2 বাইট দ্বারা সংক্ষিপ্ত করা যেতে পারে `a`+'-'+`n`


1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 211 205 বাইট

a=>a.map(s=>(c[q=(G=(n,r=[],A=Math.abs,N=""+A(s))=>N[L="length"]<n[L]?0:N!=n?Math.max(0,...c.flat().map(x=>G(n+A(x),[...r,x]))):1/r?s-r?11:12:12+~new Set(r).size)``]=c[q]||[]).push(s),c=[])&&c.filter(x=>x)

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

সর্বাধিক 12 টি গ্রুপ রয়েছে এমন অনুমানটি ব্যবহার করে।

জাভাস্ক্রিপ্ট (নোড.জেএস) , 267 226 221 218 211 বাইট

a=>a.map(s=>(c[q=(G=(n,r=[],A=Math.abs,N=""+A(s))=>N[L]<n[L]?0:N!=n?Math.max(0,...c.flat().map(x=>G(n+A(x),[...r,x]))):1/r?l-(s!=+r):l+~new Set(r).size)``]=c[q]||[]).push(s),c=[],l=a[L="length"])&&c.filter(x=>x)

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

a=>a.map(                       // Iterate through all items:
 s=>(c[q=(
  G=(                           //  Helper function to calculate index (=GroupNo-1):
   n,                           //   Stores different (repeatable) permutations
   r=[],                        //   Stores the elements used
   A=Math.abs,
   N=""+A(s))                   //   Stores the string version of the absolute value
  =>
  N[L="length"]<n[L]?           //   If n is longer then N:
   0                            //    0 (Group 1) - no permutation found to equal the string
  :N!=n?                        //   Else if N!=n:
   Math.max(0,...c.flat().map(  //    Return max of the results of the next recursion
    x=>G(n+A(x),[...r,x])       //    for each of the elements in c
   ))
  :1/r?                         //   Else if r has only 1 item: (=+s/-s)
   s-r?11:12                    //    Return l-1 (Group X) if r=-s, and l (Group X+1) if r=s
  :12+~new Set(r).size          //   Else: return l-r.size-1 (Group X-r.size)
 )``]=c[q]||[]).push(s),        //  Push the element into the corresponding array
 c=[]                           //  Initialize an empty array
)&&c.filter(x=>x)               // Filter out all empty groups

... বা 193 বাইট যদি কোনও অভিধানে ফেরানো ঠিক থাকে:

a=>a.map(c=s=>(c[q=(G=(n,r=[],A=Math.abs,N=""+A(s))=>N[L="length"]<n[L]?-1/0:N!=n?Math.max(...d.map(x=>G(n+A(x),[...r,x]))):1/r?+!(s-r):-new Set(r).size)``]=c[q]||[]).push(s)&d.push(s),d=[])&&c

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

এই ক্ষেত্রে, কী -Infinityমানে গ্রুপ 1 এবং অন্যান্য কীগুলির অর্থ গ্রুপ X+key

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