(알고리즘) 52 장의 카드 (크 고 작은 왕 포함 하지 않 음) 는 51 장 밖 에 없 는데 어느 것 을 잃 어 버 렸 는 지 어떻게 확인 합 니까?
본 고 는 Objective - C 1 을 사용 합 니 다. 우선, 우 리 는 포커 클래스 를 만 들 었 습 니 다.
@interface PokerModel : NSObject
//
@property (nonatomic, assign) NSInteger color;
//
@property (nonatomic, assign) NSInteger number;
+ (instancetype) pokerWithColor:(NSInteger )color
number:(NSInteger )number;
@end
@implementation PokerModel
+ (instancetype) pokerWithColor:(NSInteger )color
number:(NSInteger )number;
{
PokerModel *poker = [[PokerModel alloc]init];
poker.color = color;
poker.number = number;
return poker;
}
/**
,
*/
- (BOOL)isEqual:(id)object
{
if (![object isMemberOfClass:[self class]])
return false;
PokerModel *poker = object;
return (poker.color == self.color)
&& (poker.number == self.number);
}
- (NSString *)description
{
return [NSString stringWithFormat:@"%ld - %ld",self.color,self.number];
}
@end
클래스 의 코드 는 설명 하지 않 습 니 다. 2. 다음 에 우 리 는 먼저 모든 카드 를 만 듭 니 다.
//
NSInteger allColorCount = 4;
//
NSInteger allNumberCount = 13;
// ( 52 )
NSMutableArray *allPoker = [NSMutableArray array];
for (NSInteger color = 1; color <= allColorCount ; color ++)
{
for (NSInteger number = 1; number <= allNumberCount ; number ++)
{
PokerModel *poker = [PokerModel pokerWithColor:color number:number];
[allPoker addObject:poker];
}
}
3. 잃 어 버 린 카드 를 무 작위 로 모 의 하여 현재 남 은 51 장의 카드 를 얻는다.
//
NSMutableArray *operatePoker = [NSMutableArray arrayWithArray:allPoker];
//
PokerModel *losePoker = [PokerModel pokerWithColor:arc4random()%allColorCount + 1 number:arc4random()%allNumberCount + 1];
//
[operatePoker removeObject:losePoker];
NSLog(@"losePoker %@",losePoker);
인쇄 된 결 과 는?
losePoker 4 - 12
4. 이제 실현 의 포인트
//
NSMutableSet *allPokerSet = [NSMutableSet setWithArray:allPoker];
//
NSMutableSet *currentPokerSet = [NSMutableSet setWithArray:currentPoker];
// 。 ,
[allPokerSet minusSet:currentPokerSet];
//
NSLog(@"%@",allPokerSet);
인쇄 결과
{(
4 - 12
)}
5. 그 다음 에 확대 해서 우 리 는 더 간단 한 방법 이 있다. 왜냐하면 위 에 우 리 는 이미 다시 썼 기 때문이다.
- (BOOL)isEqual:(id)object
{
if (![object isMemberOfClass:[self class]])
return false;
PokerModel *poker = object;
return (poker.color == self.color)
&& (poker.number == self.number);
}
무늬 와 숫자 가 모두 같다 면 우 리 는 같은 장 이 라 고 생각한다.우리 의 큰 방법 은 서술 어 를 사용 하 는 것 이다. 코드 는 다음 과 같다.
NSPredicate *predicatePOker = [NSPredicate predicateWithFormat:@"NOT ( SELF IN %@ )",currentPoker];
NSArray *resultAry = [allPoker filteredArrayUsingPredicate:predicatePOker];
//
NSLog(@"losePoker %@",losePoker);
NSLog(@"%@",resultAry);
결 과 는 다음 과 같다.
losePoker 1 - 13
(
"1 - 13"
)
6. 그리고 더 독 한 것 은 모든 패 를 기 존 패 에서 빼 고 나머지 는 잃 어 버 린 것 이다.
[allPoker removeObjectsInArray:currentPoker];
NSLog(@"losePoker %@",losePoker);
NSLog(@"%@",allPoker);
결 과 는 다음 과 같다.
losePoker 2 - 3
(
"2 - 3"
)
이 를 통 해 알 수 있 듯 이 서술 어 를 사용 하면 몇 번 더 편리 하고 빠르게 실행 할 수 있 으 며 앞 뒤 두 번 인쇄 된 무늬 와 수 치 는 모두 같다.만일 당신 이 인내심 을 가지 고 다 보 았 다 면 부족 함 을 지적 해 주신 것 을 환영 합 니 다.당신 이 만약 좋 은 방안 이 있다 면, 우리 도 함께 진보 할 것 을 제기 해 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.