Skip to content

Instantly share code, notes, and snippets.

@keisukeYamagishi
Last active January 13, 2020 15:29
Show Gist options
  • Save keisukeYamagishi/7305137 to your computer and use it in GitHub Desktop.
Save keisukeYamagishi/7305137 to your computer and use it in GitHub Desktop.
//
// calc.h
// test
//
// Created by tomyAmi on 2013/10/12.
// Copyright (c) 2013年 keisuke yamagishi. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface calc : NSObject
-(void)calc:(NSArray*)A calcB:(NSArray*)B;
@end
//
// calc.m
// test
//
// Created by tomyAmi on 2013/10/12.
// Copyright (c) 2013年 keisuke yamagishi. All rights reserved.
//
#import "calc.h"
@implementation calc
-(void)calc:(NSArray*)A calcB:(NSArray*)B{
BOOL calcCheck;//条件を満たしてるかどうかの確認
BOOL calcCheckB;
calcCheck=NO;
calcCheck=NO;
static unsigned long count=0;//配列の要素数
NSNumber *one=@1;
NSNumber *bill=@4000000000;
for(NSNumber *checkA in A){
count++;
if(checkA>=one&&checkA<bill&&count<=1000000){
calcCheck=YES;
}else{
calcCheck=NO;
}
}
count=0;
for(NSNumber *checkB in B){
count++;
if(checkB>=one&&checkB<bill&&count<=1000){
calcCheckB=YES;
}else{
calcCheck=NO;
}
}
if(calcCheck==YES&&calcCheckB==YES){
//NSNumber *bill=@4000000000;
static int answer=0;
static int AC=0;//配列Aに入ってる同じ数字をカウント
static int BC=0;//同文
static NSNumber *points;//合計得点
static int sum=0;//A配列の要素数
static int Bsum=0;//B配列の要素数
static NSNumber *AN;//A配列の同じ数字
static NSNumber *BN;//B配列の同じ数字
A=[A sortedArrayUsingSelector:@selector(compare:)];//A配列をソート
B=[B sortedArrayUsingSelector:@selector(compare:)];//B配列をソート
//結果表示
NSLog(@"A%@",A);
NSLog(@"B%@",B);
do{//精査開始
for(int i=0;i<[A count];i++){//A配列の同じ数字を書き出す
if(A[sum]==A[i]){
AC++;
AN=A[i];
NSLog(@"AN==>%@***for*** AC===>%d A[]==>%@",AN,AC,A[sum]);
}
}
for(int i=0;i<[B count];i++){//B配列の同じ数字を書き出す
if(B[Bsum]==B[i]){
BC++;
BN=B[i];
NSLog(@"BN ==>%@ ***for*** BC==>%d B[]==>%@",BN,BC,B[Bsum]);
}
}
if(AN==BN){//書き出した数字同士が同じかどうかチェック!
int point=AC*BC;//同じ数字の数同士掛ける
printf("\n****AN==BN**** point(%d)=AC(%d)*BC(%d)\n",point,AC,BC);//表示する
answer=point+answer;//同じ数字同士をかけた数字を足す
//printf("\nanswer(%d)+point(%d)",answer,point);
points=[[NSNumber alloc]initWithInt:answer];//それをNSNumberにする
printf("\n中間答えpoint==>%d\n",answer);
}else if(AN!=BN){//書き出した数字が同じじゃなかった場合の処理
if(AC==1&&AN<BN){
BC=0;
}else if(AC==1&&AN>BN){
AC=0;
}else if(BC==1&&AN>BN){
AC=0;
}else if(BC==1&&AN<BN){
BC=0;
}else if(AC>1&&AN<BN){
BC=0;
}else if(AC>1&&AN>BN){
AC=0;
}
}
sum=sum+AC;//同じ数字を書き出さないようにカウントした分を足しておく
Bsum=Bsum+BC;//同意義
printf("\nsum==>%d Bsum===>%d\n",sum,Bsum);//確認のため値を出す
AC=0;//初期化
BC=0;//初期化
}while(sum!=[A count]&&Bsum!=[B count]);//配列の中身がなくなるまで続ける
NSLog(@"アンサーpoint==>%@",points);
//return points;
}else if(calcCheck==NO){
}
}
@end
//
// main.m
// test
//
// Created by tomyAmi on 2013/10/10.
// Copyright (c) 2013年 keisuke yamagishi. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "calc.h"
#import "voidvoid.h"
int main(int argc, const char * argv[])
{
NSArray *A=@[@1,@1,@2,@4,@6,@7,@9,@9,@34,@21,@21,@6,@7,@7,@23,@6,@5,@5,@6,@32,@23,@42,@21,@21,@32,@23,@21,@21,@21,@76,@456,@31,@21,@21,@21,@23,@56,@34,@21,@12,@12,@31,@12,@45,@23,@25,@24,@24,@21,@43,@21,@43,@23,@21,@23,@13,@12,@3999999999,@23,@34,@34,@12,@24];
NSArray *B=@[@1,@1,@2,@2,@2,@4,@7,@6,@9,@32,@32,@21,@34,@456,@34,@23,@21,@65,@76,@65,@42,@42,@456,@456,@12,@45,@23,@25,@24,@24,@21,@21,@54,@32,@21,@31,@32,@33,@43,@34,@35,@36,@37,@37,@38,@39,@40,@41,@3999999999];
calc *cObj=[calc new];
[cObj calc:A calcB:B];
dispatch_queue_t queue=dispatch_queue_create("jp.frenweh", nil);
for(int i=0;i<=10;i++){
dispatch_async(queue,^{
NSLog(@"まじっすかTV! %d",i);
});
}
NSLog(@"****");
//voidvoid *voidman=[[voidvoid alloc]init];
//[voidman month];
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment