একটি ম্যাজিক কার্ড কৌশল দেখতে চান?


16

ছোটবেলায় আমি প্রথম যে ম্যাজিক কার্ড ট্রিকটি শিখেছিলাম তা হ'ল:

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

এই কৌশলটি প্রকৃতপক্ষে প্রকৃতপক্ষে সামান্য কিছুটা অভাব-আলোকসজ্জা, তবে এটি একটি ভাল চ্যালেঞ্জ তৈরি করে। একটি প্রোগ্রাম লিখুন, যখন কোনও ইনপুট দেওয়া হয় না, এলোমেলোভাবে বেছে নেওয়া কার্ডগুলির মধ্যে একটির সাথে এলোমেলোভাবে শ্যাফলেড কার্ড ডেকে আউটপুট দেয়, বিপরীত। যাইহোক, যখন ইনপুটটি একটি কার্ডের বিপরীতে কার্ডগুলির ডেক হয় তখন আপনাকে অবশ্যই বিপরীত কার্ডটি আউটপুট করতে হবে (সঠিক ক্রমে)।


কার্ডের ডেক

কার্ডগুলির একটি ডেকে এটি সংজ্ঞায়িত করা হয়:

[2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS,
 2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD,
 2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH,
 2C,3C,4C,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC]

একটি কার্ড এটির সংখ্যা হিসাবে সংজ্ঞায়িত করা হয়, তারপরে তার মামলাটির প্রথম অক্ষর। কোনও কার্ডের বিপরীতটি হুবহু বিপরীত, তার মামলাটির প্রথম অক্ষর এবং তার পরে একটি সংখ্যা।

অঙ্কিত কার্ড

উদাহরণস্বরূপ, আমরা যে কার্ডটি এলোমেলোভাবে বিপরীত করার জন্য বেছে নিয়েছি তা হ'ল 4 of Clubs (4C), আমরা শেষ করে ফেলব ( এলোমেলোভাবে না করে)

[2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS,
 2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD,
 2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH,
 2C,3C,C4,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC]

দোলাচল

তারপরে, বদলে যাওয়ার পরে:

[2H,2C,6S,4D,QH,6C,TD,8C,7H,5H,C4,3D,7S,7C,KC,QD,QC,JS,7D,6D,2S,5C,KD,3C,3S,2D,8H,KH,6H,AH,8S,JH,TS,AD,5D,9H,4H,JD,QS,4S,JC,3H,8D,TC,AS,TH,KS,AC,9C,9S,5S,9D]

এটি খালি ইনপুট প্রদত্ত একটি বৈধ আউটপুট।

ডেক ইনপুট

তবে, বিপরীতে, যখন আমাদের প্রোগ্রামটি উপরের আউটপুটটিকে ইনপুট হিসাবে গ্রহণ করে, তখন এটি আউটপুট করা উচিত 4C। এর অর্থ একটি ইনপুট:

[2H,2C,6S,4D,QH,6C,TD,8C,7H,5H,C4,3D,7S,7C,KC,QD,QC,JS,7D,6D,2S,5C,KD,3C,3S,2D,8H,KH,6H,AH,8S,JH,TS,AD,5D,9H,4H,JD,QS,4S,JC,3H,8D,TC,AS,TH,KS,AC,9C,9S,5S,9D]

বিপরীত কার্ড না পাওয়া পর্যন্ত আপনি পুনরাবৃত্তি করুন এবং এটি ফিরে না আসা পর্যন্ত স্বাভাবিক অবস্থায় ফিরে যাওয়া ed সুতরাং আমরা এখানে সন্ধান করব C4, জেনে রাখুন যে সি একটি নম্বর নয়, এবং এটি 4Cসঠিক হিসাবে ফিরিয়ে দেবে ।


