< Summary

Information
Class: LeetCode.Algorithms.SlidingPuzzle.SlidingPuzzlePrecomputedDictionary
Assembly: LeetCode
File(s): D:\a\LeetCode-CS\LeetCode-CS\source\LeetCode\Algorithms\SlidingPuzzle\SlidingPuzzlePrecomputedDictionary.cs
Line coverage
100%
Covered lines: 374
Uncovered lines: 0
Coverable lines: 374
Total lines: 401
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%11100%
SlidingPuzzle(...)100%44100%

File(s)

D:\a\LeetCode-CS\LeetCode-CS\source\LeetCode\Algorithms\SlidingPuzzle\SlidingPuzzlePrecomputedDictionary.cs

#LineLine coverage
 1// --------------------------------------------------------------------------------
 2// Copyright (C) 2025 Eugene Eremeev (also known as Yevhenii Yeriemeieiv).
 3// All Rights Reserved.
 4// --------------------------------------------------------------------------------
 5// This software is the confidential and proprietary information of Eugene Eremeev
 6// (also known as Yevhenii Yeriemeieiv) ("Confidential Information"). You shall not
 7// disclose such Confidential Information and shall use it only in accordance with
 8// the terms of the license agreement you entered into with Eugene Eremeev (also
 9// known as Yevhenii Yeriemeieiv).
 10// --------------------------------------------------------------------------------
 11
 12namespace LeetCode.Algorithms.SlidingPuzzle;
 13
 14/// <inheritdoc />
 15public class SlidingPuzzlePrecomputedDictionary : ISlidingPuzzle
 16{
 317    private readonly Dictionary<int, int> _movesDictionary = new()
 318    {
 319        { 123450, 0 },
 320        { 120453, 1 },
 321        { 123405, 1 },
 322        { 102453, 2 },
 323        { 103425, 2 },
 324        { 123045, 2 },
 325        { 12453, 3 },
 326        { 152403, 3 },
 327        { 13425, 3 },
 328        { 130425, 3 },
 329        { 23145, 3 },
 330        { 412053, 4 },
 331        { 152043, 4 },
 332        { 152430, 4 },
 333        { 413025, 4 },
 334        { 135420, 4 },
 335        { 203145, 4 },
 336        { 412503, 5 },
 337        { 52143, 5 },
 338        { 150432, 5 },
 339        { 413205, 5 },
 340        { 135402, 5 },
 341        { 230145, 5 },
 342        { 243105, 5 },
 343        { 402513, 6 },
 344        { 412530, 6 },
 345        { 502143, 6 },
 346        { 105432, 6 },
 347        { 403215, 6 },
 348        { 413250, 6 },
 349        { 135042, 6 },
 350        { 235140, 6 },
 351        { 243015, 6 },
 352        { 243150, 6 },
 353        { 42513, 7 },
 354        { 420513, 7 },
 355        { 410532, 7 },
 356        { 520143, 7 },
 357        { 542103, 7 },
 358        { 15432, 7 },
 359        { 43215, 7 },
 360        { 430215, 7 },
 361        { 410253, 7 },
 362        { 35142, 7 },
 363        { 235104, 7 },
 364        { 240153, 7 },
 365        { 542013, 8 },
 366        { 423510, 8 },
 367        { 401532, 8 },
 368        { 523140, 8 },
 369        { 542130, 8 },
 370        { 415032, 8 },
 371        { 435210, 8 },
 372        { 401253, 8 },
 373        { 305142, 8 },
 374        { 205134, 8 },
 375        { 235014, 8 },
 376        { 204153, 8 },
 377        { 423501, 9 },
 378        { 41532, 9 },
 379        { 431502, 9 },
 380        { 523104, 9 },
 381        { 540132, 9 },
 382        { 415302, 9 },
 383        { 435201, 9 },
 384        { 41253, 9 },
 385        { 451203, 9 },
 386        { 350142, 9 },
 387        { 345102, 9 },
 388        { 25134, 9 },
 389        { 250134, 9 },
 390        { 35214, 9 },
 391        { 24153, 9 },
 392        { 254103, 9 },
 393        { 403521, 10 },
 394        { 423051, 10 },
 395        { 541032, 10 },
 396        { 431052, 10 },
 397        { 431520, 10 },
 398        { 503124, 10 },
 399        { 523014, 10 },
 3100        { 504132, 10 },
 3101        { 405312, 10 },
 3102        { 415320, 10 },
 3103        { 405231, 10 },
 3104        { 435021, 10 },
 3105        { 241053, 10 },
 3106        { 451023, 10 },
 3107        { 451230, 10 },
 3108        { 352140, 10 },
 3109        { 345012, 10 },
 3110        { 345120, 10 },
 3111        { 125034, 10 },
 3112        { 254130, 10 },
 3113        { 305214, 10 },
 3114        { 124053, 10 },
 3115        { 254013, 10 },
 3116        { 43521, 11 },
 3117        { 430521, 11 },
 3118        { 23451, 11 },
 3119        { 541302, 11 },
 3120        { 31452, 11 },
 3121        { 53124, 11 },
 3122        { 530124, 11 },
 3123        { 23514, 11 },
 3124        { 54132, 11 },
 3125        { 534102, 11 },
 3126        { 45312, 11 },
 3127        { 450312, 11 },
 3128        { 410325, 11 },
 3129        { 45231, 11 },
 3130        { 450231, 11 },
 3131        { 35421, 11 },
 3132        { 241503, 11 },
 3133        { 51423, 11 },
 3134        { 352104, 11 },
 3135        { 340125, 11 },
 3136        { 125304, 11 },
 3137        { 350214, 11 },
 3138        { 315204, 11 },
 3139        { 124503, 11 },
 3140        { 54213, 11 },
 3141        { 543021, 12 },
 3142        { 203451, 12 },
 3143        { 501342, 12 },
 3144        { 541320, 12 },
 3145        { 301452, 12 },
 3146        { 153024, 12 },
 3147        { 534120, 12 },
 3148        { 203514, 12 },
 3149        { 154032, 12 },
 3150        { 534012, 12 },
 3151        { 452310, 12 },
 3152        { 401325, 12 },
 3153        { 245031, 12 },
 3154        { 305421, 12 },
 3155        { 201543, 12 },
 3156        { 241530, 12 },
 3157        { 501423, 12 },
 3158        { 302154, 12 },
 3159        { 352014, 12 },
 3160        { 304125, 12 },
 3161        { 105324, 12 },
 3162        { 125340, 12 },
 3163        { 354210, 12 },
 3164        { 315024, 12 },
 3165        { 315240, 12 },
 3166        { 104523, 12 },
 3167        { 124530, 12 },
 3168        { 504213, 12 },
 3169        { 543201, 13 },
 3170        { 230451, 13 },
 3171        { 253401, 13 },
 3172        { 51342, 13 },
 3173        { 510342, 13 },
 3174        { 540321, 13 },
 3175        { 310452, 13 },
 3176        { 351402, 13 },
 3177        { 153204, 13 },
 3178        { 230514, 13 },
 3179        { 213504, 13 },
 3180        { 154302, 13 },
 3181        { 34512, 13 },
 3182        { 452301, 13 },
 3183        { 41325, 13 },
 3184        { 421305, 13 },
 3185        { 245301, 13 },
 3186        { 350421, 13 },
 3187        { 325401, 13 },
 3188        { 21543, 13 },
 3189        { 210543, 13 },
 3190        { 240531, 13 },
 3191        { 510423, 13 },
 3192        { 521403, 13 },
 3193        { 32154, 13 },
 3194        { 320154, 13 },
 3195        { 52314, 13 },
 3196        { 34125, 13 },
 3197        { 324105, 13 },
 3198        { 15324, 13 },
 3199        { 150324, 13 },
 3200        { 120345, 13 },
 3201        { 354201, 13 },
 3202        { 310245, 13 },
 3203        { 14523, 13 },
 3204        { 140523, 13 },
 3205        { 120534, 13 },
 3206        { 540213, 13 },
 3207        { 514203, 13 },
 3208        { 503241, 14 },
 3209        { 543210, 14 },
 3210        { 231450, 14 },
 3211        { 253041, 14 },
 3212        { 253410, 14 },
 3213        { 351042, 14 },
 3214        { 512340, 14 },
 3215        { 504321, 14 },
 3216        { 312450, 14 },
 3217        { 351420, 14 },
 3218        { 103254, 14 },
 3219        { 153240, 14 },
 3220        { 234510, 14 },
 3221        { 213054, 14 },
 3222        { 213540, 14 },
 3223        { 104352, 14 },
 3224        { 154320, 14 },
 3225        { 304512, 14 },
 3226        { 402351, 14 },
 3227        { 452031, 14 },
 3228        { 341025, 14 },
 3229        { 421035, 14 },
 3230        { 421350, 14 },
 3231        { 205341, 14 },
 3232        { 245310, 14 },
 3233        { 325041, 14 },
 3234        { 325410, 14 },
 3235        { 521043, 14 },
 3236        { 204531, 14 },
 3237        { 513420, 14 },
 3238        { 521430, 14 },
 3239        { 132054, 14 },
 3240        { 324150, 14 },
 3241        { 502314, 14 },
 3242        { 134025, 14 },
 3243        { 324015, 14 },
 3244        { 102345, 14 },
 3245        { 304251, 14 },
 3246        { 354021, 14 },
 3247        { 301245, 14 },
 3248        { 514023, 14 },
 3249        { 143520, 14 },
 3250        { 102534, 14 },
 3251        { 514230, 14 },
 3252        { 53241, 15 },
 3253        { 530241, 15 },
 3254        { 231405, 15 },
 3255        { 250413, 15 },
 3256        { 512304, 15 },
 3257        { 54321, 15 },
 3258        { 524301, 15 },
 3259        { 312405, 15 },
 3260        { 13254, 15 },
 3261        { 130254, 15 },
 3262        { 150243, 15 },
 3263        { 234501, 15 },
 3264        { 14352, 15 },
 3265        { 140352, 15 },
 3266        { 340512, 15 },
 3267        { 314502, 15 },
 3268        { 42351, 15 },
 3269        { 420351, 15 },
 3270        { 52431, 15 },
 3271        { 341205, 15 },
 3272        { 21435, 15 },
 3273        { 25341, 15 },
 3274        { 250341, 15 },
 3275        { 240315, 15 },
 3276        { 320415, 15 },
 3277        { 24531, 15 },
 3278        { 513402, 15 },
 3279        { 520431, 15 },
 3280        { 132504, 15 },
 3281        { 520314, 15 },
 3282        { 134205, 15 },
 3283        { 24315, 15 },
 3284        { 12345, 15 },
 3285        { 142305, 15 },
 3286        { 34251, 15 },
 3287        { 340251, 15 },
 3288        { 31245, 15 },
 3289        { 143502, 15 },
 3290        { 12534, 15 },
 3291        { 510234, 15 },
 3292        { 531240, 16 },
 3293        { 201435, 16 },
 3294        { 231045, 16 },
 3295        { 205413, 16 },
 3296        { 512034, 16 },
 3297        { 524031, 16 },
 3298        { 524310, 16 },
 3299        { 302415, 16 },
 3300        { 312045, 16 },
 3301        { 134250, 16 },
 3302        { 105243, 16 },
 3303        { 234051, 16 },
 3304        { 314052, 16 },
 3305        { 142350, 16 },
 3306        { 342510, 16 },
 3307        { 314520, 16 },
 3308        { 342051, 16 },
 3309        { 502431, 16 },
 3310        { 341250, 16 },
 3311        { 251340, 16 },
 3312        { 204315, 16 },
 3313        { 503412, 16 },
 3314        { 513042, 16 },
 3315        { 132540, 16 },
 3316        { 104235, 16 },
 3317        { 142035, 16 },
 3318        { 103542, 16 },
 3319        { 143052, 16 },
 3320        { 501234, 16 },
 3321        { 531204, 17 },
 3322        { 210435, 17 },
 3323        { 25413, 17 },
 3324        { 215403, 17 },
 3325        { 32415, 17 },
 3326        { 15243, 17 },
 3327        { 145203, 17 },
 3328        { 342501, 17 },
 3329        { 310524, 17 },
 3330        { 532401, 17 },
 3331        { 251304, 17 },
 3332        { 214305, 17 },
 3333        { 53412, 17 },
 3334        { 530412, 17 },
 3335        { 13542, 17 },
 3336        { 130542, 17 },
 3337        { 14235, 17 },
 3338        { 140235, 17 },
 3339        { 42135, 17 },
 3340        { 43152, 17 },
 3341        { 51234, 17 },
 3342        { 531024, 18 },
 3343        { 215430, 18 },
 3344        { 425013, 18 },
 3345        { 215043, 18 },
 3346        { 432015, 18 },
 3347        { 145023, 18 },
 3348        { 145230, 18 },
 3349        { 302541, 18 },
 3350        { 301524, 18 },
 3351        { 532041, 18 },
 3352        { 532410, 18 },
 3353        { 201354, 18 },
 3354        { 251034, 18 },
 3355        { 214035, 18 },
 3356        { 214350, 18 },
 3357        { 453012, 18 },
 3358        { 402135, 18 },
 3359        { 403152, 18 },
 3360        { 31524, 19 },
 3361        { 425103, 19 },
 3362        { 432105, 19 },
 3363        { 45123, 19 },
 3364        { 32541, 19 },
 3365        { 320541, 19 },
 3366        { 321504, 19 },
 3367        { 21354, 19 },
 3368        { 210354, 19 },
 3369        { 453102, 19 },
 3370        { 420135, 19 },
 3371        { 430152, 19 },
 3372        { 405123, 20 },
 3373        { 425130, 20 },
 3374        { 432150, 20 },
 3375        { 321540, 20 },
 3376        { 321054, 20 },
 3377        { 453120, 20 },
 3378        { 450123, 21 }
 3379    };
 380
 381    /// <summary>
 382    ///     Time complexity - O(1)
 383    ///     Space complexity - O(1)
 384    /// </summary>
 385    /// <param name="board"></param>
 386    /// <returns></returns>
 387    public int SlidingPuzzle(int[][] board)
 3388    {
 3389        var id = 0;
 390
 18391        for (var i = 0; i < 2; i++)
 6392        {
 48393            for (var j = 0; j < 3; j++)
 18394            {
 18395                id = (id * 10) + board[i][j];
 18396            }
 6397        }
 398
 3399        return _movesDictionary.GetValueOrDefault(id, -1);
 3400    }
 401}