সর্বোচ্চ বা নিম্নতম ঘটনা?


13

চ্যালেঞ্জ:

ইনপুট:

  • মুদ্রণযোগ্য এএসসিআইআইযুক্ত একটি স্ট্রিং (স্পেস, ট্যাব এবং নতুন লাইনগুলি বাদে)
  • একটি বুলিয়ান

আউটপুট:

স্ট্রিংয়ের অংশগুলি চারটি দলে বিভক্ত:

  • ছোট হাতের অক্ষর
  • বড় হাতের অক্ষর
  • সংখ্যা
  • অন্যান্য

বুলিয়ানের উপর ভিত্তি করে, আমরা হয় এই চারটি দলের একটির (বা একাধিক) সর্বাধিক উপস্থিতি আউটপুট করি, বা সর্বনিম্ন, সমস্ত কিছুকে স্পেস দিয়ে প্রতিস্থাপন করি।

উদাহরণ স্বরূপ:

ইনপুট: "Just_A_Test!"
এতে রয়েছে:
- 3 বড় হাতের অক্ষর: JAT
- 6 ছোট হাতের অক্ষর: ustest
- 0 সংখ্যা
- 3 অন্যান্য:__!

এগুলি এর জন্য আউটপুট trueবা false:

true:   " ust    est "

// digits have the lowest occurrence (none), so everything is replaced with a space
false:  "            "

(দ্রষ্টব্য: আপনাকে পূর্ববর্তী স্থানগুলি অগ্রাহ্য করার অনুমতি দেওয়া হয়েছে, সুতরাং ফলাফলগুলিও হতে পারে " ust est"এবং"" যথাক্রমে যথাক্রমেও ))

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

  • ইনপুট ফাঁকা থাকবে না বা খালি জায়গা থাকা, এবং শুধুমাত্র সীমার মধ্যে মুদ্রণযোগ্য হওয়া ASCII নিয়ে গঠিত হবে 33-126অথবা '!'মাধ্যমে '~'
  • আপনি চাইলে ইনপুট এবং / অথবা আউটপুটগুলি অক্ষর-অ্যারে বা তালিকা হিসাবে গ্রহণের অনুমতি পাবেন।
  • Le বুলিয়ান জন্য যে কোনও দুটি ধারাবাহিক এবং স্বতন্ত্র মান অনুমোদিত: true/ false; 1/ 0; 'H'/ 'L'; "highest"/ "lowest"; ইত্যাদি নোট করুন যে এই স্বতন্ত্র মানগুলি (কিছুটা) বুলিয়ান হিসাবে ব্যবহার করা উচিত! সুতরাং এটি দুটি সম্পূর্ণ প্রোগ্রাম ইনপুট করার অনুমতি দেওয়া হয় না, একটি যা সঠিক ফলাফল দেয় trueএবং অন্যটি এর জন্য falseএবং তারপরে কেবল আপনার আসল কোডটিই থাকে <run input with parameter>প্রাসঙ্গিক নতুন ডিফল্ট লুফোল আমি যুক্ত করেছি, যদিও এটি এখনও সংজ্ঞাগুলি সম্পর্কে প্রচুর পরিমাণে আর্থিক ব্যবহার করতে পারে ..
  • যদি দুটি বা ততোধিক গোষ্ঠীর উপস্থিতি একই হয় তবে আমরা সমস্ত উপস্থিতি আউটপুট করি।
  • প্রয়োজনীয় ট্রেলিং স্পেসগুলি alচ্ছিক এবং একক ট্রেলিং নতুন-লাইনটিও alচ্ছিক। প্রয়োজনীয় নেতৃস্থানীয় স্থানগুলি বাধ্যতামূলক। এবং অন্য কোনও শীর্ষস্থানীয় স্থান বা নতুন লাইন অনুমোদিত নয়।

সাধারণ নিয়ম:

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

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

Inputs:                              Output:

"Just_A_Test!", true                 " ust    est "     (or " ust    est")
"Just_A_Test!", false                "            "     (or "")
"Aa1!Bb2@Cc3#Dd4$", either           "Aa1!Bb2@Cc3#Dd4$"
"H@$h!n9_!$_fun?", true              " @$ !  _!$_   ?"
"H@$h!n9_!$_fun?", false             "H     9        "  (or "H     9")
"A", true                            "A"
"A", false                           " "                (or "")
"H.ngm.n", true                      "  ngm n"
"H.ngm.n", false                     "       "          (or "")
"H.ngm4n", false                     "H.   4 "          (or "H.   4")

