İkramiyeleri
1 numara ( ödüllü )
İlk geçerli cevap için 50 temsilci atacağım
2 ( ödüllü )
En kısa geçerli cevap için 100 tekrar daha atacağım.
3 ( gönderime açık )
Birincisi için 200 temsilciyi daha kısa bir geçerli cevapla atacağım. Şu anda en kısa yanıtın en fazla% 45'i önemlidir ( 564 byte x 0.45 = max 254 byte ).
Oyun
Klasik oyun " Dokuz Erkekler Morris " veya sadece " Değirmen " hatırlıyor musunuz? Üç Erkekler Morris adında , değişebilir bir tic-tac-toe gibi bir varyasyon var .
kurallar
Bu oyunun boş tahtası:
a b c
1 [ ]–[ ]–[ ]
| \ | / |
2 [ ]–[ ]–[ ]
| / | \ |
3 [ ]–[ ]–[ ]
[ ]
bir alandır ve |–/\
bu alanlar arasındaki yolları temsil eder.
Oyun iki oyuncu tarafından oynanır 1
ve 2
her biri tahtaya 3 jeton yerleştirir. Bu aslında zaten oldu ve biz oyundayız. Bir oyuncu mill
, oyuncunun 3 jetonunun dikey veya yatay sırası olan bir oyuncu oluşturabilirse oyun kazanılır .
Jetonlar, bu kurala göre bağlantı çizgileri boyunca tahta üzerinde hareket ettirilebilir:
Bitişik boş bir konuma (yani kenar konumundan merkeze veya merkezden kenar konumuna veya kenar konumundan bitişik kenar konumuna)
Bir oyuncu bitişik boş pozisyon olmadığı sürece bir hamle yapmalıdır, bu durumda hamle atlanır.
Meydan okuma
Siz oyuncusunuz 1
ve hamleniz sırada. Aşağıdakileri yapıp yapmadığını belirleyen bir program veya işlev yazın:
- kazanmayı 2 veya daha az hamle ile zorlayabilirsiniz ( kesin kazanç )
- Rakibiniz hata yaparsa 2 veya daha az hamle kazanabilirsiniz ( olası kazanç )
- 2 ya da daha az hamle kazanamazsınız çünkü daha fazla hamleye ihtiyacınız olacak ya da zorla hamle rakibinizin kazanmasına neden olacak (kazanmak imkansız )
Gereksinimler
- Rakibinizi ölüme götürdüğünüzde kesinlikle kazanmanıza rağmen, programınızın sınırlı bir sürede bitmesi gerekir.
- Bir program veya işlev yazabilirsiniz.
Giriş
Oyuncu tarafından temsil edilir 1
ve 2
. 0
Serbest bir alanı tanımlar. Girdiyi bir matris veya dizi olarak alabilirsiniz.
kesin
A B C D
2 1 0 | 2 1 0 | 1 0 1 | 1 2 2
2 1 2 | 0 1 0 | 1 0 2 | 2 1 O
0 0 1 | 2 2 1 | 0 2 2 | O O 1
A: [2,1,0,2,1,2,0,0,1]
B: [2,1,0,0,1,0,2,2,1]
C: [1,0,1,1,0,2,0,2,2]
D: [1,2,2,2,1,0,0,0,1]
Mümkün
A B C
1 0 1 | 1 0 1 | 1 2 2
1 2 2 | 1 2 0 | 0 0 1
2 0 0 | 2 0 2 | 2 1 0
A: [1,0,1,1,2,2,2,0,0]
B: [1,0,1,1,2,0,2,0,2]
C: [1,2,2,0,0,1,2,1,0]
imkansız
A B
1 0 0 | 1 2 0
1 2 2 | 2 1 0
2 0 1 | 1 2 0
A: [1,0,0,1,2,2,2,0,1]
B: [1,2,0,2,1,0,1,2,0]
Çıktı
Programınız bir gülen yüz çıkarmalı / döndürmelidir:
- Kesin kazanç:
:)
- Olası kazanç:
:|
- Kazanmak imkansız:
:(
Örnekler
İki hamlede kesin kazanç:
[2][1][ ] 1. [2][1][ ]
[2][1][2] -> [2][1][2]
[ ][ ][1] [ ][1][ ]
[2][1][ ] 1. [2][1][ ] [ ][1][ ] 2. [ ][ ][1]
[ ][1][ ] -> [ ][ ][1] -> [2][ ][1] -> [2][ ][1]
[2][2][1] [2][2][1] [2][2][1] [2][2][1]
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][ ][2] -> [1][ ][2] -> [1][ ][2] -> [ ][ ][2]
[ ][2][2] [ ][2][2] [2][ ][2] [2][ ][2]
İki hamlede olası kazanç:
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][2][ ] -> [1][2][ ] -> [1][2][2] -> [ ][2][2]
[2][ ][2] [2][ ][2] [2][ ][ ] [2][ ][ ]
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][2][ ] -> [1][2][ ] -> [1][2][2] -> [ ][2][2]
[2][ ][2] [2][ ][2] [2][ ][ ] [2][ ][ ]
[1][2][2] 1. [ ][2][2] [2][ ][2] 2. [1][2][2]
[ ][ ][1] -> [1][ ][1] -> [1][ ][1] -> [1][1][1]
[2][1][ ] [2][1][ ] [2][1][ ] [2][ ][ ]
İki hamlede kazanmak imkansız:
[1][ ][ ]
[1][2][2]
[2][ ][1]
Bonus
Belirli bir kazanmanın mümkün olması ve programınızın a1:a2
(1 hamle) veya a1:a2,a3:b2
(2 hamle) gibi bir yoldan başarıya hamle çıkarması durumunda, bayt sayınızın % 30'unu geri çekebilirsiniz .
Bu kod golf - bayt çok kısa cevap kazanır. Standart boşluklara izin verilmez.
Sayesinde Peter Taylor bazı kusurları ve geliştirilmiş ifadeler sabit Sandbox .
[1,0,0,2,1,0,2,2,1]
, 2. oyuncu hareket edemez - bu 1. oyuncu için bir kazanç mıdır?