এটি ক্যাপ লক দিন


29

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

বিবরণ

আপনার সমাধানের জন্য ইনপুট এবং আউটপুট উভয়ই স্ট্রিংগুলিতে কেবল মুদ্রণযোগ্য ASCII অক্ষর ধারণ করে।

ইনপুট স্ট্রিংয়ে শূন্য বা আরও ক্যাপস লক রান থাকবে । একটি ক্যাপ চালানো লক (বা সংক্ষেপে CLR) নিম্নলিখিত হিসাবে সংজ্ঞায়িত করা হয়:

  • সিএলআর অবশ্যই কোনও শব্দের প্রথম অক্ষর ব্যতীত কোনও ছোট হাতের অক্ষর ( a-z) থাকতে হবে না ।

    • এই চ্যালেঞ্জের উদ্দেশ্যে একটি শব্দ হ'ল ফাঁকা স্থানের ক্রম। সুতরাং, PPCG, correcthorsebatterystaple, এবং jkl#@_>00()@#__f-023\f[সব বলে মনে করা হয় শব্দ গুলি।
  • সিএলআরতে কমপক্ষে একটি স্থানও থাকতে হবে; সুতরাং, এটি অবশ্যই কমপক্ষে দুটি শব্দের হতে হবে ।

  • সিএলআর এর প্রতিটি শব্দের মধ্যে কমপক্ষে দুটি বর্ণ ( A-Za-z) থাকতে হবে ।

    • দ্রষ্টব্য যে এটি সিএলআর অন্তর্ভুক্ত নাও হতে পারে এমন কোনও আশেপাশের অক্ষর ছাড়াই নিজের দ্বারা নেওয়া সিএলআরকে বোঝায়। উদাহরণস্বরূপ, হয় না একটি CLR কারণ স্ট্রিং নিজে হয়েছে শব্দ কম দুটি বর্ণের সঙ্গে গুলি।foO BarO B

সিএলআরগুলি "লোভের সাথে" পার্স করা উচিত - এটি আপনার সর্বদা দীর্ঘতম সিএলআর খুঁজে পাওয়া উচিত।

একবার আপনি ইনপুট স্ট্রিংয়ে সমস্ত সিএলআর সনাক্ত করে ফেললে, সিএলআর এর ভিতরে থাকা সমস্ত বর্ণের কেসটি অদলবদল করুন এবং ফলস্বরূপ স্ট্রিং আউটপুট করুন।

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

প্রথম লাইনটি ইনপুট, এবং দ্বিতীয়টি আউটপুট। ইনপুটটির বোল্ডেড অংশগুলি এমন সাবস্ট্রিং যা সিএলআর বিবেচিত হয়।

CAPS LOCK IS THE BEST!
caps lock is the best!
I really LOVE pROGRAMMING pUZZLES AND cOde Golf!
I really love Programming Puzzles and Code Golf!
This is a challenge on PPCG. This is a test CASE. TEST
This is a challenge on PPCG. This is a test case. test
LorEM iPSUM DOLoR sIT amet, conSECTETur ADIPISciNG eLIT. MAECENAS iD orci
Lorem Ipsum doloR sIT amet, conSECTETur ADIPIScing Elit. maecenas Id orci
;'>}{/[]'"A*(389971(*(#$&B#@*(% c'>#{@D#$! :,>/;[e.[{$893F
;'>}{/[]'"a*(389971(*(#$&b#@*(% C'>#{@d#$! :,>/;[e.[{$893F
iT'S cAPS lOCK DAY!!! cELebraTE THis WONDERFUL key
It's Caps Lock day!!! Celebrate this WONDERFUL key
aBcDE fGHIj KLmNO pQrST (uVwXY) ZZ___Zz__Z
aBcde Fghij KLmno PqrST (uVwxy) zz___zz__Z
#aA# aA
#aA# aA

বিধি

  • আপনি ধরে নিতে পারেন ইনপুটটিতে কখনও একনাগাড়ে দুটি বা ততোধিক স্পেস থাকবে না এবং এতে কখনও কোনও নেতৃস্থানীয় বা পিছনের স্থান থাকবে না।

  • যদি আপনার পুরো কোডটি সিএলআর হয় তবে 20% বোনাস (আপনার কোডের দৈর্ঘ্য .8 দিয়ে গুণ করুন)। ;) (বেশিরভাগই কেবল মজাদার জন্য, যেহেতু বিজয়ী জমা দেওয়ার ক্ষেত্রে এই বোনাস থাকবে না)

  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