পৃথক এন্ট্রি হিসাবে সর্বাধিক / স্বল্পতম আউটপুট গ্রহণযোগ্য? উদাহরণস্বরূপ, "হ্যাশিংটি মজাদার" পরীক্ষার ক্ষেত্রে, "H "এবং " 9 "(উপযুক্ত স্থান সহ) এর পরিবর্তে আউটপুট পাওয়া যায় "H 9"?
অ্যাডমবর্কবর্ক

@ অ্যাডমবার্কবার্ক আপনি যা বলতে চাইছেন তা আমি পাই না; Hএবং উভয়ই 9"সল্পতম" অংশ।
এরিক আউটগল্ফার

বুলিয়ান ইনপুট মানটি কি "max"/ হতে পারে "min", যা পরে Math[b]উল্লেখ করা হয় Math.maxবা Math.min?
জাস্টিন মেরিনার

@ জাস্টিনমারিনার আপনি জানেন .. আমি এই সম্পর্কে দুঃখিত হয়ে আমার মন পরিবর্তন করেছি। আমার ধারণা এটি জেএসের জন্য? আমি মনে করি প্রচুর প্রোগ্রামিং ভাষা এই জাতীয় কিছু ব্যবহার করতে পারে, সুতরাং প্রচুর বিদ্যমান উত্তরগুলি পরিবর্তন করা উচিত। তাই দুঃখিত, b?"max":"min"আপনার জবাবটি আপনার অবশ্যই রাখতে হবে .. আমার ধারণা এটি একটি সূক্ষ্ম রেখা, সম্ভবত আমার পরের বারে সত্যবাদী / মিথ্যা মান ব্যবহার করা উচিত ..
কেভিন ক্রুইজসেন

উত্তর:


3

হুস্ক , 27 26 24 22 বাইট

-2 বাইট জাগরবকে ধন্যবাদ

-২ বাইট লেওকে ধন্যবাদ

' 'হিসাবে Falseএবং 'a'হিসাবে নেয় True(কুণ্ডলী মধ্যে, Fasly মধ্যে সাদা স্থান এবং অন্যান্য সমস্ত অক্ষর সত্যবাদী)

Fż▲→ġ#¬Ö#≡⁰Ṫḟë½D±o¬□m;

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

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

Fż▲→ġ#¬Ö#≡⁰Ṫḟë½D±o¬□m;   Function, takes a character c and a string S as arguments
                    m;   Wrap each character in S into it's own string
             ë           List of four functions returning booleans:
              ½D±o¬      Lower case?,Upper case?,Digit?,Not alphanumeric?
           Ṫḟ            Outer product with find†
       Ö#≡⁰              Sort on how many characters have the same Truthyness as c
    ġ#¬                  Group strings with equal numbers of spaces
   →                     Take the last group
Fż▲                      Squash it all into one list

একটি ফাংশন যে একটি বিধেয় লাগে pএবং একটি তালিকা Lএবং প্রথম উপাদান দেখায় Lমাফিক p। কোনও উপাদান সন্তুষ্ট না হলে pএকটি ডিফল্ট যুক্তি ফিরে আসে। এই ক্ষেত্রে ' 'একটি চরিত্রের স্ট্রিংয়ে প্রয়োগ করে আমরা মূলত বলছি if p c then c else ' '

ফাংশন যা একটি ফাংশন লাগে fএবং দুই তালিকা L1, L2। এটি fসমস্ত জোড়া L1এবং এর উপরে প্রয়োগের একটি সারণী প্রদান করে L2। এই ক্ষেত্রে fহয় , L14 ফাংশন আমাদের তালিকা, এবং L2একটি অক্ষর স্ট্রিং তালিকা রয়েছে।

Ṫḟআমাদের স্ট্রিংগুলির একটি তালিকা থাকার পরে যেখানে প্রতিটি স্ট্রিং অক্ষর প্রতিস্থাপনের ফলাফল যা একটি নিয়মের সাথে একটিও পূরণ করে না ' '

নোট: হুসের নতুন সংস্করণগুলিতে 3 বাইট সাশ্রয়ের জন্য ġ#¬Ö#≡⁰প্রতিস্থাপন করা যেতে পারে k#≡⁰!


কৌতূহলের বাইরে: কেন ' 'এবং কেন 'a'? ব্যাখ্যা যুক্ত হওয়ার পরে আমি এটি আরও ভালভাবে বুঝতে পারি, কারণ আমি হুস্কটি পড়তে পারি না। ;)
কেভিন ক্রুইজসেন