বিধি

  • আপনি কোনও বাহ্যিক উত্স থেকে ডেক লোড নাও করতে পারেন।
  • খালি ইনপুটটির ফলে 1 টি এলোমেলো কার্ড বিপরীতক্রমে এলোমেলোভাবে বদলে যাওয়া ডেকের ফলাফল হওয়া উচিত।
  • ইনপুট হিসাবে 1 কার্ডযুক্ত কার্ডগুলির একটি ডেকে বিপরীত কার্ডের ফলাফল হওয়া উচিত should
  • অন্য যে কোনও ইনপুটগুলির ফলে ভবিষ্যতে টিউবের মাধ্যমে বিস্ফোরক লালামাস সিগওয়েতে চলা ফলাফল হতে পারে।
    • বা অন্য কিছু, এই বিষয়ে।
  • উভয়ই নির্বাচিত কার্ড এবং বদলানো অর্ডার অবশ্যই অভিন্ন র্যান্ডম হতে হবে।
    • IE সমস্ত কার্ডের বিপরীত হওয়ার জন্য নির্বাচিত হওয়ার সমান সুযোগ রয়েছে।
    • IE সমস্ত কার্ডের সংমিশ্রণের উপস্থিতির সমান সুযোগ রয়েছে।
  • আপনি স্যুট ব্যবহার করতে পারেন SHCDবা ব্যবহার করতে পারেন shcd, তবে সামঞ্জস্যপূর্ণ হতে পারেন:
    • আপনি যদি বড় হাতের স্যুট ( SHCD) চয়ন করেন তবে আপনাকে অবশ্যই ব্যবহার করতে হবে TJQKA
    • আপনি যদি ছোট হাতের স্যুট ( shcd) চয়ন করেন তবে আপনাকে অবশ্যই ব্যবহার করতে হবে tjqka
  • এটি , বিজয়ী সর্বনিম্ন বাইট।

2
@ ল্যাবেলা - এই হাহার অনেক বেশি ভিন্নতা আছে। আমার বাবা মনে আছে আমার বাবা উল্লম্বভাবে প্রতিসাম্য কার্ডগুলি ব্যবহার করে আমার মনকে ফুটিয়ে তুলেছিল এবং একটি আলাদা কৌশল করে, তবে আমাকে এই মনে করে তোলে was
ম্যাজিক অক্টোপাস উরন

13
"একটি ফিউচারিস্ট টিউব দিয়ে সিগওয়েতে বিস্ফোরক লোলামাস চড়ে" - আমি আপনার পরবর্তী এসি-আর্ট চ্যালেঞ্জের অপেক্ষায় রয়েছি ...
লেভেল রিভার সেন্ট

3
সম্পূর্ণ ডেকটি 0 থেকে 51 এর মধ্যে এলোমেলো অফসেটের মাধ্যমে ঘোরানো শর্তটি সন্তুষ্ট করে যে "সমস্ত কার্ডগুলিকে বদলানো ডেকে যে কোনও জায়গায় উপস্থিত হওয়ার সমান সুযোগ রয়েছে", তবে সম্ভবত এলোমেলো স্থানচ্যুতি হিসাবে বিবেচনা করা উচিত নয়। আপনি কি বোঝাতে চেয়েছেন যে সমস্ত (52!) আদেশগুলি প্রায় সমানভাবে সম্ভবত?
aschepler

1
@ এস্পেপলার কী বলেছিলেন তা কেবল প্রসারিত করার জন্য: অনেকগুলি ভাষায় ডিফল্ট পিআরএনজি সময়সীমার সাথে, বেশিরভাগ 52 টি! সম্ভাব্য শাফলগুলি শূন্যের ঠিক সমান প্রদর্শিত হওয়ার সম্ভাবনা থাকে (যদিও এটি বদলে যাওয়া অ্যালগরিদমের উপর নির্ভর করে আরও ভাল বা খারাপ হতে পারে)।
আর্নৌল্ড

