Cody

# Problem 1237. It's race time! Write a faster function than the test suite call of unique().

Solution 199405

Submitted on 1 Feb 2013 by Tomasz
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

This solution is outdated. To rescore this solution, log in.

### Test Suite

Test Status Code Input and Output
1   Pass
%% x = rand(100000, 1); tic y_correct = unique(x); t_unique = toc tic y_myunique = my_unique(x); t_myunique = toc assert(isequal(sort(my_unique(x)),y_correct) && t_unique > t_myunique)

``` t_unique = 0.0366 Elapsed time is 0.000875 seconds. x = 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0001 0.0002 0.0002 0.0002 0.0002 0.0002 0.0002 0.0002 0.0002 0.0002 0.0002 0.0002 0.0002 0.0003 0.0003 0.0003 0.0003 0.0003 0.0003 0.0003 0.0003 0.0003 0.0004 0.0004 0.0004 0.0004 0.0004 0.0004 0.0004 0.0004 0.0004 0.0005 0.0005 0.0005 0.0005 0.0005 0.0005 0.0006 0.0006 0.0006 0.0006 0.0006 0.0006 0.0006 0.0006 0.0006 0.0006 0.0007 0.0007 0.0007 0.0007 0.0007 0.0007 0.0007 0.0007 0.0007 0.0007 0.0007 0.0007 0.0008 0.0008 0.0008 0.0008 0.0008 0.0008 0.0008 0.0009 0.0009 0.0009 0.0009 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0011 0.0011 0.0011 0.0011 0.0011 0.0011 0.0011 0.0011 0.0011 0.0011 0.0011 0.0011 0.0012 0.0012 0.0012 0.0012 0.0012 0.0012 0.0012 0.0012 0.0012 0.0012 0.0013 0.0013 0.0013 0.0013 0.0013 0.0013 0.0013 0.0013 0.0013 0.0013 0.0013 0.0013 0.0013 0.0013 0.0013 0.0014 0.0014 0.0014 0.0014 0.0014 0.0014 0.0014 0.0015 0.0015 0.0015 0.0015 0.0015 0.0015 0.0015 0.0015 0.0015 0.0015 0.0015 0.0015 0.0016 0.0016 0.0016 0.0016 0.0016 0.0016 0.0016 0.0016 0.0016 0.0016 0.0016 0.0016 0.0017 0.0017 0.0017 0.0017 0.0017 0.0017 0.0017 0.0017 0.0017 0.0017 0.0017 0.0017 0.0018 0.0018 0.0018 0.0018 0.0018 0.0018 0.0018 0.0018 0.0018 0.0018 0.0018 0.0018 0.0018 0.0018 0.0019 0.0019 0.0019 0.0019 0.0019 0.0019 0.0019 0.0019 0.0019 0.0020 0.0020 0.0020 0.0020 0.0020 0.0021 0.0021 0.0021 0.0021 0.0021 0.0021 0.0022 0.0022 0.0022 0.0022 0.0022 0.0022 0.0022 0.0022 0.0023 0.0023 0.0023 0.0023 0.0023 0.0023 0.0023 0.0023 0.0023 0.0023 0.0024 0.0024 0.0024 0.0024 0.0024 0.0024 0.0024 0.0024 0.0025 0.0025 0.0025 0.0025 0.0025 0.0025 0.0025 0.0025 0.0025 0.0025 0.0025 0.0025 0.0025 0.0025 0.0025 0.0025 0.0026 0.0026 0.0026 0.0026 0.0026 0.0026 0.0026 0.0026 0.0026 0.0027 0.0027 0.0027 0.0027 0.0027 0.0027 0.0027 0.0027 0.0027 0.0027 0.0028 0.0028 0.0028 0.0028 0.0028 0.0028 0.0028 0.0028 0.0028 0.0028 0.0029 0.0029 0.0029 0.0029 0.0029 0.0029 0.0029 0.0029 0.0029 0.0029 0.0030 0.0030 0.0030 0.0030 0.0030 0.0030 0.0031 0.0031 0.0031 0.0031 0.0031 0.0031 0.0031 0.0031 0.0031 0.0031 0.0031 0.0031 0.0031 0.0031 0.0032 0.0032 0.0032 0.0032 0.0032 0.0032 0.0032 0.0032 0.0033 0.0033 0.0033 0.0033 0.0033 0.0033 0.0033 0.0033 0.0033 0.0033 0.0033 0.0034 0.0034 0.0034 0.0034 0.0034 0.0034 0.0034 0.0034 0.0034 0.0034 0.0035 0.0035 0.0035 0.0035 0.0036 0.0036 0.0036 0.0036 0.0036 0.0036 0.0036 0.0036 0.0036 0.0036 0.0036 0.0036 0.0037 0.0037 0.0037 0.0037 0.0037 0.0038 0.0038 0.0038 0.0038 0.0038 0.0039 0.0039 0.0039 0.0039 0.0039 0.0039 0.0039 0.0039 0.0039 0.0039 0.0040 0.0040 0.0040 0.0040 0.0040 0.0040 0.0040 0.0041 0.0041 0.0041 0.0041 0.0041 0.0041 0.0041 0.0041 0.0041 0.0041 0.0041 0.0041 0.0042 0.0042 0.0042 0.0042 0.0043 0.0043 0.0043 0.0043 0.0043 0.0043 0.0043 0.0044 0.0044 0.0044 0.0044 0.0044 0.0044 0.0044 0.0044 0.0044 0.0044 0.0044 0.0044 0.0044 0.0044 0.0045 0.0045 0.0045 0.0045 0.0045 0.0045 0.0045 0.0045 0.0045 0.0045 0.0046 0.0046 0.0046 0.0046 0.0046 0.0046 0.0046 0.0046 0.0046 0.0046 0.0046 0.0046 0.0046 0.0046 0.0047 0.0047 0.0047 0.0047 0.0047 0.0047 0.0047 0.0047 0.0047 0.0047 0.0047 0.0047 0.0048 0.0048 0.0048 0.0048 0.0048 0.0048 0.0048 0.0048 0.0048 0.0049 0.0049 0.0049 0.0049 0.0049 0.0049 0.0049 0.0049 0.0049 0.0049 0.0049 0.0049 0.0049 0.0050 0.0050 0.0050 0.0050 0.0050 0.0050 0.0050 0.0050 0.0050 0.0050 0.0050 0.0051 0.0051 0.0051 0.0051 0.0051 0.0051 0.0051 0.0051 0.0051 0.0051 0.0051 0.0052 0.0052 0.0052 0.0052 0.0052 0.0052 0.0052 0.0052 0.0053 0.0053 0.0053 0.0053 0.0053 0.0053 0.0053 0.0053 0.0053 0.0054 0.0054 0.0054 0.0054 0.0054 0.0054 0.0054 0.0054 0.0054 0.0055 0.0055 0.0055 0.0055 0.0055 0.0055 0.0055 0.0055 0.0055 0.0056 0.0056 0.0056 0.0056 0.0056 0.0056 0.0056 0.0056 0.0056 0.0056 0.0057 0.0057 0.0057 0.0057 0.0057 0.0057 0.0057 0.0057 0.0057 0.0057 0.0057 0.0058 0.0058 0.0058 0.0058 0.0058 0.0058 0.0058 0.0058 0.0058 0.0058 0.0059 0.0059 0.0059 0.0059 0.0059 0.0059 0.0059 0.0059 0.0059 0.0059 0.0059 0.0059 0.0060 0.0060 0.0060 0.0060 0.0060 0.0060 0.0060 0.0060 0.0060 0.0060 0.0060 0.0060 0.0060 0.0060 0.0060 0.0061 0.0061 0.0061 0.0061 0.0061 0.0061 0.0061 0.0061 0.0061 0.0062 0.0062 0.0062 0.0062 0.0062 0.0062 0.0062 0.0062 0.0062 0.0062 0.0062 0.0062 0.0062 0.0063 0.0063 0.0063 0.0063 0.0063 0.0063 0.0063 0.0064 0.0064 0.0064 0.0064 0.0064 0.0064 0.0064 0.0064 0.0064 0.0064 0.0064 0.0065 0.0065 0.0065 0.0065 0.0065 0.0065 0.0065 0.0065 0.0065 0.0065 0.0065 0.0065 0.0065 0.0066 0.0066 0.0066 0.0066 0.0066 0.0066 0.0066 0.0066 0.0066 0.0067 0.0067 0.0067 0.0067 0.0067 0.0067 0.0067 0.0068 0.0068 0.0068 0.0068 0.0068 0.0068 0.0068 0.0068 0.0068 0.0068 0.0068 0.0068 0.0068 0.0068 0.0068 0.0068 0.0069 0.0069 0.0069 0.0069 0.0069 0.0069 0.0069 0.0069 0.0069 0.0069 0.0069 0.0069 0.0069 0.0070 0.0070 0.0070 0.0070 0.0070 0.0070 0.0070 0.0070 0.0070 0.0071 0.0071 0.0071 0.0071 0.0071 0.0071 0.0071 0.0071 0.0072 0.0072 0.0072 0.0072 0.0072 0.0072 0.0072 0.0072 0.0072 0.0072 0.0072 0.0072 0.0073 0.0073 0.0073 0.0073 0.0073 0.0073 0.0073 0.0073 0.0073 0.0073 0.0073 0.0073 0.0074 0.0074 0.0074 0.0074 0.0074 0.0074 0.0074 0.0074 0.0074 0.0074 0.0074 0.0074 0.0074 0.0075 0.0075 0.0075 0.0075 0.0075 0.0075 0.0075 0.0075 0.0075 0.0076 0.0076 0.0076 0.0076 0.0076 0.0076 0.0076 0.0076 0.0076 0.0076 0.0077 0.0077 0.0077 0.0078 0.0078 0.0078 0.0078 0.0078 0.0078 0.0078 0.0078 0.0078 0.0078 0.0078 0.0079 0.0079 0.0079 0.0079 0.0079 0.0079 0.0079 0.0079 0.0079 0.0079 0.0079 0.0079 0.0080 0.0080 0.0080 0.0080 0.0080 0.0080 0.0080 0.0081 0.0081 0.0081 0.0081 0.0081 0.0082 0.0082 0.0082 0.0082 0.0082 0.0082 0.0082 0.0082 0.0082 0.0082 0.0082 0.0082 0.0082 0.0082 0.0082 0.0082 0.0082 0.0082 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0083 0.0084 0.0084 0.0084 0.0084 0.0084 0.0084 0.0084 0.0084 0.0084 0.0084 0.0085 0.0085 0.0085 0.0085 0.0085 0.0085 0.0085 0.0085 0.0085 0.0085 0.0085 0.0085 0.0085 0.0086 0.0086 0.0086 0.0086 0.0086 0.0086 0.0086 0.0086 0.0086 0.0086 0.0086 0.0086 0.0086 0.0086 0.0087 0.0087 0.0087 0.0087 0.0087 0.0087 0.0087 0.0087 0.0087 0.0087 0.0087 0.0087 0.0088 0.0088 0.0088 0.0088 0.0088 0.0088 0.0088 0.0088 0.0089 0.0089 0.0089 0.0089 0.0089 0.0089 0.0089 0.0089 0.0089 0.0090 0.0090 0.0090 0....```