নিস! এখানে 24 বাইট ব্যবহার করা হচ্ছে
Zgarb

@ জগারব ধন্যবাদ! আমি Mmmনিজে কী করছি তা আমি সত্যিই বুঝতে পারি নি :)
এইচপিউইজ

দুর্ভাগ্যক্রমে এটি গল্ফিংয়ে সত্যই সহায়তা করে না, তবে S`?' সহজ হতে পারে?IK'
লিও

আমি ব্যবহার এড়াতে ঝোঁক I, কখনও কখনও এটি দোভাষীকে চিরকালের জন্য নিয়ে যায়। এটিকে অপব্যয়ও মনে হয়।
এইচপিউইজ

7

জেলি , 31 বাইট

ØṖḟØBṭØBUs26¤f€³Lİ⁴¡$ÐṀFf
¹⁶Ç?€

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

বুলিয়ান মানগুলি 2এবং 1(বা অন্য কোনও ধনাত্মক সমান / বিজোড় যুগল), যা যথাক্রমে প্রতিনিধিত্ব করে Trueএবং False। আমি আরও গল্ফ করার পরে একটি ব্যাখ্যা যুক্ত করার চেষ্টা করব।

ধন্যবাদ coinheringaahing caird 2 বাইট সংরক্ষণ করার জন্য, এবং লিন 4 বাইট সংরক্ষণ করার জন্য! এরিকের একটি কৌশলকে ধন্যবাদ , যা আমাকে 4 বাইট সংরক্ষণ করতে অনুপ্রাণিত করেছিল!

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

নোট করুন যে এটি 35-বাইট সংস্করণের ব্যাখ্যা। নতুনটি মোটামুটি একই রকম হয় (তবে লিন কিছুটা টুইট করেছে), তাই আমি এটি পরিবর্তন করব না।

ØBUs26f€³µ³ḟØBW,µẎLİ⁴¡$ÐṀF - Niladic helper link.
ØB                         - String of base digits: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
                             abcdefghijklmnopqrstuvwxyz'. 
  U                        - Reverse.
   s26                     - Chop into sublists of length 26, preserving shorter
                             trailing substrings.
      f€³                  - For each, keep the common characters with the input.
            ØB             - Base digits.
          ³ḟ               - Get the signs in the input. Filter the characters of the
                             input that aren't alphanumeric.
              W,µẎ         - Concatenate (wrap, two element list, tighten).
                       ÐṀ  - Keep the elements with maximal link value.
                  L        - Length.
                    ⁴¡     - Do N times, where N is the second input.
                   İ       - Inverse. Computes 1 ÷ Length. 2 maps to the length itself,
                             because 1 ÷ (1 ÷ Length) = length; 1 yields
                             (1 ÷ Length), swapping the maximal numbers with minimal ones.
                         F - Flatten.

¹⁶e¢$?€ - Main link.
      € - For each character.
   e¢?  - If it is contained by the last link (called niladically), then:
¹       - Identity, the character itself, else:
 ⁶      - A space.


ধন্যবাদ :) আমি গলফ চেয়েছিলেন যে অংশ বরাবর আমারও পোস্ট, কিন্তু আমি চিন্তা করতে পারি নি কেন এটা কাজ করে নি ... আমি একটি বিদেশী ছিল µ: ডি
জনাব Xcoder

31 বাইট : ক্লাস তৈরি করুন ØṖḟØBṭØBUs26¤এবং তারপরে fএবং এর Çপরিবর্তে সদস্যতার পরীক্ষা করুন e¢$
লিন


5

আর , 193 186 179 158 বাইট

-7 বাইট NofP এবং তার পরামর্শের জন্য ধন্যবাদ cbind

-6 বাইট ব্যবহার করে outer, -1 বাইট [^a-zA-Z0-9]সাথে স্যুইচিং[[:punct:]]

-21 বাইটসকে অভিনেতাদের একটি তালিকা নির্দেশ করার জন্য মিকিটি ধন্যবাদ জানায়

function(S,B){y=outer(c("[a-z]","[A-Z]","\\d","[[:punct:]]"),S,Vectorize(grepl))
S[!colSums(y[(s=rowSums(y))=="if"(B,max,min)(s),,drop=F])]=" "
cat(S,sep='')}

সমস্ত পরীক্ষার কেস যাচাই করুন

লাগে 1/T(truthy যেমন max) এবং 0/Ffalsey হিসাবে ( min), এবং লাগে Sএকক অক্ষরের একটি তালিকা হিসাবে।

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

আমার আসল সংস্করণে (নোফপির পরামর্শ সহ) ম্যাট্রিক্স প্রতিটিটির জন্য yমূল্যায়ন grepl(regex, S)করে তৈরি করা হয়েছে regex, তারপরে ম্যাট্রিক্সের কলাম হিসাবে তাদের একত্রে সংযুক্ত করে। এর ফলে একাধিক কল আসবে grepl, তবে Sঠিক আছে ঠিক আছে, মনে হয়েছিল অন্য কিছু করা দরকার। যেমনটি আমি উল্লেখ করেছি:

সম্ভাব্য সংক্ষিপ্ত পন্থা আছে; mapply, উদাহরণ স্বরূপ:

y=mapply(grepl,c("[a-z]","[A-Z]","\\d","[^a-zA-Z0-9]"),list(S))

দুর্ভাগ্যক্রমে, এর 1-চরিত্রের উদাহরণটিতে ম্যাট্রিক্স হিসাবে এটি সরল করা হবে না "A"

আমি তার outerপরিবর্তে ব্যবহার করেছি mapply, যা সর্বদা একটি অ্যারের (এই ক্ষেত্রে একটি ম্যাট্রিক্স) ফেরত দেয় এবং বাধ্য হয়েছিল Vectorize grepl, যা সত্যই এর mapplyচারপাশে কেবল একটি মোড়ক।

আমি পূর্বনির্ধারিত অক্ষর গোষ্ঠীটিও আবিষ্কার করেছি [:punct:]যা বিরামচিহ্নগুলির সাথে মেলে (অ-স্থান, অ-অক্ষরীয়) অক্ষর।


1
আপনি যদি ম্যাট্রিক্সকে কোনও সিবাইন্ডের সাথে প্রতিস্থাপন করেন তবে আপনি 186 বাইট হ্রাস করতে পারবেন: y = cbind (g ("[অ্যাজে]]", এস), জি ("[এজেড]", এস), জি ("\\ ডি", এস), জি ("[^ a-zA-Z0-9]", এস))
NofP

ওহ, খুব সুন্দর এছাড়াও, আপনি এটি প্রদর্শন করতে ব্যাকটিক্স (`) সহ কোডটি ঘিরে ফেলতে পারেন like this। :)
জিউসেপ

