ব্রিসকোলা স্কোরিং


11

ভূমিকা

ব্রিসকোলা ইতালির অন্যতম জনপ্রিয় কার্ড গেম। এটি ব্রিজের মতো একটি কৌশল-গ্রহণ কার্ড গেম। ব্রিসকোলা এটি উদ্ভট পয়েন্ট সিস্টেমের জন্য সুপরিচিত। এই চ্যালেঞ্জে, দুটি কার্ড দেওয়া, আপনি প্রথমটি আরও কম, কম, বা ব্রিসকোলার পয়েন্ট সিস্টেমে দ্বিতীয় হিসাবে একই সংখ্যার পয়েন্টের আউটপুট পাবেন।

চ্যালেঞ্জ

ব্রিসকোলা ইতালীয় বাজানো কার্ডগুলির একটি ডেকে নিয়ে খেলা হয়। একটি ডেকে চল্লিশটি কার্ড রয়েছে, চারটি স্যুটগুলির প্রত্যেকটিতে 1-10 রয়েছে: কাপ, তরোয়াল, ক্লাব এবং কয়েন। আমরা এই চ্যালেঞ্জের জন্য মামলাগুলি উপেক্ষা করব। কার্ড 2 - 7 হ'ল সংখ্যাসূচক কার্ড এবং 8, 9 এবং 10 টি কার্ড কার্ড। কার্ডের র‌্যাঙ্কিং, সর্বোচ্চ থেকে নীচে পর্যন্ত:

 +------------------------+-------------+
 |     Cards, by Rank     | Point Value |
 +------------------------+-------------+
 | Ace (1)                |     11      |
 | Three (3)              |     10      |
 | King (10)              |      4      |
 | Knight (9)             |      3      |
 | Jack (8)               |      2      |
 | Numeric Cards (2, 4-7) |      0      |
 +------------------------+-------------+

সুন্দর টেবিলের জন্য অরফেভসকে ধন্যবাদ! :)

আপনার কাজটি হ'ল একটি সম্পূর্ণ প্রোগ্রাম বা ফাংশন তৈরি করা যা কার্ডের র‌্যাঙ্ক উপস্থাপন করে দুটি সংখ্যা 1-10 গ্রহণ করে এবং প্রথম কার্ডের পয়েন্ট মানটি পয়েন্ট মানের চেয়ে বেশি, কম বা সমান কিনা তা আউটপুট (বা রিটার্ন) গ্রহণ করে দ্বিতীয় কার্ড অতিরিক্ত নোট:

  • আপনার প্রোগ্রামটি এর চেয়ে কম, বৃহত্তর এবং সমান নির্দেশ করতে যে কোনও তিনটি মান আউটপুট দিতে পারে, তবে প্রতিটি বারের জন্য প্রতিটি শর্তের জন্য এটি অবশ্যই একই মান আউটপুট করে।
  • আপনার প্রোগ্রামটি কোনও আইও ডিফল্ট ব্যবহার করতে পারে ।
  • স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়।
  • হয় একটি সম্পূর্ণ ফাংশন বা একটি প্রোগ্রাম অনুমোদিত।
  • এই প্রশ্নটি , তাই সর্বনিম্ন বাইট-কাউন্ট জেতা।

  • এখানে কিছু নমুনা ইনপুট এবং আউটপুট রয়েছে:

     1, 4 => এর চেয়ে বেশি (টেক্কা 11 স্কোর 11 পয়েন্ট, 4 স্কোর 0 পয়েন্ট, প্রথম দ্বিতীয় থেকে বেশি।
     8, 3 => এর চেয়ে কম (8 স্কোর 2, 3 স্কোর 10, প্রথম দ্বিতীয় থেকে কম)।
     5, 2 => সমান (5 এবং 2 উভয় স্কোর 0)

আপনার যদি কোনও প্রশ্ন থাকে তবে জিজ্ঞাসা করতে দ্বিধা করবেন না। শুভকামনা!


1
আমি সবসময় ভেবেছিলাম স্কোপা প্রিমিয়ারটি আরও উদ্ভট;)
ফ্রাইআম দ্য এজিগম্যান

@ ফ্রাইআমডিজম্যান আপনি ঠিক বলেছেন, আমি এটি পরিবর্তন করেছি changed এছাড়াও, আপনার প্রিমিয়ার সম্পর্কে একটি বক্তব্য থাকতে পারে…;)
উভচরবৃত্তীয়

আমরা কি ইনপুট হিসাবে দুটি মান সহ একটি অ্যারে নিতে পারি?
18:

1
@ ডিগেম সমস্ত নিশ্চিত জিনিস
উভচর

