পোকার কার্ডগুলির অর্ধেকগুলি চিহ্নিত করুন


20

একটি ক্যাসিনো নিম্নলিখিত কার্ডের ডেক ব্যবহার করে। ( *কার্ড স্যুট পরিহিত এক D, S, Cবা H।)

 _________    _________    _________    _________    _________
|         |  |         |  |         |  |         |  |         |
|         |  |         |  |    *    |  |  *   *  |  |  *   *  |
|         |  |    *    |  |         |  |         |  |         |
|    *    |  |         |  |    *    |  |         |  |    *    |
|         |  |    *    |  |         |  |         |  |         |
|         |  |         |  |    *    |  |  *   *  |  |  *   *  |
|_________|  |_________|  |_________|  |_________|  |_________|

 _________    _________    _________    _________    _________
|         |  |         |  |         |  |         |  |         |
|  *   *  |  |  *   *  |  |  *   *  |  |  *   *  |  |  *   *  |
|         |  |         |  |  *   *  |  |  *   *  |  |  *   *  |
|  *   *  |  |  * * *  |  |         |  |    *    |  |  *   *  |
|         |  |         |  |  *   *  |  |  *   *  |  |  *   *  |
|  *   *  |  |  *   *  |  |  *   *  |  |  *   *  |  |  *   *  |
|_________|  |_________|  |_________|  |_________|  |_________|

 _________    _________    _________
|         |  |         |  |         |
|  *   *  |  |  *   *  |  |  * * *  |
|  *   *  |  |  * * *  |  |  *   *  |
|  * * *  |  |  *   *  |  |  * * *  |
|  *   *  |  |  * * *  |  |  *   *  |
|  *   *  |  |  *   *  |  |  * * *  |
|_________|  |_________|  |_________|

প্রতিটি রাতের পরে, পুরাতন ডেকগুলি বাতিল করা হয় এবং পুনরায় ব্যবহার এড়াতে অর্ধেক কেটে দেওয়া হয়। ফলস্বরূপ, ক্যাসিনোতে কাট কার্ডের অর্ধেক পূর্ণ একটি বড় ঘর রয়েছে।

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

আপনি দলের অংশ, এবং আপনার কাজটি কার্ড সনাক্তকরণে সহায়তা করা।

একটি প্রোগ্রাম বা ফাংশন লিখুন যা কোনও স্ট্রিং আকারে কোনও কার্ডের একটি ASCII আর্ট চিত্র গ্রহণ করবে এবং এটি কী কার্ডের একটি স্ট্রিং ফিরিয়ে দেবে।

ইনপুট একটি 11x5 স্ট্রিং, প্লাস লাইন ব্রেক ব্রেক (সিআর, এলএফ বা সিআরএলএফ, আপনার কেবল একটি সমর্থন করা প্রয়োজন)। আপনি যদি প্রয়োজন হয় তবে প্রতিটি ইনপুট লাইনের শেষে শ্বেত স্পেস অনুমান করতে পারেন। ইনপুটটিতে কোনও অবৈধ অক্ষর ( _|-HSCDস্থান এবং লাইন বিরতি ব্যতীত অন্য কোনও ) থাকবে না।

একটি কার্ড অর্ধেকটি দেখতে পাবেন:

 _________
|         |
|  H   H  |
|  H H H  |
---H---H---

যা হৃদয়ের রানী হিসাবে চিহ্নিত করা উচিত:

H12

ক্যাসিনো সীমিত বাজেটে রয়েছে, সুতরাং এটি কোড গল্ফ: সংক্ষিপ্ততম প্রোগ্রামটি জয়ী।


@ অপ্টিমাইজার ওয়েল, আমরা সবাই জানি ক্যাসিনোগুলি সমাজের দরিদ্র আন্ডারডোগ্স :) আমি ইনপুট সম্পর্কে কিছু স্পষ্টতা যোগ করেছি।
ব্যবহারকারী 694733

ইনপুট কোন পদ্ধতি গ্রহণযোগ্য?
tfitzger

2
@tfitzger আপনি যে কোনও অবৈধ / অসম্ভব কার্ড উপেক্ষা করতে পারেন। আমরা ধরে নিই যে কেবলমাত্র বৈধ কার্ড রয়েছে। সুতরাং আপনাকে কেবল পূর্বে উল্লিখিত 13 লেআউটগুলি বিবেচনায় নিতে হবে।
ব্যবহারকারী 694733

2
আউটপুট কি দুজনের মধ্যে একটি জায়গা থাকতে পারে? পছন্দ H 12?
mbomb007

1
@ ডিএ আমরা উল্লেখ করতে ভুলে গেছি যে তারা ক্যাসিনো পরিচালকরা 1980 এর ব্যবসায়িক অনুশীলনে আটকে আছে।
কর্সিকা