বিধিগুলিতে বলা হয়েছে যে আপনি কোনও অক্ষরের অ্যারে বা ইনপুট হিসাবে তালিকাটি ব্যবহার করতে পারেন, তাই আপনি সম্ভবতS=el(strsplit(G,""))
মিক্যটি

@ মিকিটি আহ, আমি এটিকে উপেক্ষা করেছি, আপনাকে ধন্যবাদ
জিউসেপ

4

হুশ , 31 29 28 বাইট

SMS?' `ṁ§foSM≠?▲▼⁰M#Kë½D±o¬□

সর্বনিম্ন জন্য 0 এবং সর্বাধিক অক্ষর গণনার জন্য 1 ব্যবহার করে। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

ফাংশনগুলির তালিকা দুর্দান্ত।

SMS?' `ṁ§foSM≠?▲▼⁰M#Kë½D±o¬□  Inputs are bit B and string S.
                     ë        Make a list L of the four functions
                      ½       is-lowercase-letter,
                       D      is-uppercase-letter,
                        ±     is-digit, and
                         o¬□  not is-alphanumeric.
                  M#          For each of them, take number of matches in S,
              ?▲▼⁰            take maximum or minimum depending on B,
          oSM≠                and mark those entries that are not equal to it.
        §f          K         Remove from L the functions that correspond to marked entries, call the result L2.
                              These functions test whether a character should be replaced by a space.
