2015-06-06 10 views
5

2 boole dizisini karşılaştırıp eşleşen olmayan booleanları listelemenin nasıl olacağını merak ediyorum.2 diziyi karşılaştırın ve farklılıkları listeleyin - Swift

Basit bir 2 dizi örneği yazdım.

let array1 = [true, false, true, false] 
let array2 = [true, true, true, true] 

nasıl dizi1 & dizi2 karşılaştırmak ve non eşleştirme görüntüler. Bir sınav oyunu için kullanıcı sonuçlarını kontrol etmek için bunu yapmaya çalışıyorum.

Teşekkürler!

+0

Gerçekten hiç bir fikrin yok mu? – dasdom

+0

Sorun şu ki, cevabın ne düşündüğün belli değil. Bu giriş için ne gibi bir sonuç istersiniz? Dizin listesi ister misiniz? Bir dizi mi? Ne? Ve diğerinden daha fazla boole sahipse cevap ne olmalı? Biri boşsa? – matt

+0

Ve bu dizi nasıl görünmeli? _specify_! Aklında "doğru cevap" nedir? – matt

cevap

24

İşte bir uygulama, ama sonra olan biri olup olmadığını size cevap olması gerektiğini düşündüğünü belirtilmemiş çünkü, söylemek tamamen imkansız:

let answer = zip(array1, array2).map {$0.0 == $0.1} 

verir O Yanıtın doğru yanıtla eşleşmesi durumunda Bool değerlerinin bir listesi, true, yoksa false.

Ama ne istediğinizi söyleyelim, doğru olan yanıtların dizinlerini listesinin bir listesiydi. Sonra söyleyebiliriz:

let answer = zip(array1, array2).enumerated().filter() { 
    $1.0 == $1.1 
}.map{$0.0} 

o cevapların endekslerinin bir listesini isterseniz değil doğru olduğunu, sadece != için == değiştirin.

+0

İstediğiniz şeyin, doğru ya da yanlış cevapların _indexes_ listesi olduğunu düşündüğümüz başka bir uygulama ekledik. – matt

+0

Takdir et! Çok teşekkür ederim. – simlimsd3

+6

Gerçekten harika olan şey, bu cevabın 'map',' filter', 'zip' ve' numaralandırmayı 'birlikte dahil etmeyi başarmış olmasıdır - Swift’de dizilerle çalışmak için bilmeniz gereken önemli konular. sadece 'küçült' atlandı - bu soru için bir kullanım bulamadı). :) – matt