Cody

# Problem 2587. Find indices of diagonal elements

Solution 2169491

Submitted on 22 Mar 2020 by Nikolaos Nikolaou
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

### Test Suite

Test Status Code Input and Output
1   Pass
x = [1 2 3;4 5 6;7 8 9]; a = [1 5 9]; assert(isequal(diag_indices(x,0),a))

B = 1 4 7 2 5 8 3 6 9 y = 1 5 9

2   Pass
x = magic(5); b = 5; assert(isequal(diag_indices(x,-4),b))

B = 1 6 11 16 21 2 7 12 17 22 3 8 13 18 23 4 9 14 19 24 5 10 15 20 25 y = 5

3   Pass
x = magic(5); a = 21; assert(isequal(diag_indices(x,4),a))

B = 1 6 11 16 21 2 7 12 17 22 3 8 13 18 23 4 9 14 19 24 5 10 15 20 25 y = 21

4   Pass
x = magic(5); z = 5; assert(isequal(diag_indices(x,-4),z))

B = 1 6 11 16 21 2 7 12 17 22 3 8 13 18 23 4 9 14 19 24 5 10 15 20 25 y = 5

5   Pass
x = magic(6); a = [19 26 33]; assert(isequal(diag_indices(x,3),a))

B = 1 7 13 19 25 31 2 8 14 20 26 32 3 9 15 21 27 33 4 10 16 22 28 34 5 11 17 23 29 35 6 12 18 24 30 36 y = 19 26 33

6   Pass
x1 = magic(50); y_correct = 50; assert(isequal(diag_indices(x1,-49),y_correct))

B = Columns 1 through 14 1 51 101 151 201 251 301 351 401 451 501 551 601 651 2 52 102 152 202 252 302 352 402 452 502 552 602 652 3 53 103 153 203 253 303 353 403 453 503 553 603 653 4 54 104 154 204 254 304 354 404 454 504 554 604 654 5 55 105 155 205 255 305 355 405 455 505 555 605 655 6 56 106 156 206 256 306 356 406 456 506 556 606 656 7 57 107 157 207 257 307 357 407 457 507 557 607 657 8 58 108 158 208 258 308 358 408 458 508 558 608 658 9 59 109 159 209 259 309 359 409 459 509 559 609 659 10 60 110 160 210 260 310 360 410 460 510 560 610 660 11 61 111 161 211 261 311 361 411 461 511 561 611 661 12 62 112 162 212 262 312 362 412 462 512 562 612 662 13 63 113 163 213 263 313 363 413 463 513 563 613 663 14 64 114 164 214 264 314 364 414 464 514 564 614 664 15 65 115 165 215 265 315 365 415 465 515 565 615 665 16 66 116 166 216 266 316 366 416 466 516 566 616 666 17 67 117 167 217 267 317 367 417 467 517 567 617 667 18 68 118 168 218 268 318 368 418 468 518 568 618 668 19 69 119 169 219 269 319 369 419 469 519 569 619 669 20 70 120 170 220 270 320 370 420 470 520 570 620 670 21 71 121 171 221 271 321 371 421 471 521 571 621 671 22 72 122 172 222 272 322 372 422 472 522 572 622 672 23 73 123 173 223 273 323 373 423 473 523 573 623 673 24 74 124 174 224 274 324 374 424 474 524 574 624 674 25 75 125 175 225 275 325 375 425 475 525 575 625 675 26 76 126 176 226 276 326 376 426 476 526 576 626 676 27 77 127 177 227 277 327 377 427 477 527 577 627 677 28 78 128 178 228 278 328 378 428 478 528 578 628 678 29 79 129 179 229 279 329 379 429 479 529 579 629 679 30 80 130 180 230 280 330 380 430 480 530 580 630 680 31 81 131 181 231 281 331 381 431 481 531 581 631 681 32 82 132 182 232 282 332 382 432 482 532 582 632 682 33 83 133 183 233 283 333 383 433 483 533 583 633 683 34 84 134 184 234 284 334 384 434 484 534 584 634 684 35 85 135 185 235 285 335 385 435 485 535 585 635 685 36 86 136 186 236 286 336 386 436 486 536 586 636 686 37 87 137 187 237 287 337 387 437 487 537 587 637 687 38 88 138 188 238 288 338 388 438 488 538 588 638 688 39 89 139 189 239 289 339 389 439 489 539 589 639 689 40 90 140 190 240 290 340 390 440 490 540 590 640 690 41 91 141 191 241 291 341 391 441 491 541 591 641 691 42 92 142 192 242 292 342 392 442 492 542 592 642 692 43 93 143 193 243 293 343 393 443 493 543 593 643 693 44 94 144 194 244 294 344 394 444 494 544 594 644 694 45 95 145 195 245 295 345 395 445 495 545 595 645 695 46 96 146 196 246 296 346 396 446 496 546 596 646 696 47 97 147 197 247 297 347 397 447 497 547 597 647 697 48 98 148 198 248 298 348 398 448 498 548 598 648 698 49 99 149 199 249 299 349 399 449 499 549 599 649 699 50 100 150 200 250 300 350 400 450 500 550 600 650 700 Columns 15 through 28 701 751 801 851 901 951 1001 1051 1101 1151 1201 1251 1301 1351 702 752 802 852 902 952 1002 1052 1102 1152 1202 1252 1302 1352 703 753 803 853 903 953 1003 1053 1103 1153 1203 1253 1303 1353 704 754 804 854 904 954 1004 1054 1104 1154 1204 1254 1304 1354 705 755 805 855 905 955 1005 1055 1105 1155 1205 1255 1305 1355 706 756 806 856 906 956 1006 1056 1106 1156 1206 1256 1306 1356 707 757 807 857 907 957 1007 1057 1107 1157 1207 1257 1307 1357 708 758 808 858 908 958 1008 1058 1108 1158 1208 1258 1308 1358 709 759 809 859 909 959 1009 1059 1109 1159 1209 125...