SM                            Do this for each character C in S:
      `ṁ                      Apply each function in L2 to C and sum the results.
  S?'                         If the result is positive, return space, otherwise return C.

4

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

g=lambda x:x.isalnum()-~(x>'Z')*x.isalpha()
def f(s,m):k=map(g,s).count;print''.join([' ',c][k(g(c))==sorted(map(k,range(4)))[m]]for c in s)

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

জোনাথন ফ্রেচ একটি বাইট সংরক্ষণ করেছিলেন। ধন্যবাদ!

সর্বোচ্চ m=-1, সর্বনিম্ন হয় m=0


1
আমার মনে হয় আপনি প্রতিস্থাপন দ্বারা একটি বাইট সংরক্ষণ করতে পারবেন +x.isalpha()*-~(x>'Z')সঙ্গে -~(x>'Z')*x.isalpha()
জোনাথন ফ্রেচ


3

জাভা (ওপেনজেডিকে 8) , 448 439 432 362 361 354 352 348 343 320 বাইট

s->b->{int w[]=new int[4],m=0,n=-1>>>1,l;s.chars().forEach(c->{if(c>96&c<123)w[0]++;else if(c>64&c<91)w[1]++;else if(c>47&c<58)w[2]++;else++w[3];});for(int W:w){m=W>m?W:m;n=W<n?W:n;}l=m-n;m=b?m:n;return l<1?s:s.replaceAll("["+(w[0]!=m?"a-z":"")+(w[1]!=m?"A-Z":"")+(w[2]!=m?"\\d]":"]")+(w[3]!=m?"|[^a-zA-Z0-9]":"")," ");}

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



আপনি অপসারণ করতে পারেন +মধ্যে \\|+$একটি অতিরিক্ত -1 বাইট জন্য।
কেভিন ক্রুইজসেন

আপনি শেষ অংশটি পরিবর্তন করে আরও তিনটি বাইট সংরক্ষণ করতে পারেন String r=(w[0]!=m?"[a-z]|":"")+(w[1]!=m?"[A-Z]|":"")+(w[2]!=m?"[0-9]|":"")+(w[3]!=m?"[^a-zA-Z0-9]|":"");return r.isEmpty()?s:s.replaceAll(r.replaceAll(".$","")," ");}
কেভিন ক্রুইজসেন

ওহ, এবং অতিরিক্ত -4 জন্য n=s.length()হতে পারে n=-1>>>1
কেভিন ক্রুইজসেন

ওহ, গল্ফের আরও একটি ছোট জিনিস: [0-9]->\\d
কেভিন ক্রুইজসেন

3

রুবি , 118 116 বাইট

এটি দ্বিতীয় যুক্তির জন্য নেয় 0(সর্বনিম্ন) বা -1(সর্বোচ্চ)।

-২ বাইট লিনকে ধন্যবাদ।

->s,t{s.gsub(/./){|c|[/\d/,/[a-z]/,/[A-Z]/,/[^\da-z]/i].group_by{|x|s.scan(x).size}.sort[t][1].any?{|x|x=~c}?c:" "}}

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

Ungolfed

->s,t{
  s.gsub(/./) {|c|
    [ /\d/,
      /[a-z]/,
      /[A-Z]/,
      /[^\da-z]/i
    ]
    .group_by {|x| s.scan(x).size }
    .sort[t][1]
    .any? {|x| x =~ c } ? c : " "
  }
}

খুব শীতল উত্তর! আপনি -1"সর্বোচ্চ" মান হিসাবে ব্যবহার করতে পারেন এবং এটি minmax[t]দ্বারা প্রতিস্থাপন করতে পারেন sort[t]
লিন

3

পাইথন 2, 190 183 174 173 বাইট

এটি সংক্ষিপ্ত করার জন্য জোনাথন ফ্রেঞ্চকে ধন্যবাদ

from re import*
def f(i,c):
 q='[a-z]','[A-Z]','\d','[\W_]';l=[len(set(finditer(p,i)))for p in q]
 for j,k in enumerate(l):
	if k-eval(c):i=compile(q[j]).sub(' ',i)
 print i

এটি স্ট্রিং লাগে 'max(l)' এবং 'min(l)'সত্য এবং মিথ্যা হিসাবে । (আমি মনে করি না এটি নিয়মগুলি ভঙ্গ করে ...?) এটি অন্য দুটি অজগর উত্তরের চেয়ে দীর্ঘ তবে ভিন্ন তবে আমি ভেবেছিলাম এটি পোস্ট করব। আমি কোনও দুর্দান্ত গল্ফার নই তাই আমি অনুমান করছি এটি আরও উন্নত হতে পারে তবে আমি চেষ্টা করেছি এমন সমস্ত কিছুই কার্যকর হয়নি।

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


হ্যালো, এবং সাইটে আপনাকে স্বাগতম! আমি যখন এটি চালানোর চেষ্টা করি তখন আমি ত্রুটিগুলি পাই এবং কেন তা আমি পুরোপুরি নিশ্চিত নই। এর একটি কারন হতে পারে যে sum(1for m...হওয়া উচিত sum(1 for m..., কিন্তু আমার মনে হয় অন্য সমস্যা খুব আছে। আপনি কীভাবে এটিকে ডাকছেন তা প্রদর্শনের জন্য এবং এটি ত্রুটিযুক্ত নয় তা দেখাতে আপনি কোনও অনলাইন দোভাষী (যেমন টিও ) এর একটি লিঙ্ক সরবরাহ করতে পারেন?
জেমস

@ ডিজেএমসিএমহেম আমি কেবল একটি লিঙ্ক যুক্ত করেছি, লিঙ্কটি সরবরাহ করার জন্য ধন্যবাদ আমি কীভাবে এটি করব তা নিশ্চিত ছিল না। আমি যখন এটি চালাচ্ছি তখন ত্রুটি পাচ্ছি না।
ডাইলানান

আহ, আমি বলতে পারি না যে আপনি ইনপুট max(l)এবং min(l)স্ট্রিং হিসাবে ছিলেন , সে কারণেই আমি ত্রুটি পাচ্ছিলাম। যে পরিষ্কার করার জন্য ধন্যবাদ! যদিও এখন, এটি নিয়ম # 3 লঙ্ঘন করার প্রান্তে রয়েছে, `দ্রষ্টব্য যে এই স্বতন্ত্র মানগুলি বুলিয়ান হিসাবে ব্যবহার করা উচিত (কিছুটা) তবে এটি অবশ্যই ধূসর অঞ্চলের সামান্য বিট।
জেমস

