একক-উপযুক্ত মাহজংয়ের জন্য হাতের মানগুলি পরীক্ষা করুন


12

মাহজং একটি টাইল গেম যা এশিয়াতে প্রচুর জনপ্রিয়। এটি সাধারণত চারজন খেলোয়াড়ের সাথে খেলে যায় এবং গেমের লক্ষ্যটি হ'ল প্রথম ব্যক্তি যিনি টাইলস ব্যবহার করে বৈধ হাত শেষ করেন। মাহজংয়ে তিনটি টাইল স্যুট প্লাস সম্মানের টাইল রয়েছে - এই চ্যালেঞ্জের জন্য আমরা কেবলমাত্র একক মামলা থেকে টাইল ব্যবহার করে হাতগুলি বিবেচনা করব।

টাইলগুলি থেকে সংখ্যায়িত করা 1হয় 9এবং প্রতিটি টাইলের ঠিক চারটি অনুলিপি রয়েছে। একটি বৈধ হাত মোট চৌদ্দ টাইল জন্য তিন সেট এবং একটি জোড়া চার সেট থাকে।

তিনজনের একটি সেট হতে পারে:

  • একটি ট্রিপলেট, একই টাইলের তিনটি (যেমন 444), বা
  • একটানা তিনটি টাইলের ক্রম (যেমন 123বা 678না তবে 357)। সিকোয়েন্সগুলি মোড়ানো হয় না (তাই 912অবৈধ)।

একটি জুড়ি কেবল দুটি অভিন্ন টাইল (যেমন 55)।

চ্যালেঞ্জ

চৌদ্দ টাইলসের বৈধ হাত দেওয়া, নিম্নলিখিত মানদণ্ডের ভিত্তিতে এর স্কোর নির্ধারণ করুন:

Condition                Description                                 Point/s
-------------------------------------------------------------------------------
Straight                 Contains the sequences 123 456 789          1
Identical sequences      Contains two identical sequences            1
All simples              Only 2-8, no 1s or 9s                       1
All sequences            All sets of three are sequences             1
All triplets             All sets of three are triplets              2
Flush                    Single-suit hand (always applies)           5

(এখানে স্কোর করা জাপানিজ মাহজং বিধিগুলির ভিত্তিতে তৈরি, তবে অনুমানটিকে কম অগোছালো করার জন্য খুব সহজ করে দেওয়া হয়েছে))

একটি হাতের স্কোর হল শর্তগুলি সন্তুষ্ট করার জন্য পয়েন্টের যোগফল। যদি কোনও হাত একাধিক উপায়ে ক্ষয় করা যায় তবে সর্বোচ্চ স্কোরিং পচিয়ে নিন।

ইনপুট হাতটি বৈধ হওয়ার গ্যারান্টিযুক্ত, অর্থাত 1 থেকে 9 পর্যন্ত চৌদ্দ টাইল এবং প্রতিটি টাইল সর্বাধিক চার বার প্রদর্শিত হবে এবং এটি ইতিমধ্যে সাজানো হয়েছে বলে ধরে নেওয়া যেতে পারে। ইনপুটটি STDIN, ফাংশন আর্গুমেন্ট বা কমান্ড লাইনের মাধ্যমে সংখ্যার (স্ট্রিং বা পূর্ণ একক সমতলের তালিকা হিসাবে) একটি তালিকা। আউটপুট STDOUT বা ফেরতের মান হতে পারে।

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

22233355777888  ->  8  # 222 333 55 777 888, flush + all simp. + all trip.
11112345678999  ->  6  # 111 123 456 789 99, flush + straight
11123456788999  ->  5  # 111 234 567 88 999, flush only (no straight)
23344455566788  ->  7  # 234 345 456 567 88, flush + all simp. + all seq.
33334444555566  ->  8  # 33 345 345 456 456, flush + all simp. + all seq. + identical seq.
11122233377799  ->  7  # 111 222 333 777 99, flush + all trip. (no identical seq.)
12344556678889  ->  8  # 123 456 456 789 88, flush + all seq. + straight + identical seq.
11344556678999  ->  5  # 11 345 456 678 999, flush only (no identical seq.)
22233344455566  ->  8  # 222 333 444 555 66, flush + all simp. + all trip.
11112233344555  ->  5  # 111 123 234 345 55, flush only

পঞ্চম উদাহরণের জন্য, দুটি জোড়া অভিন্ন ক্রম থাকা সত্ত্বেও, পয়েন্টটি অর্জনের জন্য কেবল একজনকে উপস্থিত থাকা প্রয়োজন be পচন 345 345 345 345 66একই স্কোর হবে, এবং 333 345 444 555 66স্কোর খারাপ।

স্কোরিং

এটি , সুতরাং কয়েকটি বাইটে সমাধান জিততে পারে। স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।


সম্পর্কিত চ্যালেঞ্জ: আপনি কি জন্য অপেক্ষা করছেন? (একজন মাহজং সমাধানকারী)

উত্তর:


1

জে (241 বাই)

আপনার জে ইনস্টলের সর্বশেষতম সংস্করণ প্রয়োজন ।

i=:>:@i.9
q=:,/^:4>@:{(i.9);(i.;i.;i.;i.)16
s=:3 :'(>./((5+([:(*./)(3*i.3)&e.)+(-.@:(-:~.))+((*./)@:(6&>:))+2*((*./)@:(6&<)))"1(}."1(y(-:/:~"1)"1((([:{&(i,.i){.),[:,/[:{&(((>:@i.7)+"0 1(i.3)),|:3 9$i)}.)"1 q))#q)))+([:(*./)[:-.((1 9)&e.))y'

sপূর্ণসংখ্যার একটি তালিকা সহ ফাংশনটি কল করুন । উদাহরণস্বরূপ, নিম্নলিখিত উদাহরণ স্ক্রিপ্ট উপরের পরীক্ষার কেসগুলি যাচাই করে:

#!/usr/bin/jconsole
i=:>:@i.9
q=:,/^:4>@:{(i.9);(i.;i.;i.;i.)16
s=:3 :'(>./((5+([:(*./)(3*i.3)&e.)+(-.@:(-:~.))+((*./)@:(6&>:))+2*((*./)@:(6&<)))"1(}."1(y(-:/:~"1)"1((([:{&(i,.i){.),[:,/[:{&(((>:@i.7)+"0 1(i.3)),|:3 9$i)}.)"1 q))#q)))+([:(*./)[:-.((1 9)&e.))y'


echo (s 2 2 2 3 3 3 5 5 7 7 7 8 8 8)=8
echo (s 1 1 1 1 2 3 4 5 6 7 8 9 9 9)=6
echo (s 1 1 1 2 3 4 5 6 7 8 8 9 9 9)=5
echo (s 2 3 3 4 4 4 5 5 5 6 6 7 8 8)=7
echo (s 3 3 3 3 4 4 4 4 5 5 5 5 6 6)=8
echo (s 1 1 1 2 2 2 3 3 3 7 7 7 9 9)=7
echo (s 1 2 3 4 4 5 5 6 6 7 8 8 8 9)=8
echo (s 1 1 3 4 4 5 5 6 6 7 8 9 9 9)=5
echo (s 2 2 2 3 3 3 4 4 4 5 5 5 6 6)=8
echo (s 1 1 1 1 2 2 3 3 3 4 4 5 5 5)=5

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