Görev, MIT konferansından alınan Prof. Devadas tarafından verilen “ Siz zihin okuyabilirsiniz ” dersini aldı . Püf noktasının ayrıntılı bir açıklaması, bağlantılı videoda veya bu belgede bulunabilir . Daha basit bir şekilde açıklamaya çalışacağım.
Bunun 1930'larda icat edildiği ve "Fitch Cheney'in Beş Kartlı Püf Noktası" olarak bilindiği ortaya çıktı .
İşin püf noktası şöyle:
- Bir kart destesinden beş rastgele kart seçilir. Seyirci ve asistanınız onları görüyor, ama göremiyorsunuz.
- Asistanınız (birlikte çalıştığınız kişiler) bu kartlardan dördünü seçecek ve size belirli bir sırada gösterecektir. Gizli kartın rastgele 5 karttan seçilmediğini unutmayın. Asistan, numarayı çalıştıracak kartı seçer.
- Beşinci kartın ne olduğunu dört karttan toplayabileceğiniz bilgilere dayanarak çıkaracaksınız.
Nasıl?
Aşağıdaki iki noktayı aklınızda bulundurun:
5 rastgele kart seçildiğinde, en az iki kartın aynı takım elbiseye sahip olduğu garantilidir 1 .
Aşağıdaki resimde, tüm basamakları 2 olan bir daire gösterilmektedir . Bir daire olduğu için saymak mümkündür: J, Q, K, A, 2, 3 (yani modüler sayım). Gizli kartın, birincisi ile aynı seviyeye sahip olmadığı garantilidir, çünkü aynı takımdan olacaktır (aşağıda açıklanmaktadır). İlk kartı ve gizli kartları her zaman seçmek mümkündür, öyle ki gizli kart 1'den 6'ya kadardır (daire şeklinde sayılırken). İlk kart 1 ise , gizli kart 2,3,4,5,6 veya 7 olacaktır . İlk kart J ise , gizli kart Q, K, A, 2,3 veya 4 vb. Olacaktır .
Algoritması:
İlk kart: Bu kart gizli kartla aynı renkte olacaktır. Kart ayrıca gizli kartın rütbesini çözerken kullanacağınız referans noktası olacaktır.
2., 3. ve 4. kartlar , 1 ... 6 aralığındaki bir değerin kodunu çözer . Üç kart S, M, L (en küçük kart, orta kart, en büyük kart) olarak adlandırılır. Değerler şu şekilde kodlanacaktır (sözlük bilgisi sırası):
S M L -> 1
S L M -> 2
M S L -> 3
M L S -> 4
L S M -> 5
L M S -> 6
Bu nedenle, ilk kartın sırası 5 ise ve kalan üç kart 4 Q 7'ye ( SLM siparişi verilir ) sahipse, son kartın değeri 5 + 2 = 7'dir . Asın tutarlı olduğu sürece en yüksek veya en düşük kart olmasını mı tercih edebilirsiniz.
Birkaç kart rütbeyi paylaşırsa, takım sırasını belirleyecektir, burada C <D <H <S .
Giriş formatı:
Dört kart H3 (üç kupa), DK (elmas kralı) vb. Giriş yerine bunun yerine 3H ve KD olarak seçmeyi seçebilirsiniz .
Girdi, uygun herhangi bir biçimde olabilir, ancak takım elbise listesini bir değişkende ve bir diğerindeki sıralama listesini birleştiremezsiniz. 'D5', 'H3' ..
ve [['D',5],['H',3] ...
ikisi de iyi, ama 'DHCH',[5,3,1,5]
değil. T dışında harf yerine rakam kullanamazsınız .
Çıktı
Gizli kart, girişle aynı formatta.
Örnek
Hadi bir adım atalım:
Input:
D3 S6 H3 H9
Gizli kartın bir elmas olduğunu biliyoruz, çünkü ilk kart bir elmas. Ayrıca birinci kartın sırası 3 olduğu için sıralamanın 4,5,6,7,8 veya 9 olduğunu biliyoruz .
Kalan kartlar, 3 değerini kodlayan 6,3,9 ==> M, S, L şeklinde sıralanır . Bu yüzden gizli kart 3 + 3 = 6 pırlantadır, bu nedenle çıktının D6 olması gerekir .
Test durumları:
C3 H6 C6 S2
C9 # The order is LMS (H6 > C6, and 2 < 6). 3+6=9
SQ S4 S3 ST # (ST = S10. Format is optional)
S2 # The order is MSL. 12+3=2
HA CA DA SA
H2 # The order is SML. 14+1=2
Bu kod golf , yani her dilde en kısa çözüm kazanıyor. Açıklamalar teşvik edilir!
1 dört takım bulunmaktadır ( Cı Lubs, D iamonds, H earts ve S kürekler).
2 13 basamak, 2,3,4,5,6,7,8,9,10, J, Q, K, A vardır . 10 yerine T kullanmayı seçebilirsiniz .
92427**3
ve değiştirin :k+7
k+8
a=>(k='A23456789TJQK'+92427**3)[[[r,s],...x]=a.map((c,i)=>[k.search(c[0])+10,c[1],i]),(r-k[x.sort().map(c=>k=k*2|c[2])|k+8])%13]+s