বিটিডাব্লু, এখানে একটি টিআইও-প্রো-টিপ: আপনি যদি আপনার ফাংশন কলগুলি পাদলেখ ক্ষেত্রের মধ্যে রাখেন তবে সেগুলি আপনার বাইট গণনা অনুসারে গণনা করা হবে না, যাতে আপনি সহজেই দেখতে পারেন যে আপনার উত্তরটি কতক্ষণ: অনলাইনে চেষ্টা করে দেখুন!
জেমস

@ ডিজেএমসিমেহেম আহঃ ধন্যবাদ আমি একমত ধূসর অঞ্চল এটি সম্মত। আমি 'ম্যাক্স' এবং 'মিনিট' কে সত্য মিথ্যা হিসাবে গ্রহণ করতে পারতাম তবে ইওল (সি + '(এল)') করতে পারে যা By বাইট যুক্ত করে এবং আরও গ্রহণযোগ্য বলে মনে হয় তবে যতক্ষণ না ওপি আমার উত্তরটিকে অগ্রাহ্য করে না আমি অবধি এটি ধরে নিচ্ছি।
dylnan

2

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

g=
(s,f,a=[/\d/,/[A-Z]/,/[a-z]/,/[_\W]/],b=a.map(r=>s.split(r).length))=>s.replace(/./g,c=>b[a.findIndex(r=>r.test(c))]-Math[f?"max":"min"](...b)?' ':c)
<input id=s oninput=o.textContent=g(s.value,f.checked)><input id=f type=checkbox onclick=o.textContent=g(s.value,f.checked)><pre id=o>

দুঃখজনকভাবে নিয়মগুলি সম্ভবত আমাকে পতাকা হিসাবে Math.maxবা পাস হতে দেয় না Math.min। সম্পাদনা: @ জাস্টিনমারিনারে ধন্যবাদ 2 বাইট সংরক্ষণ করা হয়েছে


1

জেলি , 37 বাইট

ØWṖs26µẎØṖḟW⁸;
¢f@³L$ÐṂFe@Ѐ³¬¹⁴?a³o⁶

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

এরিকের পোস্ট থেকে -6 বাইট "ধার": ডি


স্পেসগুলি সংরক্ষণের জন্য LOL মূলত অর্ধেক প্রোগ্রাম: ডি
মিঃ এক্সকোডার

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

@ কেভিন ক্রুইজসেন প্রথমে গল্ফিং করুন: ডি
হাইপারনিউটারিনো

1

জাভা (ওপেনজেডিকে 8) , 307 + 34 306 + 27 295 বাইট

আমার "আকর্ষণীয়" চ্যালেঞ্জ গ্রহণ।

ধন্যবাদ কেভিন Cruijssen জন্য বাইট আমদানি কেটে আমদানি সম্পূর্ণরূপে মুছে ফেলার!