উত্তর:


34

সিজেম, 16 15 13 12 বাইট

q2*A~<$e`3=(

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

মূল ধারণাটি হ'ল স্ট্রিংটি এমনভাবে পরিচালনা করা যাতে আমরা আমাদের জন্য সিজেমের অন্তর্নির্মিত রান-লেংথ এনকোডিংয়ের কাজটি করতে পারি।

আসুন একটি উদাহরণ (প্রশ্ন থেকে একটি) মাধ্যমে আসা যাক। ইনপুট স্ট্রিং হয়

 _________
|         |
|  H   H  |
|  H H H  |
---H---H---

আমরা যে দুবার পুনরাবৃত্তি:

 _________
|         |
|  H   H  |
|  H H H  |
---H---H---
 _________
|         |
|  H   H  |
|  H H H  |
---H---H---

এবং শেষ লাইনটি সরান:

 _________
|         |
|  H   H  |
|  H H H  |
---H---H---
 _________
|         |
|  H   H  |
|  H H H  |

তারপরে আমরা এই স্ট্রিংটি সাজান। এটিতে এখন শুরুতে একগুচ্ছ নিউলাইন থাকবে এবং তারপরে এটি (একটি অনুভূমিক স্ক্রোলবার এড়ানোর জন্য কয়েকটি স্পেস দ্বারা সংক্ষিপ্ত করে):

                                    ---------HHHHHHHHHHHH__________________||||||||||||

স্যুট চরিত্রটি পরিবর্তিত হওয়ার পরে এটি সর্বদা একটি বড় হাতের অক্ষর হবে, যা সাজানো স্ট্রিংয়ের চতুর্থ রানের (নতুন লাইনের জন্য অ্যাকাউন্টিং) পাওয়া যায়। যখন আমরা রান-লেংথ এনকোড করি এটি আমরা পাই

[8 '\n] [46 ' ] [9 '-] [12 'H] [18 '_] [12 '|]]

সুতরাং আমাদের যা করতে হবে তা হ'ল চতুর্থ উপাদানটি বেছে নেওয়া এবং এটির বিপরীত।

এখানে আসল কোডটির একটি বিচ্ছেদ রয়েছে:

q              e# Read the input.
 2*            e# Repeat twice.
   A~<         e# Remove the last 11 characters, i.e. the last line.
      $        e# Flatten into a single string and sort its characters.
       e`      e# Run-length encode: turns the sorted string into 5 pairs of numbers
               e# and characters.
         3=    e# Select the one corresponding to the suit.
           (   e# Pull off the number so that its printed after the suit.

7

পাইথ (সাম্প্রতিক সংস্করণ), 16 বাইট

p/KsP*2.zJ@S{K2J

এটি অনলাইনে চেষ্টা করুন: পাইথ সংকলক / নির্বাহক

ব্যাখ্যা:

       .z           read all lines from input
     *2             duplicate all lines
    P               remove the last line
   s                combine all lines to a big string
  K                 store in K

            {K      set(K), removes duplicate chars
           S        sort, this will result in the list [' ', '-', color, '_', '|']
          @   2     take the element at index 2
         J          and store it in J

p/K      J     J    print J + (count J in K)

পাইথ 4.0, 13 বাইট

jk@.rSsP*2.z2

পাইথের রান-লেংথ-এনকোডিং ছিল। তবে শুধুমাত্র স্বল্প সময়ের জন্য। যদি কেউ এটি চেষ্টা করতে চান: পাইথ রেপোটি ক্লোন করুন এবং প্রতিশ্রুতি 6a6dccd চেকআউট করুন।

এই প্রোগ্রামটি মার্টিনের সিজেএম সমাধানের মতো একইভাবে কাজ করে।

      sP*2.z        like in the 16 bytes solution
     S              sort
   .r               run-length-encoding
  @         2       element at index 2 
jk                  join by "" and print

6

সিজেম, 22 বাইট

qN/)'--\s"_| "-_]s)\,)

আরও গল্ফিং বিকল্প এখানে খুঁজছেন। এটা যেভাবে কাজ করে:

qN/                       e# Read the entire input from STDIN and split it on new lines
   )'--                   e# Take out the last line and remove - from it
       \                  e# Stack contains the half HSDC now. We swap this with rest of
                          e# the input
        s                 e# join the rest of the input array to a single string
         "_| "-           e# Remove anything other than HSCD
               _]s        e# Copy this and convert everything on stack into a single
                          e# string. Now we have the total HSCD in the complete card
                  )       e# Take out the last of HSCD. This serves as first character of
                          e# the output
                   \,)    e# Swap and take length of rest of the HSCD. Increment it by 1
                          e# as we removed 1 in the previous step.

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


3

পাইথন 2, 80 68 66 বাইট