উদ্ভট নয়। পর্তুগিজ সুেকা এবং বিস্কা কার্ড গেমগুলিতে খুব অনুরূপ স্কোরিং বিদ্যমান!
সার্জিওল

উত্তর:


2

জেলি , 12 11 বাইট

“®µ½¤¢‘iⱮIṠ

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

  • লুই মেন্ডোর পদ্ধতি ব্যবহার করে -1 বাইট ।

0সমান জন্য আউটপুট , -1আরও বেশি এবং 1কম জন্য। কোড-পৃষ্ঠা সূচক ব্যবহার করে “®µ½¤¢‘যা মূল্যায়ন করে [8, 9, 10, 3, 1]

কার্ডের জোড়া হিসাবে ইনপুট নেয়। 1,2উদাহরণ হিসাবে ব্যবহার করুন ।

“®µ½¤¢‘iⱮIṠ
“®µ½¤¢‘       [8,9,10,3,1]
       i      index of 
        Ɱ     each element in the input -> 5,0
         I    Finds the forward difference: 0-5 = -5.
          Ṡ   Sign -> -1.
                When ranks are equal, Ṡ returns 0 and when the rank of the second
                card is higher, Ṡ returns 1.

1
বিরক্ত হননি, তবে যে কেউ ক্ষুন্ন হয়েছে কেন তা ব্যাখ্যা করতে পারে?
dylnan

যদি এটি দুর্ঘটনাজনিত ডাউনওয়েট ছিল - এবং ধরে নেওয়া যে এটি শেষ সম্পাদনার পরে ঘটেছে - আমি পোস্টটিতে একটি ডামি আপডেট করার পরামর্শ দিই যাতে / যদি ডাউনভোটার বুঝতে পারে যে কিছু ভুল হয়েছে।
আরনৌল্ড

5

এমএটিএল , 12 বাইট

[DEXIl]&mdZS

ইনপুট দুটি সংখ্যার একটি অ্যারে। আউটপুট হয় -1, 0এবং 1জন্য যথাক্রমে বেশি , সমান বা কম

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

ব্যাখ্যা

[1 4]উদাহরণ হিসাবে ইনপুট বিবেচনা করুন ।

[DEXIl]    % Push [8 9 10 3 1]
           % STACK: [8 9 10 3 1] 
&m         % Implicit input. Index (1-based) of membership, 0 if not member
           % STACK: [5 0]
d          % Consecutive difference
           % STACK: -5
ZS         % Sign. Implicit display
           % STACK: -1

5

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

বাক্য গঠন সিনট্যাক্সে দুই পদ নেয় (a)(b)। রিটার্নস 1 জন্য বেশি , -1 জন্য কম বা 0 জন্য সমান

a=>b=>Math.sign((s="05040000123")[a]-s[b])

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


একটি সূত্র ব্যবহার করে, 48 বাইট

এটি অবশ্যই দেখার টেবিল ব্যবহারের চেয়ে দীর্ঘতর তবে কিছুটা আকর্ষণীয়ও।

একই আই / ও ফর্ম্যাট।

a=>b=>Math.sign((g=n=>(1<<n&1802)*6%13)(a)-g(b))

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

কিভাবে?

0এন

পি=2এন এবং (21+ +23+ +28+ +29+ +210)
পি=2এন এবং 1802
  n (card)   | 2**n | AND 1802
-------------+------+----------
  1 (Ace)    |    2 |      2
  2          |    4 |      0
  3 (Three)  |    8 |      8
  4          |   16 |      0
  5          |   32 |      0
  6          |   64 |      0
  7          |  128 |      0
  8 (Jack)   |  256 |    256
  9 (Knight) |  512 |    512
 10 (King)   | 1024 |   1024

আমরা এখন বাকী অ-শূন্য মানগুলি এমনভাবে রূপান্তর করতে চাই যাতে সেগুলি সঠিক ক্রমে সাজানো যায়। আমরা ব্যাবহার করি:

কুই=6পিগেলিক ভাষার13
    p (card)   |   6p | MOD 13
---------------+------+--------
    2 (Ace)    |   12 |   12
    8 (Three)  |   48 |    9
  256 (Jack)   | 1536 |    2     --> Ace > Three > King > Knight > Jack
  512 (Knight) | 3072 |    4
 1024 (King)   | 6144 |    8

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


3

জাপট , 25 21 16 বাইট

  • 1 => এর চেয়ে বেশি
  • -1 => এর চেয়ে কম
  • 0 => সমান

£"78920"bXÉÃr- g

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


আপনি -g2 বাইট সংরক্ষণ করতে পতাকা ব্যবহার করতে পারেন ।
শেগি

আমার কাছে একটি 13 বাইট সমাধান ( -gআপনি যদি এটির জন্য চেষ্টা করতে চান তবে পতাকাও ব্যবহার করে) have
শেগি