s->b->{String t=s.replaceAll("\\d","2").replaceAll("[a-z]","0").replaceAll("[A-Z]","1").replaceAll("\\D","3"),v="";int a[]={0,0,0,0},i=0,z=0,y=-1>>>1;t.chars().forEach(j->{a[j%4]++;});for(int x:a){z=x>z?x:z;y=x<y?x:y;}for(;i<s.length();i++)v+=a[t.charAt(i)%4]!=(b?z:y)?" ":s.charAt(i);return v;}

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

ব্যাখ্যা:

String t=s.replaceAll("\\d","2")
          .replaceAll("[a-z]","0")
          .replaceAll("[A-Z]","1")
          .replaceAll("\\D","3")

প্রথমে কয়েকটি গ্রুপকে কিছু সাধারণ রেইগেক্স ব্যবহার করে 0 এবং 3 এর মধ্যে পূর্ণসংখ্যার সাথে প্রতিটি গ্রুপকে প্রতিস্থাপন করে এবং এটি একটি নতুন স্ট্রিংয়ে সঞ্চয় করে।

int a[]={0,0,0,0},m,i=0,z=0,y=-1>>>1;

একটি পূর্ণসংখ্যার অ্যারের পাশাপাশি পরে আরও কয়েকটি পূর্ণসংখ্যার পূর্বে ব্যবহার করতে শুরু করে। yস্বাক্ষরযুক্ত ডান বিট শিফট ব্যবহার করে সর্বাধিক int আকারে ভেরিয়েবল সেট করে ।

t.chars().forEach(j->{a[j%4]++;});

পরিবর্তিত স্ট্রিংয়ের প্রতিটি চরিত্রের জন্য, পূর্বোক্ত অ্যারেটির ইনক্রিমেন্টের সূচক গণনা করতে এটির ASCII মান মডুলো 4 ব্যবহার করে।

for(int x:a){
    z=x>z?x:z;
    y=x<y?x:y;
}

এরপরে এটি অ্যারেতে থাকা প্রতিটি গ্রুপের গণনাগুলির মধ্য দিয়ে লুপ করে এবং সর্বনিম্ন ( y) এবং সর্বোচ্চ ( z) গণনা করে ।

for(;i<s.length();i++)
    v+=a[t.charAt(i)%4]!=(b?z:y)?" ":s.charAt(i);

স্ট্রিংয়ের প্রতিটি চরিত্রকে আবার লুপ করে checking অক্ষরের গোষ্ঠীর গ্রুপটি ন্যূনতম / সর্বোচ্চ (পূর্বে উল্লিখিত মডুলো ট্রিক ব্যবহার করে) এর সমান কিনা তা পরীক্ষা করে। যদি এটি সমান না হয়, তবে অক্ষরের জায়গায় নতুন স্ট্রিংয়ের সাথে একটি স্থান যুক্ত করা হবে, অন্যথায় আসল অক্ষরটি যুক্ত করা হবে।

return v;

শেষ পর্যন্ত নতুন স্ট্রিং ফিরিয়ে দিন!


1
ভাল উত্তর, আমার কাছ থেকে +1! গল্ফ দুটি ছোট জিনিস: import java.util.stream.IntStream;হতে পারে import java.util.stream.*;এবং ,iহতে পারে ,i=0পরে আপনি i=0লুপ থেকে অপসারণ করতে পারেন । ওহ, এবং (s,b)->হতে পারে s->b->
কেভিন ক্রুইজসেন

ধন্যবাদ কেভিন ক্রুজসেন! আমি বুঝতে পারি নি যে আপনি ল্যাম্বডাস চেইন করতে পারবেন
লুক স্টিভেনস

এটিকে কারিঙ বলা হয়। :) আপনি এটি এটি করতে পারেন java.util.function.Function<String, java.util.function.Function<Boolean, String>> g = s->b->{...};
কেভিন ক্রুইজসেন

1
ওহ, এবং গল্ফ করার জন্য অন্য জিনিস: IntStream z=IntStream.of(a);m=(b?z.max():z.min()).getAsInt();হতে পারে l=s.length(),x=0,y=lএবং for(int x:a){z=x>z?x:z;y=x<y?x:y;}এবং (b?z:y)তাই, আপনার আর আর আমদানির প্রয়োজন নেই। সব একসাথে রাখলে হয়ে যায়: s->b->{String t=s.replaceAll("\\d","2").replaceAll("[a-z]","0").replaceAll("[A-Z]","1").replaceAll("\\D","3"),v="";int a[]={0,0,0,0},i=0,l=s.length(),z=0,y=l;t.chars().forEach(j->{a[j%4]++;});for(int x:a){z=x>z?x:z;y=x<y?x:y;}for(;i<l;i++)v+=a[t.charAt(i)%4]!=(b?z:y)?" ":s.charAt(i);return v;}( 294 বাইট )
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন ওউওহ দুর্দান্ত চিন্তাভাবনা! আপনি অন্য কিছু নিয়ে আসার ক্ষেত্রে আমি এটি পরিবর্তন করার আগে কিছুটা অপেক্ষা করতে পারি;)
লুক স্টিভেন্স