1
ডলির উপরে লামায় চড়ে দালাই লামা কি গ্রহণযোগ্য? আমি সেগওয়ে এবং বিস্ফোরক থেকে বাইরে আছি, তবে আমার কাছে ক্যান্ডি কৃমি রয়েছে ... i.imgur.com/gEkVR5P.gif
ত্রিশাল্লাকা

উত্তর:


7

রেটিনা , 61 60 59 বাইট

G`[HCDS].
^$
23456789TJQK
/^2/&L$`.
$&H¶$&D¶$&C¶$&S
@V`
O?`

এটি অনলাইন চেষ্টা করুন! সম্পাদনা: @ মার্টিনইেন্ডারে ধন্যবাদ 1 2 বাইট সংরক্ষণ করা হয়েছে। ব্যাখ্যা:

G`[HCDS].

সমস্ত অপরিবর্তিত কার্ড মুছুন। এটিতে একটি বিপরীত কার্ড বা কোনও কার্ড থাকা উচিত।

^$
23456789TJQK
/^2/&L$`.
$&H¶$&D¶$&C¶$&S

যদি ইনপুটটি (এখন) খালি থাকে তবে কার্ডের একটি প্যাক তৈরি করুন।

@V`

এলোমেলোভাবে একটি কার্ড নির্বাচন করুন এবং এটিকে বিপরীত করুন (একক বিপরীত কার্ডটি উল্টে দেয়)।

O?`

কার্ড (গুলি) বদলান।


4

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

Y9ŸJ.•§®т•«.•öB•âsKDgiëDΩÂ:.r

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


। • {k {? Öw • 9LJì # `those দু'জনকে একসাথে সংকুচিত করতে কয়েকটি বাইট সংরক্ষণ করতে পারে।
যাদু অক্টোপাস উরন

@ ম্যাজিক অ্যাক্টোপাস ইউরন: 1 এবং 2 অপসারণের পরে, এটি একই বাইকোয়েন্টে শেষ হয় না?
এমিগিনা


@ ম্যাজিক অ্যাক্টোপাস উর্ন: দুর্ভাগ্যক্রমে নয়। আপনি উভয় 1এবং aসেখানে পেয়েছেন ।
এমিগিনা

অপব্যাখ্যা করে আমাকে তা ত্যাগ Y9ŸJযেমন9LJ
ম্যাজিক অক্টোপাস ভস্মাধার

3

পাওয়ারশেল ভি 2 বা তার পরে, 175 বাইট

%{$s=[char[]]'SDHC';if($_){$_|?{$s-contains$_[0]}|%{$_[1]+$_[0]}}else{$d=$s|%{$e=$_;[char[]]'23456789TJQKA'|%{$_+$e}}|random -c 52;$r=random 52;$d[$r]=$d[$r][1]+$d[$r][0];$d}}

দীর্ঘ সংস্করণ:

ForEach-Object {
    $s = [char[]]'SDHC'                         # Create a character array with the suits
    if ($_) {                                   # If there's pipeline input ...
        $_ |                                    # ... write it to the output pipeline ...
            Where-Object {$s -contains $_[0]} | # ... but let only those input elements pass where the first letter appears in the suits ...
            ForEach-Object {$_[1] + $_[0]}      # ... and swap the two elements
    } else {
        $d = $s | ForEach-Object {              # Assign $d to the output of the suits, processing each element first.
                $e = $_                         # Store the current suit element for use in the inner loop
                [char[]]'23456789TJQKA' | ForEach-Object {$_ + $e}  # Process each of the numbers, joining it with the current suit, ...
            } | Get-Random -Count 52            # ... and the resulting 2-char-strings goes back into the output to be shuffled
        $r = Get-Random -Maximum 52
        $d[$r] = $d[$r][1] + $d[$r][0]          # Swap the two chars of a random array element in $d
        $d                                      # Write $d to the output pipeline
    }
}

ব্যবহার:

একটি বদলানো ডেক তৈরি করুন এবং এটি একটি ভেরিয়েবলে সংরক্ষণ করুন:

$Deck = %{$s=[char[]]'SDHC';if($_){$_|?{$s-contains$_[0]}|%{$_[1]+$_[0]}}else{$d=$s|%{$e=$_;[char[]]'23456789TJQKA'|%{$_+$e}}|random -c 52;$r=random 52;$d[$r]=$d[$r][1]+$d[$r][0];$d}}

উদাহরণস্বরূপ, ইচ্ছামত চলকটি পরীক্ষা করুন

$Deck -join ','

ডেকটি স্ক্রিপ্টে ফিরে পাইপ করুন:

$Deck | %{$s=[char[]]'SDHC';if($_){$_|?{$s-contains$_[0]}|%{$_[1]+$_[0]}}else{$d=$s|%{$e=$_;[char[]]'23456789TJQKA'|%{$_+$e}}|random -c 52;$r=random 52;$d[$r]=$d[$r][1]+$d[$r][0];$d}}


2

> <> , 215 193 বাইট

i:0)?\~"CHSD":"2"$:"3"$:"4"$:"5"$:"6"$:"7"$:"8"$:"9"$:"T"$:"J"$:"Q"$:"K"$:"A"$&105&"S"=?.~~~{c0.
=+i$?\i$:::"B")$"I"(*$"S"
_oo$~/;
x0
x0
x0
x0
x0
x0
x0
x0
x0
x0
\l&>?!<
>&"3"%:?\~$>o<
\  }}&-1/

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

আলাদা না হওয়া কার্ড হিসাবে ইনপুট নেয় এবং একই হিসাবে আউটপুট নেয় (যেমন KCAC5C6S...)

এটি আরও সহজ পরীক্ষা করার জন্য, এখানে এমন একটি সংস্করণ রয়েছে যা কমা বিচ্ছিন্ন হিসাবে ইনপুট নেয় এবং নিউলাইন পৃথক হিসাবে আউটপুট নেয়।

সমস্ত x0গুলি কেবল একটি আধা-ইউনিফর্মের এলোমেলো সংখ্যা জেনারেটর করার চেষ্টা attempt এগুলির মধ্যে অনেকগুলি সম্ভাব্য মানের পরিধি বাড়িয়ে তোলে এবং এর চেয়ে কম বিপরীতে। তাদের মধ্যে 10 হ'ল আমি এটিকে যথেষ্ট এলোমেলো হিসাবে বিচার করেছি।

মনে রাখবেন যে এটি এতে বিধিগুলি অনুসরণ করে:

  • সমস্ত কার্ডের বিপরীত হওয়ার জন্য নির্বাচিত হওয়ার সমান সুযোগ রয়েছে।
  • সমস্ত কার্ডের বদলানো ডেকে যে কোনও জায়গায় উপস্থিত হওয়ার সমান সুযোগ রয়েছে।

তবে সমস্ত বদলানো সংমিশ্রণগুলি সম্ভব আউটপুটগুলি নয় (এবং বাস্তবে, বিস্তৃত সংখ্যাগরিষ্ঠ নয়)।


2

জেলি , 26 বাইট

9ḊṾ€;“AJKQT”p“CDHS”ḟ⁸ẊU-¦Ẋ

একটি মোনাডিক লিঙ্ক অক্ষরের তালিকার একটি তালিকা গ্রহণ করে (0 টি কার্ডের একটি স্টাব বা একটি কার্ডের বিপরীতে 52 কার্ডের একটি ডেক) এবং অক্ষরের তালিকার একটি তালিকা ফেরত দেওয়া (1 বিপরীত কার্ডের একটি স্টাব তবে এগিয়ে বা সম্পূর্ণ) - একটি এলোমেলো কার্ডের বিপরীতে ডেক)।

এটি অনলাইন চেষ্টা করুন! (ইনপুট এবং আউটপুট প্রতিনিধিত্বের জন্য পাদলেখ মেলে - একটি সম্পূর্ণ প্রোগ্রাম হিসাবে জেলি কোড পাইথন-আর্গুমেন্টটি প্রমাণ করে এবং আউটপুটটির জন্য অক্ষরগুলি একসাথে ছিন্ন করে)

কিভাবে?

9ḊṾ€;“AJKQT”p“CDHS”ḟ⁸ẊU-¦Ẋ - Link: list of lists of characters, Z
9Ḋ                         - nine dequeued = [2,3,4,5,6,7,8,9]
  Ṿ€                       - unevaluate €ach = ['2','3','4','5','6','7','8','9']
     “AJKQT”               - literal list of characters = ['A','J','K','Q','T']
    ;                      - concatenate = ['2','3','4','5','6','7','8','9','A','J','K','Q','T']
             “CDHS”        - literal list of characters = ['C','D','H','S']
            p              - Cartesian product = [['2','C'],['2','D'],...,['T','S']]
                           -   a full deck of forward cards
                    ⁸      - chain's left argument, Z
                   ḟ       - filter discard
                           -   leaving either that deck or the 1 reversed card in the input
                     Ẋ     - shuffle
                        ¦  - sparse application...
                       -   - ...to index: -1 (which doesn't exist when the length is only 1)
                      U    - ...do: upend (reverses the penultimate card of the deck)
                         Ẋ - shuffle

এটি সবসময় অন্তরের দশকে বিপরীত বলে মনে হয়। এটি কি এলোমেলো কার্ড হওয়া উচিত নয়?
Emigna

আহ, ধন্যবাদ, হ্যাঁ একটি বাগ আছে - এটির আগে একটি অতিরিক্ত দিয়ে ঠিক করা যেতে পারে U(এর পরিবর্তে আমি শূন্য বাইটের জন্য ঠিক করতে পারি) তবে পরে তা করতে হবে ...
জোনাথন অ্যালান

যেহেতু এটি একটি ফাংশন, আমি নিশ্চিত না যে ইনপুটটি খালি না থাকলে আপনি কোনও একক কার্ড উপস্থাপনের [[number, suit]]পরিবর্তে ফিরে আসতে পারেন কিনা [number, suit]
এরিক আউটগল্ফার

এছাড়াও, না, আমি মনে করি না যে এর জন্য কোনও 0-বাইট ফিক্স আছে।
এরিক আউটগলফার

@ এরিকথ আউটগল্ফার আমি দেখতে পাচ্ছি না কেন, একাকী কার্ড হ'ল সর্বোপরি একটি মাত্র কার্ডের স্টাব (ছোট ডেক)।
জোনাথন অ্যালান

1

রুবি , 95 (বা 100) বাইট

->n{s=(0..51).map{|i|"A23456789TJQK"[i/4]+"HCDS"[i%4]}
n[0]?s-n:s[rand 52].reverse!&&s.shuffle}

ইনপুট হিসাবে খালি অ্যারে দেওয়া, ডেকটিকে স্ট্রিংগুলির অ্যারের হিসাবে ফিরিয়ে দেয়। ইনপুট হিসাবে একটি ননম্পটি অ্যারে দেওয়া, একটি একক স্ট্রিংযুক্ত অ্যারে হিসাবে ফ্লিপ কার্ডটি প্রদান করে। যদি ফ্লিপ কার্ডটি স্ট্রিং সহ একটি একক-উপাদান অ্যারের পরিবর্তে স্ট্রিং হিসাবে প্রয়োজনীয় হয়, নিম্নলিখিতটি 5 টি বাইট যুক্ত করে: এতে পরিবর্তন s-nকরুন(s-n)[0]

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

প্রথম লাইন একটি স্ট্যান্ডার্ড ডেক উত্পন্ন করে। দ্বিতীয় লাইনটি নীচে ভেঙে যায়

 n[0]?                  #If the input array is not empty (contains a truthy first element)
  s-n:                  #Find the contents of s with the contents of n removed. The only card remaining from the standard deck corresponds to the flipped card in the input.
                        #ELSE 
  s[rand 52].reverse!&& #Flip one card in place in the array s. As the result is truthy, whatever is next will be returned.
 s.shuffle              #shuffle the deck and return the shuffled deck with one element flipped
}

1

জাভা 8, 275 274 259 বাইট

import java.util.*;s->{if(s==null){List l=new Stack();char i=52,r=i,x,y;for(r*=Math.random();i-->0;y="23456789TJQKA".charAt(i%13),l.add(i==r?x+""+y:y+""+x))x="HSDC".charAt(i&3);Collections.shuffle(l);return l;}return s.replaceAll(".*,(.)([^HSDC]).*","$2$1");}

ইনপুট একটি স্ট্রিং, আউটপুট হয় একটি স্ট্রিং বা java.util.Listইনপুট উপর নির্ভর করে।

ব্যাখ্যা:

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

import java.util.*;          // Required import for List, Stack and Collections
s->{                         // Method with String parameter and Object return-type
  if(s==null){               //  If the input is `null`:
    char i=52,               //   Index-integer
         r=i,                //   Random-integer
         x,y;                //   Temp characters
    List l=new Stack();      //   Create a List
    for(r*=Math.random();    //   Determine the random integer in the range (0;52]
        i-->0                //   Loop `i` 52 times:
        ;                    //     After every iteration:
         y="23456789TJQKA".charAt(i%13)
                             //      Set `y` to one of 23456789TJQKA based on `i` modulo-13
         ,l.add(i==r?        //      If the random integer equals the current `i`
                 x+""+y      //       Add the current card reversed
                :            //      Else:
                 y+""+x))    //       Add the current card as is
      x="HSDC".charAt(i&3);  //    Set `x` to one of HSDC based on `i` bitwise-AND 3
    Collections.shuffle(l);  //   Shuffle the generated Deck
    return l;}               //   And return this Deck as result
                             //  If the input was a Deck instead:
  return s.replaceAll(".*,(.)([^HSDC]).*",
                             //   Get the reversed card from the Deck,
            "$2$1");}        //   and output it non-reversed

1

পাইথ, 45 বাইট

J"CDHS"KO52=NsM.S*+c"AKQJT"1S9J|f}hTJQXNK_@NK

খালি ইনপুট জন্য খালি তালিকা নেয়।
এটি অনলাইনে চেষ্টা করুন

ব্যাখ্যা

J"CDHS"KO52=NsM.S*+c"AKQJT"1S9J|f}hTJQXNK_@NK
J"CDHS"                                        Save the suits as J.
       KO52                                    Save a random index as K.
           =NsM.S*+c"AKQJT"1S9J                Save a shuffled deck as N.
                                f}hTJQ         Find all cards with suit first.
                               |      XNK_@NK  If there aren't any, flip a card.

1

আর , 177 171 বাইট

function(l=1,F="(.)(.)",R="\\2\\1",S=sample)if(l>1)sub(F,R,grep("^[SDHC]",l,v=T))else{m=S(outer(c(2:9,"T","J","Q","K"),c("S","D","H","C"),paste0))
m[1]=sub(F,R,m[1])
S(m)}

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

খালি ইনপুট দেওয়া হয়েছে, (কল করুন) f কোনও ইনপুট ছাড়াই করা হয়েছে), আমরা ডিফল্ট হয়ে যাই l=1এবং এইভাবে mডেকে একটি এলোমেলো ক্রমুটি তৈরি করি । ধরে sampleনেওয়া সত্যই এলোমেলো, এই তালিকায় কোনও কার্ড প্রথম হওয়ার সমান সম্ভাবনা রয়েছে। সুতরাং আমরা প্রথমটি সংশোধন করি এবং তারপরে আবার পরিবর্তন করে তালিকাটি ফিরে আসি।

এটির SDHCবিপরীতে , আমরা একটির সাথে কার্ড শুরু করে এটির বিপরীতে সন্ধান করি।


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