এখানে চেষ্টা করুন

ইনপুটটি সদৃশ করুন, শেষ লাইনটি ছাড়াও সমস্ত অক্ষর সন্ধান করুন (শেষ লাইনে প্রথম দম্পতি অক্ষর অক্ষর হতে পারে না), তারপরে প্রথম অক্ষরটি প্রিন্ট করুন এবং কয়টি।

s=(input()*2)[:-9]
for c in"CDHS":
    if c in s:print c+`s.count(c)`

ইনপুট :' _________\n| |\n| H H |\n| H H H |\n---H---H---'

আউটপুট :H12

পূর্ববর্তী সংস্করণ যা রিজেক্স ব্যবহার করে (68):

import re
r=re.findall('[C-S]',(input()*2)[:-9])
print r[0]+`len(r)`

গল্ফ সাহায্যের জন্য Sp3000 ধন্যবাদ।


@ Sp3000 এটি যতটা সংক্ষেপে আমি সে পদ্ধতিটি ব্যবহার করে এটি পেতে পারি। এটি 15 দীর্ঘ। i=input()*2;s="CDSH";r=[i[:-9].count(x)for x in s];n=sum(r);print s[r.index(n)]+`n`
mbomb007

আহ, আমি কীভাবে স্যুটটি আরও ভাল করব তা বুঝতে পারি না।
mbomb007

3

এপিএল, 39 বাইট

আমি নিশ্চিত যে এটি আরও খাটো করা যেতে পারে তবে এটি একটি শুরু।

f←{X←(∊⍵[⍳46]⍵)∩'HDCS'⋄((⊃X),0⍕⍴X)~' '}

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

ব্যাখ্যা:

f ← {                         ⍝ Define the function f.
     X←                       ⍝ Assign X as
       (∊⍵[⍳46]⍵)             ⍝ the right input duplicated, no center line
                 ∩ 'HDCS'     ⍝ intersect 'HDCS'.
                              ⍝ X is now a vector like 'HHHHHH'.
     ((⊃X)                    ⍝ Return the first element of X
          ,                   ⍝ concatenated with
           0⍕⍴X)              ⍝ the length of X as a string
                ~' '          ⍝ without a space.
}

পরামর্শ সর্বদা হিসাবে স্বাগত!



ছোট, তবে আরও বাইটস:5⌷{⍺,≢⍵}⌸¯11↓,⍨⍞
অ্যাডাম

3

জে, 26 বাইট

(],[:":@(+/)]=[,_9}.[)4{~.

ব্যবহার:

   ((],[:":@(+/)]=[,_9}.[)4{~.) input
H12

বাম থেকে ডানে কোড পড়া:

  • আমরা ইনপুট থেকে স্যুটটি এটি 5 তম স্বতন্ত্র চরিত্র হিসাবে পাই (4{~. )।
  • শেষ (9) অক্ষর ব্যতীত +/ইনপুট ( [) এবং ইনপুট-এ মোট অক্ষরটি যে সংখ্যায় ঘটে তা গণনা করুন ( )_9}.[ ) )।
  • পরিশেষে আমরা ]ফলাফলের যোগফলের স্ট্রিং প্রতিনিধিত্ব ( ":) এর সাথে স্যুট ( ) সন্নিবেশ করি।

3

পার্ল, 75 বাইট

@r=();foreach ((<>)[2,2,3,3,4]){push@r,$1 while(/([CDSH])/g)}print $r[0].@r

উদার সংস্করণ

@r=(); # Collect matches in this array
foreach ((<>)               # Read stdin as a single array of lines
                            # Note that for a subroutine use @_ for (<>)
         [2,2,3,3,4]) {     # Look at the 3rd, 4th rows twice, 5th row once
    push @r, $1             # Collect individual character matches
        while (/([CDSH])/g) # As long as one of the suits matches
}
print $r[0]                 # Each element of array is matching letter
      .@r                   # Array reference in scalar context gives length

2

জুলিয়া, 58 বাইট

s->(m=matchall(r"[A-Z]",s*s[1:46]);join([m[1],length(m)]))

এটি একটি নামবিহীন ফাংশন তৈরি করে যা ইনপুট হিসাবে স্ট্রিং নেয় এবং কার্ডের স্যুট এবং মানটি দেয়। এটি কল করার জন্য, এটির একটি নাম দিনf=s->(...)

অবহেলিত + ব্যাখ্যা:

function f(s)
    # Find all alphabetic characters in the input joined with itself
    # excluding the second center line, which begins at the 47th
    # character

    m = matchall(r"[A-Z]", s * s[1:46])

    # Take the first match and the number of matches as an array,
    # collapse the array into a string, and return it

    join([m[1], length(m)])
end

পরামর্শ সর্বদা হিসাবে স্বাগত!


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