1

বাশ, 229 227 212 বাইট

LANG=C;g="A-Z a-z 0-9 !A-Za-z0-9";declare -A H
f()(((i=$2?99:-1));r=$1;for h in $g;{ t=${r//[$h]};t=${#t};(($2?t<i:t>i))&&i=$t&&H=([$h]=1);((t-i))||H[$h]=1;};for h in $g;{((${H[$h]}))||r=${r//[$h]/ };};echo "$r")

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


আমি নিশ্চিত নই যে বাশে ব্র্যাকেট এবং স্কোয়ার-ব্লকের চারপাশের স্পেসগুলি কীভাবে কাজ করে তবে এটি এখনও স্পেস ছাড়াই কাজ করবে বলে মনে হয়f(){((
কেভিন ক্রুইজসেন

1
হ্যাঁ, স্থান ব্যতীত সাধারণত বাধ্যতামূলক (, এছাড়াও 2 বাইটের (পরিবর্তে {
ডিগ্রি

1

পিএইচপি, 161 158 বাইট

for([,$s,$z]=$argv;~$c=$s[$i++];)foreach([punct,upper,lower,digit]as$f)(ctype_.$f)($c)?$$i=$f:$g[$f]++;while(~$c=$s[$k++])echo$g[$$k]-($z?min:max)($g)?" ":$c;

এটি দিয়ে চালান -nrবা অনলাইনে চেষ্টা করুন

  • প্রথম লুপ: প্রতিটি পদের জন্য, চরিত্র গোষ্ঠীর মনে রাখবেন
    এবং দলের occurences গণনা বর্তমান চরিত্র না হবে।
    (যে অস্বীকৃতি 3 বাইট সংরক্ষিত হয়)
  • দ্বিতীয় প্যারামিটারের উপর নির্ভর করে সত্যের পক্ষে ন্যূনতম গণনা, মিথ্যা বলার জন্য সর্বোচ্চ অ-গণনা চয়ন করুন।
  • দ্বিতীয় লুপ: যদি (বর্তমান চরিত্রের দল) অ-গণনা
    ন্যূনতম / সর্বাধিক অ-গণনা থেকে আলাদা হয় তবে স্থান মুদ্রণ করুন, অন্যথায় মুদ্রণ অক্ষর।

1
@ কেভিন ক্রুজসেন আপনার সর্বশেষ পিএইচপি সংস্করণ (.1.১.০) নির্বাচিত হয়েছে তা নিশ্চিত করুন।
তিতাস

1

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

s=>b=>s.map(c=>++a[g(c)]&&c,a=[0,0,0,0],g=c=>c>-1?0:/[a-z]/i.test(c)?c<"a"?2:1:3).map(c=>a.map(v=>v-Math[b?"max":"min"](...a))[g(c)]?" ":c)

ইনপুট এবং আউটপুট একটি অক্ষরের অ্যারে। ইনপুট জন্য বাস্তব বুলিয়ান মান নেয়।

@ নীলের উত্তর থেকে আলাদা পদ্ধতির ; প্রায় নিয়মিত অভিব্যক্তি এড়ানো। পরিবর্তে, আমি প্রতিটি চরিত্রের বিভাগ নির্ধারণ করার জন্য কয়েকটি চেক ব্যবহার করেছি:

  • অঙ্কগুলি এর trueজন্য ফিরে আসে c>-1কারণ অ-অঙ্কগুলি গাণিতিক তুলনা ব্যর্থ করে
  • বড় হাতের অক্ষরগুলি রেজেক্সের সাথে মেলে /[a-z]/iএবং এর চেয়ে কোড কোড রয়েছে"a"
  • ছোট হাতের অক্ষরগুলির সাথে মিলে যায় সেই রেজেক্স তবে এর চেয়ে কম কোডপয়েন্ট রয়েছে "a"
  • প্রতীকগুলি এই পরীক্ষাগুলির মধ্যে কোনওটিই পাস করে না

পরীক্ষার কেস

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