81 karakter uzunluğunda bir dizeyi ayrıştıracak bir işlev yapıyorum. Ayrıştırma sırasında, belirtilen satır ve sütuntan dikey, yatay ve çapraz tüm koordinatları döndüren neighbors(Int: row, Int: col)
adlı bir işlev kullanmam gerekir. Bu koordinat listesiyle, her bir koordinatta listelenen olası değerlerin her birinden aldığım değeri kaldırmam gerekiyor. Pano bir harita olarak temsil edilir ve bunu işlevsel olarak, yani var kullanmadan yapmam gerekir.Scala, bir yönetim kurulu tarafından temsil edilen bir harita üzerinde yinelenir
str.zipWithIndex.map{
case (digit, index) => ((index/9, index % 9), List(digit.asDigit))
}.toMap
Ben neighbors
işlevi hakkında bildiklerim:
İşte benim ayrıştırma işlevi var ayrıştırıcı üzerinde olsaydı
def neighbors(row: Int, col: Int): List[(Int, Int)]
Örneğin, (0,2)
koordine ve sayı girmiş harita 4
10 idi, o noktadan dikey, yatay ve çapraz tüm koordinatlardan 4
kaldırmak zorunda kalacaktı. Her bir noktanın değeri, olası değerlerin bir listesi olarak temsil edilir.
Ayrıca neighbor
işlevinin uygulanmasına da izin verilmiyor.
Yardımın için teşekkürler! Sorunuzu doğru anladıysam
1 - Düşündüm [Karl'ın öneri] (http://stackoverflow.com/questions/36266982/scala-returning-coordinate-as-tuple) sizin ayrıştırıcı için çok daha iyi bir tasarım oldu. 2 - Bu onun tam imzayı görmeden 'komşu' işlevini nasıl kullanılacağını önermek zor, ya da en azından onun dönüş veri türü. 3 - Daha doldurulan edilmemiş koordinatlardan şey çıkarmak, nedenle komşu 'parse' bittikten' sonra her elemana çağrılacak olurdu 'O, sizin açıklamasından, görünüyor. – jwvh
Katılıyorum, Karl'ın önerisi harikaydı. Boş hücrelerin nasıl bir liste ile doldurulacağını anladım. Bu soruyu yayınladığımda, henüz anlayamadım. Ben soruyu güncelleyeceğiz. Ayrıca, 'komşu' işlevinin imzasını ekleyeceğiz. Teşekkürler! – Colby