16
দয়া করে চিৎকার থামিয়ে দিন।
TheDoctor

4
এছাড়াও, পরীক্ষার কেস # 3 এর জন্য, মূলধনযুক্ত পিপিসিও কি খুব কম হবে না? ( PPCG. Tএকটি স্থান রয়েছে)
21


2
@ ডেনিস আমি পড়েছিলাম যে মর্টির কণ্ঠে (রিক এবং মর্টির কাছ থেকে), খ / সি তিনি "রিক" এর সাথে কথা বলছেন।
mbomb007

1
"আপনার কোডের সিএলআর হওয়ার জন্য বোনাস পয়েন্টগুলি" আমাকে ললকোডে এটি করতে চাইছে ...
বিড়াল

উত্তর:


4

CJam, 100 86 83 81 বাইট

Ml{_,),{1$<_S/(4$!>\1f>s+_eu=*S%_{'[,_el^:Af&s,2<},!*1>},_{W=/(AA26m>er}{;(}?\s}h

ব্যবহার করে দেখুন এই বেহালার CJam অনুবাদক অথবা একবার এ সব পরীক্ষার বিষয় যাচাই

অ্যালগরিদম

  1. দীর্ঘতম সম্ভব সিএলআর সনাক্ত করুন যা প্রথম অক্ষর দিয়ে শুরু হয়।

  2. যদি এটি বিদ্যমান থাকে তবে এর কেসটি অদলবদল করুন, এটি মুদ্রণ করুন এবং স্ট্রিংয়ের শুরু থেকে এটি সরিয়ে ফেলুন।

    অন্যথায়, স্ট্রিংয়ের শুরু থেকে একটি একক অক্ষর সরিয়ে ফেলুন, এবং এটিকে মোছা না করে মুদ্রণ করুন।

  3. যদি আরও অক্ষর অবশিষ্ট থাকে, তবে পদক্ষেপ 1 এ ফিরে যান।

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

Ml         e# Push an empty string and a line from STDIN.
{          e# Do:
  _,       e#   Copy the string on the stack and compute its length (L).
  ),       e#   Push [0 ... L].
  {        e#   Filter; for each integer I in that array:
    1$<    e#     Copy the string and keep its first I characters.
    _S/    e#     Push a copy and split at spaces.
    (      e#     Shift out the first word.
    4$!    e#     Push the logical NOT of the fifth topmost item of the stack.
           e#     This pushes 1 for the empty string on the bottom, and 0
           e#     for non-empty strings and printable characters.
    >      e#     Remove that many characters from the beginning of the first word.
           e#     This will remove the first character iff the string on the
           e#     stack is the entire input. This is to account for the fact that
           e#     the first word is not preceded by a space.
    \1f>   e#     Remove the first character of all remaining words.
    s+     e#     Concatenate all of them.
    _eu=   e#     Convert a copy to uppercase and check for equality.
    *      e#     Repeat the I characters 1 or 0 times.
    S%_    e#     Split at runs of spaces, and push a copy.
    {      e#     Filter; for each non-empty word:
      '[,  e#       Push the string of all ASCII characters up to 'Z'.
      _el  e#       Push a copy and convert to lowercase.
      ^    e#       Perform symmetric difference, pushing all letters (both cases).
      :A   e#       Store the result in A.
      f&s  e#       Intersect A with each character of the word. Cast to string.
      s    e#       This removes all non-letters from the word.
      ,2<  e#       Count the letters, and compare the result to 2.
    },     e#     If there are less than 2 letters, keep the word.
    !      e#     Push the logical NOT of the result.
           e#     This pushes 1 iff all words contain enough letters.
    *      e#     Repeat the array of words that many times.
    1>     e#     Remove the first word.
  },       e#   Keep I if there are still words left.
  _{       e#   If at least one I was kept:
    W=     e#     Select the last (highest) one.
    /      e#     Split the string on the stack into chunks of that length.
    (      e#     Shift out the first chunk.
    AA26m> e#     Push "A...Za...z" and "a...zA...Z".
    er     e#     Perform transliteration to swap cases.
  }{       e#   Else:
    ;      e#     Discard the filtered array.
    (      e#     Shift out the first character of the string on the stack.
  }?       e#
  \s       e#   Swap the shifted out chunk/character with the rest of the string.
}h         e# If the remainder of the string is non-empty, repeat.

5
এটি কীভাবে কাজ করে: পিয়ানোতে 20 ই # নোট খেলে।
kirbyfan64sos

আমি আরও কয়েকটি বিশদ যুক্ত করেছি। : পি
ডেনিস

2

পার্ল, 96 82 80 বাইট

-pe'$y=qr/[^a-z ]{2,}|\b\S[^a-z ]+/;s#$y( $y)+#join$,,map{uc eq$_?lc:uc}$&=~/./g#eg'

সমস্ত পরীক্ষা পাস। থেকে STDINপ্রিন্ট করে ইনপুট ধরে নেয় STDOUT

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

  • মিলে যায় এমন একটি রেইগেক্স ( $y) সেটআপ করুন

    • কমপক্ষে দুটি অ-লোয়ারকেস, নন-হোয়াইটস্পেস অক্ষর OR
    • একটি শব্দের সীমানা, তার পরে একটি শ্বেতস্থান অক্ষর, তারপরে এক বা একাধিক অ-লোয়ারকেস, নন-হোয়াইটস্পেস অক্ষর
  • ক্ষেত্র-বিভাজিত স্ট্রিংগুলির একাধিক উদাহরণের সাথে মেলে যা কেসটি উল্টো করতে $yব্যবহার s///করে

আমি নিশ্চিত যে উন্নতির জন্য জায়গা আছে। পুরো join-map-splitচুক্তি থেকে মুক্তি পাওয়ার কোনও উপায় থাকলে এখনও বোনাসের জন্য যোগ্যতা অর্জনের সুযোগ থাকতে পারে :)


1
a-zপরিবর্তে ব্যবহার করে আপনি কয়েকটি বাইট সংরক্ষণ করতে পারেন [:lower:]। এছাড়াও, -peসাধারণত 1 বাইট হিসাবে গণনা করা হয়, এবং একক উদ্ধৃতি শূন্য বাইট হিসাবে গণ্য হয়।
ডেনিস

@ ডেনিস: পরামর্শের জন্য ধন্যবাদ! এটা আমার কোড কিছুটা প্রক্রিয়া সহজ করার অনুমতি - এক-liners, পার্ল সম্পর্কে আপনার নির্দেশিকা অনুযায়ী 81 নিচে
যায়েদ

এই উত্তরটি অবৈধ, যেহেতু এটি শেষ পরীক্ষার কেসটি পাস করে না (সম্প্রতি ডেনিসের সৌজন্যে যোগ হয়েছে)।
ডুরকনব

2

জাভাস্ক্রিপ্ট, 193

decapslock =

a=>a.replace(/(^[a-z][^a-z ]+|[^a-z ]{2,})( [a-z][^a-z ]+| [^a-z ]{2,})+/g,b=>b.split` `.some(f=>f.split(/[a-z]/i).length<3)?b:b.split``.map(e=>e==(E=e.toUpperCase())?e.toLowerCase():E).join``)
<!-- Snippet UI -->
<input placeholder='sAMPLE tEXT' oninput="document.getElementsByTagName('p')[0].innerText=decapslock(this.value)" />
<p></p>

ব্যাখ্যা:

a=>a.replace(/* giant regex */,
  b=>
    b.split` `.some(
      f=>
        f.split(/[a-z]/i).length < 3   // check for 2+ letters
    )
      ? b                              // .some() immediately returns true if it's invalid
      : b.split``.map(                 // otherwise it's valid, so flip case
          e=>
            e == (E = e.toUpperCase()) // is it uppercase?
              ? e.toLowerCase()        // change it to LC
              : E                      // change it to UC, which was already done for
                                       // the case check
            ).join``
        )
(
^[a-z][^a-z ]+ // check for a CLR starting at the beginning with LC
|
[^a-z ]{2,}    // check for a CLR that begins in the middle of a word or starts at the
               // beginning with UC
               // in both cases, 2+ letters are required
)
(
 [a-z][^a-z ]+ // check for the next word of the CLR, starting with LC
|
 [^a-z ]{2,}   // check for the next word of the CLR, starting with UC
)+             // check for 1 or more next words

এই উত্তরটি অবৈধ, যেহেতু এটি শেষ পরীক্ষার কেসটি পাস করে না (সম্প্রতি ডেনিসের সৌজন্যে যোগ হয়েছে)।
ডুরকনব

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