ソートされた配列を作成しようとしていますが、作成方法を理解するのに苦労しています。文字列 (s1) と別の配列 (a1、a2、a3、...) があります。
文字列と配列を使用して新しい配列を作成したい。s1 - ar - s1 - ar - s1 -ar の順番で並べたいと思います。
*ar = ランダムな順序の元の配列。
この配列を作成するにはどうすればよいですか?
助けてくれてありがとう
*編集: 代替インデックスごとに s1 文字列を持つシャッフルされた配列が欲しい
ソートされた配列を作成しようとしていますが、作成方法を理解するのに苦労しています。文字列 (s1) と別の配列 (a1、a2、a3、...) があります。
文字列と配列を使用して新しい配列を作成したい。s1 - ar - s1 - ar - s1 -ar の順番で並べたいと思います。
*ar = ランダムな順序の元の配列。
この配列を作成するにはどうすればよいですか?
助けてくれてありがとう
*編集: 代替インデックスごとに s1 文字列を持つシャッフルされた配列が欲しい
私が正しく理解している場合は、新しい配列を作成してから、1つずつ配列を埋める必要があります。したがって、文字列を挿入するのと同じように、要素がなくなるまで配列からランダムな要素を取得します。
元の配列を変更する場合は、変更可能である必要があります(どの言語を使用していますか?)
Objective-cでは次のようになります。
NSString* string;
NSArray* array;
NSMutableArray* temparray = [NSMutableArray arrayWithArray:array];
NSMutableArray* result = [[NSMutableArray alloc] initWithCapacity:[array count]*2];
for (int i=0; i< [array count];i++) {
[result addObject:string];
int index = rand() % [temparray count];
[result addObject:[temparray objectAtIndex:index]];
[temparray removeObjectAtIndex:index];
}
NSMutableArrayを見てください:
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"a1", @"a2", @"a3",nil];
[array insertObject:@"s1" atIndex:0]; // add as first object
[array addObject:@"s2"]; // add as last object
// sort
[array sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
// swap elements
[array exchangeObjectAtIndex:1 withObjectAtIndex:2];
for (NSString *s in array)
{
NSLog(@"elemnt: %@", s);
}
配列をシャッフルし、すべての偶数インデックスに文字列を追加することになりました。
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"a1", @"a2", @"a3", @"a4", @"a5",nil];
[array shuffle];
for (int i = 0 ; i<array.count; i=i+2) {
[array insertObject:@"s1" atIndex:i];
}
NSLog(@"%@",array);
これが私が配列をシャッフルした方法です
NSMutableArray+Shuffling.h
@interface NSMutableArray (Shuffling)
- (void)shuffle;
@end
NSMutableArray+Shuffling.m
#import "NSMutableArray+Shuffling.h"
@implementation NSMutableArray (Shuffling)
- (void)shuffle
{
for (uint i = 0; i < self.count; ++i)
{
// Select a random element between i and end of array to swap with.
int nElements = self.count - i;
int n = arc4random_uniform(nElements) + i;
[self exchangeObjectAtIndex:i withObjectAtIndex:n];
}
}
@end
これは、出力が次のように見えるものです Array (s1, a3, s1, a5, s1, a4, s1, a2, s1, a1)
申し訳ありませんが、質問の表現が不十分でした。