@ শেগি আমি এটি বলব না যে এটি দুটি বাইট সংরক্ষণ করছে, পতাকাযুক্ত জমাগুলি কেবল পৃথক ভাষার সমাধান এবং খাঁটি জাপট সমাধান হিসাবে গণ্য হয় না।
নিট

আপনি যদি কোনও পতাকা ব্যবহার করতে না চান তবে আমি উপরে উল্লিখিত সমাধানটি 15 বাইট হয়ে যায়। (ইঙ্গিত: এটি [8,9,10,3,1]অ্যারে এবং বেস রূপান্তর ব্যবহার করে )
শেগি

3

জাপট -g , 13 বাইট

আউটপুট -1জন্য >, 1জন্য <এবং 0জন্য ===

m!b#ù991ìD)rn

এটি ব্যবহার করে দেখুন বা একাধিক পরীক্ষা চালান (দ্বিতীয় লাইন -gপতাকাগুলি একাধিক ইনপুট প্রক্রিয়াতে ব্যবহার করার অনুমতি দেওয়ার জন্য পতাকাটির কার্যকারিতাটির প্রতিলিপি দেয়)


ব্যাখ্যা

                   :Implicit input of 2 integer array
m                  :Map
   #ù991           :  249991
        ìD         :  Convert to array of base-13 digits = [8,9,10,3,1]
 !b                :  Get the index of the current element in that
          )        :End map
           rn      :Reduce by subtraction
                   :Implicitly output the sign of the result

2

আর , 35 বাইট

rank(c(6,0,5,1:4*0,1:3)[scan()])[1]

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

  • -6 বাইটস ফাংশনের পরিবর্তে সম্পূর্ণ প্রোগ্রামে স্যুইচ করার জন্য জায়েসি পরামর্শকে ধন্যবাদ জানায়

প্রোগ্রাম ফেরৎ 2জন্য 'greater than', 1জন্য 'less than', 1.5জন্য'equal'

ব্যাখ্যা:

      c(6,0,5,1:4*0,1:3)[v]          # extract the score of each card in v (got from scan());
                                     # cards in v are used as indexes in the cards rank 
                                     # vector, which is based on briscola scores vector 
                                     # c(11,0,10,0,0,0,0,2,3,4) but divided by 2 and rounded 
                                     # to integer preserving the original order

rank(                      )[1]      # rank returns : c(1,  2)   if v[1] < v[2]
                                     #                c(2,  1)   if v[1] > v[2]
                                     #                c(1.5,1.5) if v[1] == v[2]
                                     # and we select the first value

1
rank(c(6,0,5,1:4*0,1:3)[scan()])[1](সম্পূর্ণ প্রোগ্রাম) আপনাকে 6 বাইট সংরক্ষণ করবে
জেসি

@ জায়েসি: হ্যাঁ আমি এটি লক্ষ্য করেছি, তবে এখনও বিড়াল যুক্ত করার প্রয়োজনীয়তা সম্পর্কে আমি বিভ্রান্ত হয়েছি () এটি যখন একটি সম্পূর্ণ প্রোগ্রাম ... যাইহোক, আমার কোড আপডেট করেছে;)
ডিগএমএল

2

জাভা 8, 69 66 বাইট

a->b->Math.signum("05040000123".charAt(a)-"05040000123".charAt(b))

লাম্বদা আরনাউল্ডের জাভাস্ক্রিপ্ট উত্তরের বন্দরের বাক্য গঠন সিনট্যাক্সে পরামিতি গ্রহণ করছে ।

রিটার্নস 0.0 সমান , 1.0জন্য বেশি , এবং -1.0জন্য কম । এটি এখানে অনলাইনে চেষ্টা করুন

3 বাইট গল্ফ করার জন্য কেভিন ক্রুইজসেনকে ধন্যবাদ ।


1
"05040000123".charAt(...)পূর্ণসংখ্যা-অ্যারের পরিবর্তে দুটি বারের সাথে সরাসরি রিটার্ন করে আপনি 3 বাইট সংরক্ষণ করতে পারেন :a->b->Math.signum("05040000123".charAt(a)-"05040000123".charAt(b))
কেভিন ক্রুইজসেন

2

মারিওল্যাং , 578 548 530 বাইট

 )                    <
 ====================="
                   >-[!)
                   "==#)
                >-[!)) )
                "==#=) +
         >-----[!))) + +
         "======#==  + +
     >--[!)))   ++++              -(- <
     "===#===================    ====="
  >-[!)))+++++                    >) [!)+:
; "==#=======================     "===#===
>[!                      )))[!((>[!)[!):
"=#==========================#====#==#===
!;((                         <       >)-:
#============================"       "===

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

ব্যাখ্যা:

  • প্রথম, বড় দুর্গ ইনপুট হিসাবে একটি কার্ড নম্বর পড়ে এবং এটি কোনও 0(কোনও ইনপুট) না পড়া পর্যন্ত তার সমতুল্য বিন্দু মান গণনা করে । এটি অনুমান করে যে ইনপুট হিসাবে কেবলমাত্র দুটি কঠোর ইতিবাচক মান থাকবে।
  • মনে রাখবেন যে আমি যথাযথ পয়েন্টের মানগুলি সেগুলির প্রয়োজন মতো না করে সেট করি না, [1-5]কোন কার্ডের সর্বাধিক পয়েন্ট মান রয়েছে তা গণনা করতে সহায়তা করার জন্য আমি কেবলমাত্র পয়েন্ট মান হিসাবে সেট করেছিলাম ।
  • দ্বিতীয়, ছোট দুর্গ মাত্র দুটি গণনা করা পয়েন্টের মানগুলির সাথে তুলনা করে।
  • এটা তোলে ফেরৎ 1যদি প্রথম বিন্দু মান, দ্বিতীয় চেয়ে বেশী -1যদি দ্বিতীয় বিন্দু মান প্রথম এক তার চেয়ে অনেক বেশী, এবং 0যদি পয়েন্ট মান একই।


1

সি (জিসিসি) , 57 বাইট

যথাক্রমে <, = এবং> এর জন্য স্বাভাবিক [-1..1] প্রদান করে।

char*s="-FAEAAAABCD";f(a,b){a=s[a];b=s[b];b=(a>b)-(a<b);}

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


এর *s=L"...পরিবর্তে char*s="...এবং a=(s[a]>s[b])-(s[a]<s[b])পরিবর্তে পরামর্শ দিনa=s[a];b=s[b];b=(a>b)-(a<b)
সিলিংক্যাট

1

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

ε78920S>sk}`.S

ফিরে আসে 1, -1বা 0আরও বেশি কিছু জন্য; চেয়ে কম; বা যথাক্রমে সমান।

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

ব্যাখ্যা:

ε              # Loop over the input-array
 78920S>       #  Convert 78920 to a list of digits, and increase each by 1,
               #  resulting in [8,9,10,3,1]
        sk     #  Index this list with the input-number (-1 if not found)
               #   i.e. [1,4] → [4,-1]
          }    # Stop the loop
`              # Put all items of the now mapped list separated onto the stack
 .S            # Take the signum (1 if a>b; -1 if a<b; 0 if a==b)
               #  i.e. 4 and -1 → 1

1

পিএইচপি , 51 45 বাইট

<?=($m=_5040000123)[$argv[1]]<=>$m[$argv[2]];

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

এটি চালানোর জন্য:

php -n <filename> <card1> <card2>

উদাহরণ:

php -n briscola_score.php 3 1

দ্রষ্টব্য: এই কোডটি পিএইচপি 7 এর স্পেসশিপ অপারেটর ব্যবহার করে । সুতরাং এটি 7 এর আগে কোনও পিএইচপি সংস্করণে কাজ করবে না।


আউটপুট:

  • 1 = এর চেয়ে বেশি ( card1 > card2)
  • 0 = সমান ( card1 == card2)
  • -1 = এর চেয়ে কম ( card1 < card2)

কিভাবে?

অন্যান্য অনেক উত্তরে ব্যবহৃত পন্থা হিসাবে একই, তবে পিএইচপি তে। কার্ডগুলির জন্য একটি মানচিত্র তৈরি করে এবং এটি থেকে কার্ডের মানগুলির তুলনা করে। মানচিত্রে মানটির অবস্থান কার্ড নম্বর হিসাবে একই।


0

জাভাস্ক্রিপ্ট ES2016 +, 73 টি অক্ষর

সংক্ষিপ্ততম নয়, তবে আমি গণিত এবং ওভারফ্লো কারণে আকর্ষণীয় আশা করি :)

(x,y)=>Math.sign((x&8?x:(16-(x**40|0)%7)^16)-(y&8?y:(16-(y**40|0)%7)^16))

দুর্ভাগ্যক্রমে cha৪ টি চর সহ অন্যান্য সংস্করণ:

(x,y)=>eval('(x>y)-(x<y)'.replace(/\w/g,'($&&8?$&:(16-($&**40|0)%7)^16)'))

পরীক্ষা

চলার আগে ব্রাউজার কনসোলটি খুলুন

f=(x,y)=>Math.sign((x&8?x:(16-(x**40|0)%7)^16)-(y&8?y:(16-(y**40|0)%7)^16))
console.table(Array(11).fill().map((x,i)=>Array(11).fill().map((x,j)=>f(i,j))))

স্ক্রিনশট

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