Rod iki oyuncu arasında bir kart oyunu yönetiyor: George ve Tim. Şu anda Tim kartları karıştırıyor. Rod, Tim'in hile yapmaya çalıştığından şüphelenir, bu nedenle shuffle'ın adil olup olmadığını kontrol etmek için yardımınıza ihtiyacı vardır.
Tim aşırıya kaçan shuffle'ı yapıyor: destenin altından bir yığın kart kesiyor, daha sonra destenin üstünden destenin üstüne çeşitli parçaları kesiyor ve işlemi birkaç kez tekrarlıyor.
Çubuk kartal gözlü ve Tim'in her seferinde kaç tane kart kesdiğini görebiliyor, ancak Tim'in karıştırdığı kadar hızlı kartları hesaplayamıyor ve takip edemiyor. Geldiğiniz yer budur: Çubuk, ayrıntılı karıştırma bilgilerini alan ve karıştırmanın adil, zayıf veya hile olup olmadığını belirleyen bir program veya işlev yazmanızı ister.
- Karıştırmadan sonra, 25 çiftten az bitişik kart (aynı sırada) bitişik kalırsa, karışıklık adil olur ve oyun devam edebilir.
- En az 25 (hepsi değil) bitişik kart çifti bitişik kalırsa, karışıklık zayıftır ve Rod, Tim'i başının üzerine sokar ve ondan biraz daha karıştırmasını ister.
- Tüm kartlar sonunda aynı pozisyonda kalırsa, Tim açıkça aldatır ve Rod onu büyük bir alabalıkla vurur.
Bu kod golf, bu yüzden en kısa kod kazanır.
Giriş:
Birkaç satırda, boşlukla ayrılmış 0 ile 52 (her ikisi de ayrıcalıklı) arasında bir dizi sayı elde edersiniz, burada her satır bir araya toplanan tüm kartlarla başlayan ve biten bir karıştırma turunu temsil eder.
Her satırda, ilk sayı Tim'in destenin altından kesdiği kart sayısıdır ve sonraki her sayı elinden destenin üstüne bıraktığı kart sayısıdır. Bir satırdaki son sayıdan sonra kart kalırsa, Tim'in destenin üstüne koyduğunu varsaymalısınız.
Girişin geçerli olduğu garanti edilmektedir. En az bir sayı satırı vardır ve her satır en az 2 sayı içerir. Her satırdaki ilk sayı, aynı satırdaki diğer tüm sayıların toplamından küçük değildir. Sondaki bir satırsonu isteğe bağlıdır, girdinin bir tane olduğunu veya bir tane olmadığını varsayabilirsiniz.
Çıktı:
Programınız shuffle adil ise "fair", shuffle zayıf ise "zayıf" ve Tim tüm kartları aynı sırada tutuyorsa "trick" yazmalı / döndürmelidir. Sondaki bir satırsonu isteğe bağlıdır.
Misal:
Destenin 52 kart olduğu varsayılır, ancak gösterim amacıyla 10 karttan daha küçük bir desteyi kullanacağım.
Giriş:
5 3 1
4 2 2
İlk güverte, üstten bakıldığında: 0 1 2 3 4 5 6 7 8 9
5
➜ 0 1 2 3 4
( 5 6 7 8 9
elde)
3
➜ 5 6 7 0 1 2 3 4
( 8 9
elde)
1
➜ 8 5 6 7 0 1 2 3 4
( 9
elde)
satır sonu ➜ 9 8 5 6 7 0 1 2 3 4
4
➜ 9 8 5 6 7 0
( 1 2 3 4
elde)
2
➜ 1 2 9 8 5 6 7 0
( 3 4
elde)
2
➜ 3 4 1 2 9 8 5 6 7 0
4 çift bitişik kalır:(3 4) (1 2) (5 6) (6 7)
Test senaryoları:
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
Çıktı: fair
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5 5
43 5 5 5 5 5 5 5
Çıktı: weak
29 24
19 18
38 2 1 8 13 6 4
47 15 16 5 2 1 7
34 22 9 3
44 9 10 11 3 1 7
33 18 4 2 3 3
Çıktı: fair
24 6 12 4
25 3 19
36 4 25 2
19 11 1 3
15 9 3
37 5 27
Çıktı: weak
26 13
26 13
26 13
26 13
Çıktı: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Çıktı: weak
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Çıktı: trick
50 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
49 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Çıktı: fair
Gereksinimler:
- Bir işlev yazarsanız, standart girişten okuyabilir veya girişi tek bir dize parametresi olarak alabilir. Ayrıca, işlev çıktıyı yazdırabilir veya döndürebilir.
- Program, Linux'ta serbestçe kullanılabilen yazılım kullanılarak çalıştırılabilir olmalıdır.
- Kaynak kod yalnızca ASCII karakterleri kullanmalıdır.
- Standart boşluklar yok.