7   Pass
x2 = magic(50); y_correct = [49 100]; assert(isequal(diag_indices(x2,-48),y_correct))

B = Columns 1 through 14 1 51 101 151 201 251 301 351 401 451 501 551 601 651 2 52 102 152 202 252 302 352 402 452 502 552 602 652 3 53 103 153 203 253 303 353 403 453 503 553 603 653 4 54 104 154 204 254 304 354 404 454 504 554 604 654 5 55 105 155 205 255 305 355 405 455 505 555 605 655 6 56 106 156 206 256 306 356 406 456 506 556 606 656 7 57 107 157 207 257 307 357 407 457 507 557 607 657 8 58 108 158 208 258 308 358 408 458 508 558 608 658 9 59 109 159 209 259 309 359 409 459 509 559 609 659 10 60 110 160 210 260 310 360 410 460 510 560 610 660 11 61 111 161 211 261 311 361 411 461 511 561 611 661 12 62 112 162 212 262 312 362 412 462 512 562 612 662 13 63 113 163 213 263 313 363 413 463 513 563 613 663 14 64 114 164 214 264 314 364 414 464 514 564 614 664 15 65 115 165 215 265 315 365 415 465 515 565 615 665 16 66 116 166 216 266 316 366 416 466 516 566 616 666 17 67 117 167 217 267 317 367 417 467 517 567 617 667 18 68 118 168 218 268 318 368 418 468 518 568 618 668 19 69 119 169 219 269 319 369 419 469 519 569 619 669 20 70 120 170 220 270 320 370 420 470 520 570 620 670 21 71 121 171 221 271 321 371 421 471 521 571 621 671 22 72 122 172 222 272 322 372 422 472 522 572 622 672 23 73 123 173 223 273 323 373 423 473 523 573 623 673 24 74 124 174 224 274 324 374 424 474 524 574 624 674 25 75 125 175 225 275 325 375 425 475 525 575 625 675 26 76 126 176 226 276 326 376 426 476 526 576 626 676 27 77 127 177 227 277 327 377 427 477 527 577 627 677 28 78 128 178 228 278 328 378 428 478 528 578 628 678 29 79 129 179 229 279 329 379 429 479 529 579 629 679 30 80 130 180 230 280 330 380 430 480 530 580 630 680 31 81 131 181 231 281 331 381 431 481 531 581 631 681 32 82 132 182 232 282 332 382 432 482 532 582 632 682 33 83 133 183 233 283 333 383 433 483 533 583 633 683 34 84 134 184 234 284 334 384 434 484 534 584 634 684 35 85 135 185 235 285 335 385 435 485 535 585 635 685 36 86 136 186 236 286 336 386 436 486 536 586 636 686 37 87 137 187 237 287 337 387 437 487 537 587 637 687 38 88 138 188 238 288 338 388 438 488 538 588 638 688 39 89 139 189 239 289 339 389 439 489 539 589 639 689 40 90 140 190 240 290 340 390 440 490 540 590 640 690 41 91 141 191 241 291 341 391 441 491 541 591 641 691 42 92 142 192 242 292 342 392 442 492 542 592 642 692 43 93 143 193 243 293 343 393 443 493 543 593 643 693 44 94 144 194 244 294 344 394 444 494 544 594 644 694 45 95 145 195 245 295 345 395 445 495 545 595 645 695 46 96 146 196 246 296 346 396 446 496 546 596 646 696 47 97 147 197 247 297 347 397 447 497 547 597 647 697 48 98 148 198 248 298 348 398 448 498 548 598 648 698 49 99 149 199 249 299 349 399 449 499 549 599 649 699 50 100 150 200 250 300 350 400 450 500 550 600 650 700 Columns 15 through 28 701 751 801 851 901 951 1001 1051 1101 1151 1201 1251 1301 1351 702 752 802 852 902 952 1002 1052 1102 1152 1202 1252 1302 1352 703 753 803 853 903 953 1003 1053 1103 1153 1203 1253 1303 1353 704 754 804 854 904 954 1004 1054 1104 1154 1204 1254 1304 1354 705 755 805 855 905 955 1005 1055 1105 1155 1205 1255 1305 1355 706 756 806 856 906 956 1006 1056 1106 1156 1206 1256 1306 1356 707 757 807 857 907 957 1007 1057 1107 1157 1207 1257 1307 1357 708 758 808 858 908 958 1008 1058 1108 1158 1208 1258 1308 1358 709 759 809 859 909 959 1009 1059 1109 1159 1209 125...

8   Pass
y = magic(50); v = [48 99 150]; assert(isequal(diag_indices(y,-47),v))

B = Columns 1 through 14 1 51 101 151 201 251 301 351 401 451 501 551 601 651 2 52 102 152 202 252 302 352 402 452 502 552 602 652 3 53 103 153 203 253 303 353 403 453 503 553 603 653 4 54 104 154 204 254 304 354 404 454 504 554 604 654 5 55 105 155 205 255 305 355 405 455 505 555 605 655 6 56 106 156 206 256 306 356 406 456 506 556 606 656 7 57 107 157 207 257 307 357 407 457 507 557 607 657 8 58 108 158 208 258 308 358 408 458 508 558 608 658 9 59 109 159 209 259 309 359 409 459 509 559 609 659 10 60 110 160 210 260 310 360 410 460 510 560 610 660 11 61 111 161 211 261 311 361 411 461 511 561 611 661 12 62 112 162 212 262 312 362 412 462 512 562 612 662 13 63 113 163 213 263 313 363 413 463 513 563 613 663 14 64 114 164 214 264 314 364 414 464 514 564 614 664 15 65 115 165 215 265 315 365 415 465 515 565 615 665 16 66 116 166 216 266 316 366 416 466 516 566 616 666 17 67 117 167 217 267 317 367 417 467 517 567 617 667 18 68 118 168 218 268 318 368 418 468 518 568 618 668 19 69 119 169 219 269 319 369 419 469 519 569 619 669 20 70 120 170 220 270 320 370 420 470 520 570 620 670 21 71 121 171 221 271 321 371 421 471 521 571 621 671 22 72 122 172 222 272 322 372 422 472 522 572 622 672 23 73 123 173 223 273 323 373 423 473 523 573 623 673 24 74 124 174 224 274 324 374 424 474 524 574 624 674 25 75 125 175 225 275 325 375 425 475 525 575 625 675 26 76 126 176 226 276 326 376 426 476 526 576 626 676 27 77 127 177 227 277 327 377 427 477 527 577 627 677 28 78 128 178 228 278 328 378 428 478 528 578 628 678 29 79 129 179 229 279 329 379 429 479 529 579 629 679 30 80 130 180 230 280 330 380 430 480 530 580 630 680 31 81 131 181 231 281 331 381 431 481 531 581 631 681 32 82 132 182 232 282 332 382 432 482 532 582 632 682 33 83 133 183 233 283 333 383 433 483 533 583 633 683 34 84 134 184 234 284 334 384 434 484 534 584 634 684 35 85 135 185 235 285 335 385 435 485 535 585 635 685 36 86 136 186 236 286 336 386 436 486 536 586 636 686 37 87 137 187 237 287 337 387 437 487 537 587 637 687 38 88 138 188 238 288 338 388 438 488 538 588 638 688 39 89 139 189 239 289 339 389 439 489 539 589 639 689 40 90 140 190 240 290 340 390 440 490 540 590 640 690 41 91 141 191 241 291 341 391 441 491 541 591 641 691 42 92 142 192 242 292 342 392 442 492 542 592 642 692 43 93 143 193 243 293 343 393 443 493 543 593 643 693 44 94 144 194 244 294 344 394 444 494 544 594 644 694 45 95 145 195 245 295 345 395 445 495 545 595 645 695 46 96 146 196 246 296 346 396 446 496 546 596 646 696 47 97 147 197 247 297 347 397 447 497 547 597 647 697 48 98 148 198 248 298 348 398 448 498 548 598 648 698 49 99 149 199 249 299 349 399 449 499 549 599 649 699 50 100 150 200 250 300 350 400 450 500 550 600 650 700 Columns 15 through 28 701 751 801 851 901 951 1001 1051 1101 1151 1201 1251 1301 1351 702 752 802 852 902 952 1002 1052 1102 1152 1202 1252 1302 1352 703 753 803 853 903 953 1003 1053 1103 1153 1203 1253 1303 1353 704 754 804 854 904 954 1004 1054 1104 1154 1204 1254 1304 1354 705 755 805 855 905 955 1005 1055 1105 1155 1205 1255 1305 1355 706 756 806 856 906 956 1006 1056 1106 1156 1206 1256 1306 1356 707 757 807 857 907 957 1007 1057 1107 1157 1207 1257 1307 1357 708 758 808 858 908 958 1008 1058 1108 1158 1208 1258 1308 1358 709 759 809 859 909 959 1009 1059 1109 1159 1209 125...

9   Pass
v=[1 2 3;4 5 6;1 2 3]; t = [1 5 9]; assert(isequal(diag_indices(v,0),t))

B = 1 4 7 2 5 8 3 6 9 y = 1 5 9

10   Pass
x=[1 2;1 2]; y_correct = 3; assert(isequal(diag_indices(x,1),y_correct))

B = 1 3 2 4 y = 3

11   Pass
x=[1 1 1;1 1 1;1 1 1]; t = [1 5 9]; assert(isequal(diag_indices(x,0),t))

B = 1 4 7 2 5 8 3 6 9 y = 1 5 9

12   Pass
y=[1 2 3;1 2 3]; y_correct = [1 4]; assert(isequal(diag_indices(y,0),y_correct))

B = 1 3 5 2 4 6 y = 1 4