এটি কয়েকটি সর্বাধিক ক্রিয়াকলাপের চ্যালেঞ্জ যেখানে উদ্দেশ্য হ'ল কোনও ভেক্টরকে সর্বাধিক বিপরীতমুখী ব্যবহার করে আরোহী ক্রমানুসারে বাছাই করা। তোমার অ্যালগরিদম করতে শুধুমাত্র সাজানোর ব্যবহার "উপ-ভেক্টর রদবদল" ভেক্টর 1 , কিন্তু এটা গাণিতিক অপারেশন, loops জন্য অন্যান্য অপারেশন ব্যবহার করতে পারেন, চেক যদি এটা সাজানো ইত্যাদি উপ-ভেক্টরের নম্বর আপনার অ্যালগরিদম সঞ্চালিত রদবদল তার স্কোর হল।
1 এ "সাব-ভেক্টর রিভার্সাল":
- ভেক্টরে সংখ্যার একটি ব্যাপ্তি নির্বাচন করুন এবং সেই ব্যাপ্তির উপাদানগুলিকে বিপরীত করুন।
একটি সাধারণ উদাহরণ দেওয়ার জন্য, আপনি যদি ভেক্টর দিয়ে শুরু করেন {4,3,2,1}
, তবে আপনি এটিকে বিভিন্ন উপায়ে বাছাই করতে পারেন:
- সম্পূর্ণ ভেক্টরকে বিপরীত করুন। এটি স্পষ্টতই সংক্ষিপ্ততম পদ্ধতির কারণ এটির জন্য কেবল একটি বিপরীতের প্রয়োজন:
{4,3,2,1} -> {1,2,3,4}
- আপনি বুদ্বুদ সাজানোর একটি সংস্করণ করতে পারেন, যার জন্য 6 টি বিপরীতের দরকার:
{4,3,2,1} -> {3,4,2,1} -> {3,2,4,1} -> {2,3,4,1} -> {2,3,1,4} -> {2,1,3,4} -> {1,2,3,4}
- আপনি প্রথম 3 টি উপাদান দিয়ে শুরু করতে পারেন, তারপরে তিনটি শেষ এবং শেষ পর্যন্ত দুটি প্রথম এবং দুটি শেষ, যার জন্য 4 টি অদলবদল প্রয়োজন:
{4,3,2,1} -> {2,3,4,1} -> {2,1,4,3} -> {1,2,4,3} -> {1,2,3,4}
- ... ইত্যাদি। অসীম পরিমাণে অপশন উপলব্ধ রয়েছে (আপনি যদি চান তবে যে কোনও অপারেশন পুনরাবৃত্তি করতে পারেন)।
বিধি এবং প্রয়োজনীয়তা:
আপনার কোডটি 100 টি সংখ্যা সহ একটি তালিকার জন্য এক মিনিটেরও কম সময়ে শেষ করতে হবে। আপনি এই নিজের সময় হতে পারে, কিন্তু ন্যায্য খেলা দয়া করে 2 ।
আপনার সম্পাদন করা সমস্ত অদলবদলের সূচনা এবং শেষ সূচকগুলি অবশ্যই সংরক্ষণ করতে হবে, যাতে সমাধানটি যাচাই করা যেতে পারে। (আমি নীচে এর অর্থ কী তা ব্যাখ্যা করব)।
কোডটি অবশ্যই ডিটারমিনিস্টিক হতে হবে।
আপনি যে কোনও ফর্ম্যাটটিতে ইনপুট নিতে পারেন: সংখ্যার ভেক্টর, লিংক-তালিকা, দৈর্ঘ্যের সাথে অ্যারে ... আপনার যা পছন্দ হোক না কেন।
আপনি ভেক্টরের অনুলিপিতে যা খুশি তা করতে পারেন । এর মধ্যে রয়েছে বিভিন্ন বিপরীত চেষ্টা এবং যা সবচেয়ে কার্যকরী তা পরীক্ষা করে। ব্রুট-ফোর্সিং পুরোপুরি ঠিক আছে, তবে সময়সীমাতে আটকে রয়েছে।
স্কোরটি 5 টি পরীক্ষক ভেক্টরের মোট ফ্লপ সংখ্যা। টাই-ব্রেকার তারিখ স্ট্যাম্প হবে।
উদাহরণ:
4 1 23 21 49 2 7 9 2 | প্রাথমিক ভেক্টর / তালিকা 4 1 2 9 7 2 49 21 23 23 | (2, 8) (সূচক 2 এবং 8 এর মধ্যে উপাদানগুলি ফ্লিপ করেছে) 4 1 2 2 7 9 49 21 23 | (3, 5) 4 1 2 2 7 9 23 21 49 | (6, 8) 4 1 2 2 7 9 21 23 49 | (6, 7) 2 2 1 4 7 9 21 23 49 | (0, 3) 1 2 2 4 7 9 21 23 49 | (0, 2)
স্কোরটি 6 হবে, যেহেতু আপনি 6 টি বিপরীত করেছেন। আপনার অবশ্যই ডানদিকে তালিকাভুক্ত সূচকগুলি উপযুক্ত বিন্যাসে সংরক্ষণ করতে হবে যা যাচাইকরণের জন্য সহজেই মুদ্রণ / আউটপুট করা যায়।
পরীক্ষা ভেক্টর:
133, 319, 80, 70, 194, 333, 65, 21, 345, 142, 82, 491, 92, 167, 281, 386, 48, 101, 394, 130, 111, 139, 214, 337, 180, 24, 443, 35, 376, 13, 166, 59, 452, 429, 406, 256, 133, 435, 446, 304, 350, 364, 447, 471, 236, 177, 317, 342, 294, 146, 280, 32, 135, 399, 78, 251, 467, 305, 366, 309, 162, 473, 27, 67, 305, 497, 112, 399, 103, 178, 386, 343, 33, 134, 480, 147, 466, 244, 370, 140, 227, 292, 28, 357, 156, 367, 157, 60, 214, 280, 153, 445, 301, 108, 77, 404, 496, 3, 226, 37
468, 494, 294, 42, 19, 23, 201, 47, 165, 118, 414, 371, 163, 430, 295, 333, 147, 336, 403, 490, 370, 128, 261, 91, 173, 339, 40, 54, 331, 236, 255, 33, 237, 272, 193, 91, 232, 452, 79, 435, 160, 328, 47, 179, 162, 239, 315, 73, 160, 266, 83, 451, 317, 255, 491, 70, 18, 275, 339, 298, 117, 145, 17, 178, 232, 59, 109, 271, 301, 437, 63, 103, 130, 15, 265, 281, 365, 444, 180, 257, 99, 248, 378, 158, 210, 466, 404, 263, 29, 117, 417, 357, 44, 495, 303, 428, 146, 215, 164, 99
132, 167, 361, 145, 36, 56, 343, 330, 14, 412, 345, 263, 306, 462, 101, 453, 364, 389, 432, 32, 200, 76, 268, 291, 35, 13, 448, 188, 11, 235, 184, 439, 175, 159, 360, 46, 193, 440, 334, 128, 346, 192, 263, 466, 175, 407, 340, 393, 231, 472, 122, 254, 451, 485, 257, 67, 200, 135, 132, 421, 205, 398, 251, 286, 292, 488, 480, 56, 284, 484, 157, 264, 459, 6, 289, 311, 116, 138, 92, 21, 307, 172, 352, 199, 55, 38, 427, 214, 233, 404, 330, 105, 223, 495, 334, 169, 168, 444, 268, 248
367, 334, 296, 59, 18, 193, 118, 10, 276, 180, 242, 115, 233, 40, 225, 244, 147, 439, 297, 115, 354, 248, 89, 423, 47, 458, 64, 33, 463, 142, 5, 13, 89, 282, 186, 12, 70, 289, 385, 289, 274, 136, 39, 424, 174, 186, 489, 73, 296, 39, 445, 308, 451, 384, 451, 446, 282, 419, 479, 220, 35, 419, 161, 14, 42, 321, 202, 30, 32, 162, 444, 215, 218, 102, 140, 473, 500, 480, 402, 1, 1, 79, 50, 54, 111, 189, 147, 352, 61, 460, 196, 77, 315, 304, 385, 275, 65, 145, 434, 39
311, 202, 126, 494, 321, 330, 290, 28, 400, 84, 6, 160, 432, 308, 469, 459, 80, 48, 292, 229, 191, 240, 491, 231, 286, 413, 170, 486, 59, 54, 36, 334, 135, 39, 393, 201, 127, 95, 456, 497, 429, 139, 81, 293, 359, 477, 404, 129, 129, 297, 298, 495, 424, 446, 57, 296, 10, 269, 350, 337, 39, 386, 142, 327, 22, 352, 421, 32, 171, 452, 2, 484, 337, 359, 444, 246, 174, 23, 115, 102, 427, 439, 71, 478, 89, 225, 7, 118, 453, 350, 109, 277, 338, 474, 405, 380, 256, 228, 277, 3
আমি মোটামুটি নিশ্চিত যে একটি অনুকূল সমাধান সন্ধান করা এনপি-হার্ড (যেহেতু নিয়মিত প্যানকেক বাছাই করা হয়)।
2 হ্যাঁ, এক মিনিটের সময়সীমার কারণে খুব দ্রুত কম্পিউটারের লোকেরা কোনও উপকার পেতে পারে। অনেক আলোচনার পরে আমি বুঝতে পেরেছি যে যদি সবার নিজের বেঞ্চমার্কিং হয় তবে এটি কোনও দ্রুততম কোড চ্যালেঞ্জ নয়।
n-1
? আমি কেবল প্রায় 50