2   Pass
%% x = rand(10000, 1); tic y_correct = unique(x); t_unique = toc tic y_my_unique = my_unique(x); t_my_unique = toc assert(isequal(sort(my_unique(x)),y_correct) && t_unique > t_my_unique)

``` t_unique = 0.0012 Elapsed time is 0.000015 seconds. x = 0.0001 0.0003 0.0004 0.0004 0.0005 0.0007 0.0007 0.0008 0.0008 0.0009 0.0010 0.0010 0.0010 0.0012 0.0013 0.0013 0.0013 0.0014 0.0015 0.0016 0.0016 0.0017 0.0017 0.0018 0.0018 0.0018 0.0018 0.0019 0.0020 0.0020 0.0021 0.0021 0.0021 0.0021 0.0022 0.0024 0.0024 0.0024 0.0026 0.0026 0.0028 0.0028 0.0028 0.0029 0.0029 0.0030 0.0033 0.0034 0.0035 0.0036 0.0036 0.0037 0.0037 0.0037 0.0037 0.0038 0.0039 0.0039 0.0039 0.0039 0.0040 0.0041 0.0041 0.0043 0.0043 0.0043 0.0044 0.0045 0.0045 0.0046 0.0046 0.0047 0.0049 0.0050 0.0051 0.0051 0.0051 0.0052 0.0053 0.0053 0.0054 0.0054 0.0054 0.0054 0.0055 0.0055 0.0058 0.0058 0.0058 0.0059 0.0060 0.0060 0.0062 0.0063 0.0063 0.0064 0.0065 0.0065 0.0065 0.0065 0.0066 0.0069 0.0071 0.0071 0.0073 0.0073 0.0074 0.0074 0.0074 0.0075 0.0077 0.0078 0.0082 0.0082 0.0085 0.0085 0.0086 0.0087 0.0087 0.0087 0.0090 0.0092 0.0093 0.0095 0.0096 0.0098 0.0098 0.0100 0.0100 0.0100 0.0101 0.0102 0.0102 0.0103 0.0103 0.0103 0.0104 0.0105 0.0106 0.0106 0.0108 0.0108 0.0112 0.0113 0.0114 0.0114 0.0114 0.0114 0.0116 0.0117 0.0117 0.0118 0.0119 0.0120 0.0121 0.0121 0.0123 0.0123 0.0123 0.0123 0.0124 0.0124 0.0124 0.0126 0.0126 0.0126 0.0127 0.0127 0.0129 0.0129 0.0131 0.0131 0.0132 0.0132 0.0132 0.0133 0.0133 0.0133 0.0136 0.0137 0.0137 0.0138 0.0139 0.0139 0.0141 0.0146 0.0146 0.0147 0.0148 0.0151 0.0152 0.0152 0.0153 0.0153 0.0153 0.0154 0.0155 0.0155 0.0158 0.0159 0.0160 0.0161 0.0165 0.0169 0.0170 0.0172 0.0174 0.0175 0.0177 0.0179 0.0180 0.0183 0.0183 0.0185 0.0185 0.0186 0.0187 0.0187 0.0187 0.0190 0.0192 0.0193 0.0193 0.0194 0.0195 0.0197 0.0199 0.0202 0.0203 0.0203 0.0207 0.0209 0.0209 0.0211 0.0213 0.0214 0.0214 0.0215 0.0218 0.0219 0.0219 0.0219 0.0221 0.0222 0.0223 0.0223 0.0226 0.0227 0.0228 0.0228 0.0229 0.0229 0.0230 0.0231 0.0233 0.0233 0.0235 0.0235 0.0235 0.0236 0.0237 0.0239 0.0239 0.0240 0.0244 0.0244 0.0245 0.0245 0.0246 0.0246 0.0246 0.0247 0.0247 0.0248 0.0248 0.0249 0.0250 0.0250 0.0252 0.0253 0.0254 0.0255 0.0256 0.0256 0.0257 0.0257 0.0257 0.0257 0.0257 0.0257 0.0259 0.0260 0.0260 0.0261 0.0263 0.0265 0.0267 0.0267 0.0268 0.0268 0.0271 0.0272 0.0273 0.0274 0.0275 0.0275 0.0277 0.0277 0.0278 0.0278 0.0279 0.0280 0.0280 0.0280 0.0280 0.0281 0.0282 0.0282 0.0282 0.0283 0.0284 0.0286 0.0287 0.0288 0.0289 0.0289 0.0289 0.0289 0.0290 0.0290 0.0292 0.0293 0.0293 0.0295 0.0295 0.0295 0.0295 0.0295 0.0295 0.0296 0.0298 0.0299 0.0299 0.0300 0.0301 0.0301 0.0304 0.0304 0.0304 0.0305 0.0305 0.0306 0.0306 0.0306 0.0307 0.0307 0.0308 0.0308 0.0309 0.0310 0.0313 0.0314 0.0315 0.0315 0.0315 0.0317 0.0317 0.0320 0.0324 0.0326 0.0331 0.0331 0.0331 0.0331 0.0332 0.0335 0.0337 0.0338 0.0338 0.0340 0.0341 0.0342 0.0343 0.0343 0.0344 0.0344 0.0344 0.0345 0.0347 0.0348 0.0351 0.0352 0.0353 0.0353 0.0354 0.0359 0.0360 0.0361 0.0361 0.0362 0.0362 0.0362 0.0363 0.0363 0.0364 0.0365 0.0366 0.0367 0.0368 0.0368 0.0368 0.0369 0.0370 0.0370 0.0372 0.0372 0.0372 0.0375 0.0375 0.0376 0.0376 0.0377 0.0377 0.0377 0.0379 0.0380 0.0380 0.0380 0.0381 0.0382 0.0382 0.0383 0.0388 0.0392 0.0393 0.0396 0.0397 0.0398 0.0398 0.0400 0.0401 0.0402 0.0405 0.0406 0.0407 0.0408 0.0409 0.0410 0.0410 0.0411 0.0414 0.0416 0.0417 0.0417 0.0417 0.0419 0.0421 0.0423 0.0423 0.0424 0.0425 0.0425 0.0426 0.0426 0.0428 0.0429 0.0431 0.0431 0.0433 0.0434 0.0435 0.0436 0.0439 0.0442 0.0444 0.0445 0.0446 0.0446 0.0447 0.0449 0.0450 0.0451 0.0451 0.0452 0.0455 0.0455 0.0457 0.0460 0.0460 0.0460 0.0460 0.0461 0.0461 0.0461 0.0462 0.0462 0.0462 0.0462 0.0463 0.0464 0.0464 0.0464 0.0466 0.0467 0.0468 0.0468 0.0469 0.0470 0.0470 0.0471 0.0472 0.0472 0.0472 0.0472 0.0473 0.0474 0.0475 0.0477 0.0478 0.0480 0.0480 0.0481 0.0481 0.0482 0.0482 0.0483 0.0483 0.0484 0.0484 0.0486 0.0486 0.0487 0.0488 0.0490 0.0490 0.0494 0.0494 0.0495 0.0497 0.0498 0.0498 0.0500 0.0500 0.0502 0.0503 0.0504 0.0506 0.0507 0.0507 0.0508 0.0509 0.0509 0.0510 0.0512 0.0513 0.0513 0.0513 0.0514 0.0516 0.0516 0.0517 0.0518 0.0518 0.0519 0.0519 0.0521 0.0521 0.0521 0.0521 0.0524 0.0525 0.0525 0.0527 0.0527 0.0527 0.0529 0.0530 0.0531 0.0532 0.0533 0.0533 0.0534 0.0535 0.0535 0.0535 0.0535 0.0536 0.0537 0.0538 0.0540 0.0541 0.0541 0.0542 0.0542 0.0542 0.0542 0.0546 0.0547 0.0548 0.0549 0.0549 0.0550 0.0552 0.0553 0.0554 0.0555 0.0556 0.0556 0.0556 0.0558 0.0558 0.0559 0.0560 0.0561 0.0561 0.0563 0.0563 0.0564 0.0566 0.0566 0.0567 0.0567 0.0569 0.0569 0.0571 0.0571 0.0575 0.0575 0.0577 0.0577 0.0581 0.0581 0.0582 0.0585 0.0585 0.0590 0.0591 0.0592 0.0592 0.0592 0.0592 0.0592 0.0594 0.0598 0.0601 0.0601 0.0601 0.0602 0.0602 0.0602 0.0603 0.0604 0.0605 0.0607 0.0608 0.0609 0.0609 0.0612 0.0614 0.0614 0.0615 0.0616 0.0616 0.0617 0.0621 0.0622 0.0622 0.0624 0.0625 0.0626 0.0627 0.0628 0.0629 0.0630 0.0630 0.0630 0.0630 0.0631 0.0632 0.0634 0.0636 0.0637 0.0638 0.0638 0.0638 0.0638 0.0639 0.0639 0.0640 0.0641 0.0641 0.0641 0.0641 0.0641 0.0644 0.0646 0.0648 0.0650 0.0650 0.0651 0.0651 0.0652 0.0652 0.0653 0.0653 0.0654 0.0654 0.0654 0.0656 0.0657 0.0657 0.0659 0.0660 0.0664 0.0665 0.0665 0.0667 0.0670 0.0672 0.0673 0.0675 0.0676 0.0676 0.0677 0.0677 0.0679 0.0682 0.0685 0.0685 0.0686 0.0686 0.0686 0.0689 0.0689 0.0690 0.0691 0.0691 0.0696 0.0697 0.0697 0.0698 0.0699 0.0702 0.0703 0.0705 0.0709 0.0711 0.0711 0.0711 0.0712 0.0712 0.0713 0.0713 0.0715 0.0716 0.0716 0.0717 0.0718 0.0718 0.0718 0.0718 0.0719 0.0720 0.0720 0.0720 0.0721 0.0723 0.0725 0.0726 0.0728 0.0729 0.0730 0.0731 0.0731 0.0732 0.0735 0.0737 0.0737 0.0738 0.0739 0.0740 0.0740 0.0742 0.0742 0.0743 0.0743 0.0744 0.0745 0.0747 0.0748 0.0749 0.0749 0.0750 0.0751 0.0754 0.0754 0.0755 0.0755 0.0755 0.0756 0.0757 0.0757 0.0759 0.0761 0.0762 0.0763 0.0764 0.0764 0.0765 0.0766 0.0768 0.0769 0.0771 0.0772 0.0772 0.0775 0.0776 0.0776 0.0776 0.0778 0.0778 0.0778 0.0778 0.0781 0.0783 0.0784 0.0784 0.0785 0.0786 0.0786 0.0786 0.0787 0.0787 0.0789 0.0791 0.0792 0.0793 0.0793 0.0794 0.0794 0.0795 0.0797 0.0797 0.0800 0.0800 0.0801 0.0804 0.0804 0.0804 0.0805 0.0806 0.0806 0.0806 0.0808 0.0809 0.0811 0.0814 0.0814 0.0815 0.0816 0.0816 0.0819 0.0821 0.0822 0.0825 0.0827 0.0828 0.0830 0.0832 0.0832 0.0833 0.0834 0.0837 0.0837 0.0838 0.0838 0.0840 0.0840 0.0840 0.0841 0.0841 0.0843 0.0843 0.0843 0.0844 0.0846 0.0847 0.0849 0.0850 0.0851 0.0855 0.0856 0.0858 0.0858 0.0859 0.0859 0.0859 0.0860 0.0862 0.0866 0.0866 0.0867 0.0869 0....```

3   Fail