Meydan okuma
Bir ızgara boyutu, engellerin pozisyonları, oyuncu pozisyonu ve hedef pozisyonu göz önüne alındığında, göreviniz oyuncunun hedefe ulaşması ve aynı anda engellerden kaçınması için bir yol bulmaktır (gerekirse).
Giriş
- N : Izgara boyutu
N x N - P : Oyuncunun pozisyonu
[playerposx, playerposy] - T : Hedefin konumu
[targetposx, targetposy] - O : Engellerin konumları
[[x1, y1], [x2, y2],...,[xn, yn]]
Çıktı
Yol : Hedefe ulaşmak için kullanabileceği bir yol oyuncusu[[x1, y1], [x2, y2],...,[xn, yn]]
kurallar
- Nokta
[0,0], ızgaranın sol üst köşesinde bulunur. - Oyuncunun pozisyonu daima ızgaranın sol tarafında olacaktır.
- Hedefin konumu her zaman ızgaranın sağ tarafında olacaktır.
- Izgara her zaman en az bir engele sahip olacaktır.
- Hiçbir engelin oyuncuyla veya hedef pozisyonla örtüşmediğini varsayabilirsiniz.
- Min yolunu bulmanız gerekmez.
- Oynatıcı çapraz olarak değil sadece sola, sağa, yukarı ve aşağı hareket edebilir.
- Girişi istediğiniz herhangi bir şekilde alabilirsiniz.
- Oyuncunun hedefe ulaşması için bir yolun her zaman var olacağını varsayabilirsiniz.
- Açıkçası, her giriş için birden fazla geçerli yol vardır, birini seçin.
- Şebekenin
N > 2en azından olacağını varsayalım3 x 3.
Örnekler
Girdi: 9, [6, 0], [3, 8], [[0, 5], [2, 2], [6, 4], [8, 2], [8, 7]]
Olası Çıktı:[[6, 0], [6, 1], [6, 2], [6, 3], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [4, 8], [3, 8]]
Girdi: 6, [1, 0], [3, 5], [[1, 2], [2, 5], [5, 1]]
Olası Çıktı:[[1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [2, 4], [3, 4], [3, 5]]
Not
Bunun Xsatırlar ve Ysütunlar için olduğunu unutmayın. Onları bir görüntüdeki koordinatlarla karıştırmayın.
Düzenle
As @digEmAll nedeniyle kurallarına, işaret #2ve #3, playerY = 0ve targetY = N-1. Yani, isterseniz sadece girdi olarak alabilir playerXve targetX(eğer kodunuzu kısaltırsa).
