Thread overview | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
July 08, 2014 array help. | ||||
---|---|---|---|---|
| ||||
Hi, I have the following array. [ [ [], [], [[0, 1] [0, 2]], [[0, 0] [0, 3]] ] [ [], [], [[1, 1] [1, 2]], [[1, 0] [1, 3]] ] ] and would like it to be arranged like [ [ [[0, 1] [0, 2]], [[0, 0] [0, 3]], [], [] ] [ [[1, 1] [1, 2]], [[1, 0] [1, 3]], [], [] ] ] Any ideas welcome. NA |
July 08, 2014 Re: array help. | ||||
---|---|---|---|---|
| ||||
Posted in reply to NA |
> Any ideas welcome.
>
> NA
Use std.algorithm.sort with a custom comparison function.
|
July 08, 2014 Re: array help. | ||||
---|---|---|---|---|
| ||||
Posted in reply to NA | NA:
> Any ideas welcome.
Is this good enough?
void main() {
import std.algorithm: swap;
int[][][][] a =
[[[],
[],
[[0, 1], [0, 2]],
[[0, 0], [0, 3]]
],
[[],
[],
[[1, 1], [1, 2]],
[[1, 0], [1, 3]]
]
];
int[][][][] b =
[[[[0, 1], [0, 2]],
[[0, 0], [0, 3]],
[],
[],
],
[[[1, 1], [1, 2]],
[[1, 0], [1, 3]],
[],
[]
]
];
foreach (s1; a) {
swap(s1[0], s1[2]);
swap(s1[1], s1[3]);
}
assert(a == b);
}
Bye,
bearophile
|
July 08, 2014 Re: array help. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tobias Pankrath | Tobias Pankrath:
> Use std.algorithm.sort with a custom comparison function.
It's a very nice example of learning algorithms and data fitting. I have shown an answer very fitted (perhaps over-fitted) on the given example. With just the given data there is no way to know how much general the problem is :-)
Bye,
bearophile
|
July 08, 2014 Re: array help. | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On Tuesday, 8 July 2014 at 18:16:55 UTC, bearophile wrote:
> NA:
>
>> Any ideas welcome.
>
> Is this good enough?
>
> void main() {
> import std.algorithm: swap;
>
> int[][][][] a =
> [[[],
> [],
> [[0, 1], [0, 2]],
> [[0, 0], [0, 3]]
> ],
> [[],
> [],
> [[1, 1], [1, 2]],
> [[1, 0], [1, 3]]
> ]
> ];
>
> int[][][][] b =
> [[[[0, 1], [0, 2]],
> [[0, 0], [0, 3]],
> [],
> [],
> ],
> [[[1, 1], [1, 2]],
> [[1, 0], [1, 3]],
> [],
> []
> ]
> ];
>
> foreach (s1; a) {
> swap(s1[0], s1[2]);
> swap(s1[1], s1[3]);
> }
> assert(a == b);
> }
>
>
> Bye,
> bearophile
Thanks but
int[][][][] a =
[[[],
[],
[],
[],
[[0, 1], [0, 2]],
[[0, 0], [0, 3]]
],
[[],
[],
[],
[],
[[1, 1], [1, 2]],
[[1, 0], [1, 3]]
]
];
will not work and no I can't sort it.
Cheers.
|
July 08, 2014 Re: array help. | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On Tuesday, 8 July 2014 at 18:26:20 UTC, bearophile wrote: > Tobias Pankrath: > >> Use std.algorithm.sort with a custom comparison function. > > It's a very nice example of learning algorithms and data fitting. I have shown an answer very fitted (perhaps over-fitted) on the given example. I had your solution in mind, too, as a hint that the problem might be underspecified. > With just the given data there is no way to know how much general the problem is :-) Yeah, but I hope at least he knows it. |
July 08, 2014 Re: array help. | ||||
---|---|---|---|---|
| ||||
Posted in reply to NA | NA:
> will not work and no I can't sort it.
Why no sort?
void main() {
import std.algorithm: sort, SwapStrategy;
import std.array: empty;
int[][][][] a =
[[[],
[],
[],
[],
[[0, 1], [0, 2]],
[[0, 0], [0, 3]]
],
[[],
[],
[],
[],
[[1, 1], [1, 2]],
[[1, 0], [1, 3]]
]
];
int[][][][] b =
[[[[0, 1], [0, 2]],
[[0, 0], [0, 3]],
[],
[],
[],
[]
],
[[[1, 1], [1, 2]],
[[1, 0], [1, 3]],
[],
[],
[],
[]
]
];
foreach (s1; a)
s1.sort!(q{ a.empty < b.empty }, SwapStrategy.stable);
assert(a == b);
}
Bye,
bearophile
|
July 08, 2014 Re: array help. | ||||
---|---|---|---|---|
| ||||
Posted in reply to NA |
>
> will not work and no I can't sort it.
>
> Cheers.
What are you trying to do? To reorder the elements of a sequence in a specified manner is called sorting, where I live.
|
July 08, 2014 Re: array help. | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On Tuesday, 8 July 2014 at 18:40:37 UTC, bearophile wrote:
> NA:
>
>> will not work and no I can't sort it.
>
> Why no sort?
Thanks,
It works as expected.
As for the sort - wasn't thinking straight.
Cheers,
NA
|
Copyright © 1999-2021 by the D Language Foundation