দ্বিগুণ সংযুক্ত তালিকাটি এমন একটি ডেটা স্ট্রাকচার যা প্রতিটি নোডের value
পাশাপাশি তালিকার উভয় previous
এবং পরবর্তী উভয়টিতে "লিঙ্কগুলি" থাকে nodes
। উদাহরণস্বরূপ, 12, 99 এবং 37 মান সহ নিম্নলিখিত নোডগুলি বিবেচনা করুন:
এখানে, 12 এবং 99 এর মানযুক্ত next
নোডগুলি 99 এবং 37 এর মান সহ তাদের নিজ নিজ নোডগুলিতে নির্দেশ করে । 37 মান সহ নোডের কোনও next
পয়েন্টার নেই কারণ এটি তালিকার শেষ নোড। একইভাবে, 99 এবং 37 মানের মানের নোডগুলি তাদের নিজ নিজ previous
নোডগুলিতে নির্দেশ করে, 12 এবং 99 , তবে 12 এর কোনও previous
পয়েন্টার নেই কারণ এটি তালিকার প্রথম নোড।
সেটআপ
অনুশীলনে, কোনও নোডের "লিঙ্কগুলি" স্মৃতিতে পূর্ববর্তী এবং পরবর্তী নোডের অবস্থানগুলি নির্দেশক হিসাবে প্রয়োগ করা হয়। আমাদের উদ্দেশ্যে, "মেমরি" নোডের একটি অ্যারে হবে এবং অ্যারে নোডের অবস্থানটি এর সূচক হবে। কোনও নোডকে ফর্মের 3-টিপল হিসাবে ভাবা যেতে পারে ( prev value next )
। উপরের উদাহরণটি, তাহলে, এর মতো দেখতে পারা যায়:
তবে এটি পরিবর্তে এর মতো দেখাবে:
যে কোনও নোড থেকে শুরু করে, আপনি নোডগুলির সমস্ত মানগুলি যথাযথভাবে পাওয়ার জন্য পরবর্তী নোডগুলি সন্ধান করার জন্য লিংকগুলি ( previous
লাল তীরগুলির উত্স হিসাবে দেখানো হয়েছে) এর পূর্ববর্তী নোডগুলিতে এবং next
লিংকগুলি (সবুজ তীরগুলি) অনুসরণ করতে পারেন: [12, 99, 37]
।
উপরের প্রথম চিত্রটি একটি অ্যারে হিসাবে প্রতিনিধিত্ব করতে পারে [[null, 12, 1], [0, 99, 2], [1, 37, null]]
। দ্বিতীয়, তারপর, হবে [[2, 99, 1], [0, 37, null], [null, 12, 0]]
।
চ্যালেঞ্জ
একটি প্রোগ্রাম লিখুন যা নোডের একটি অ্যারে এবং নোডের সূচি হিসাবে ইনপুট হিসাবে নেয় এবং তালিকার ক্রমে একই দ্বিগুণ লিঙ্কযুক্ত তালিকার নোডের মান।
একটি জটিলতা
"স্মৃতি" সর্বদা কেবল একটি তালিকার নোড ধারণ করে না। এটিতে বেশ কয়েকটি তালিকা থাকতে পারে:
উপরের অ্যারেটিতে তিনটি দ্বিগুণ লিঙ্কযুক্ত তালিকাগুলি রয়েছে, আপনার সুবিধার জন্য রঙিন কোডেড:
ইনডেক্স এ নোড
7
,10
,1
,4
,3
,12
(শুধুমাত্র দেখাচ্ছেnext
গোলমাল কমাতে সংযোগগুলি; বিবর্ধন ক্লিক করুন):এই অ্যারে এবং এই সূচকের যে কোনও একটি দেওয়া, আপনার প্রোগ্রামটি মান হিসাবে, ফিরে আসা উচিত
[0, 1, 1, 2, 3, 5, 8]
।সূচকের নোড
9
:সূচকে দেওয়া
9
, আপনার প্রোগ্রামটি ফিরে আসা উচিত[99]
।ইনডেক্স এ নোড
11
,8
,0
,6
,2
:এর মধ্যে একটি সূচকে দেওয়া, এটি ফিরে আসা উচিত
[2, 3, 5, 7, 11]
।
বিধি
ইনপুট
আপনার প্রোগ্রাম ইনপুট হিসাবে পাবেন:
Above নোডের একটি তালিকা (উপরে বর্ণিত হিসাবে 3-টিউপলস), যেখানে 1 ≤ 𝒏, 1000, কোনও সুবিধাজনক বিন্যাসে, যেমন অ্যারেগুলির একটি অ্যারে, দৈর্ঘ্য 3𝒏 সহ পূর্ণসংখ্যার "সমতল" অ্যারে ইত্যাদি
3-tuples 'এর উপাদানগুলির কোনো আদেশ থাকতে পারে:
( prev value next )
,( next prev value )
, ইত্যাদি প্রতিটি নোডের জন্য,prev
এবংnext
হতে হবেnull
(অথবা অন্য সুবিধাজনক মান, যেমন-1
), একটি দোকর লিঙ্ক তালিকায় প্রথম অথবা শেষ নোড, অথবা একটি বৈধ সূচক ইঙ্গিত তালিকা, হয় 0- বা 1-ভিত্তিক হিসাবে সুবিধাজনক।value
একটি স্বাক্ষরিত 32-বিট পূর্ণসংখ্যা বা আপনার ভাষা সমর্থন করে এমন বৃহত্তম সংখ্যার টাইপ হবে, যেটি ছোট হোক।তালিকার একটি নোডের সূচক ((1)। নির্দেশিত নোড দ্বিগুণ সংযুক্ত তালিকার প্রথম নোড, শেষ নোড, একটি মাঝারি নোড বা এমনকি একমাত্র নোড হতে পারে।
ইনপুট তালিকায় (1) প্যাথলজিকাল ডেটা থাকতে পারে (যেমন চক্র, একাধিক অন্যান্য নোড দ্বারা চিহ্নিত নোড ইত্যাদি) তবে ইনপুট সূচী (2) সর্বদা নোডের দিকে নির্দেশ করবে যেখানে থেকে একক, সুগঠিত আউটপুট হতে পারে অনুমিত।
আউটপুট
আপনার প্রোগ্রামের দ্বিগুণ লিঙ্কযুক্ত তালিকার নোডের মান আউটপুট করা উচিত যার তালিকার ক্রমে সূচক নোড একটি সদস্য। আউটপুট যে কোনও সুবিধাজনক বিন্যাসে হতে পারে তবে এর ডেটাতে কেবল নোড অন্তর্ভুক্ত থাকতে হবেvalue
।
জয়লাভ
এটি কোড-গল্ফ । বাইট জিতে সংক্ষিপ্ত উত্তর। স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।
পরীক্ষার মামলা
নীচে, প্রতিটি পরীক্ষার কেস ফর্মের হয়:
X)
prev value next, prev value next, ...
index
value value value ...
... X
পরীক্ষার কেস সনাক্ত করার জন্য একটি চিঠি কোথায় , দ্বিতীয় লাইনটি ইনপুট তালিকা, তৃতীয় লাইনটি 0-ভিত্তিক ইনপুট সূচক এবং চতুর্থ লাইনটি আউটপুট।
A) null 12 1, 0 99 2, 1 37 null
1
12 99 37
B) 2 99 1, 0 37 null, null 12 0
1
12 99 37
C) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
4
0 1 1 2 3 5 8
D) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
0
2 3 5 7 11
E) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
9
99
F) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
18
80 80 67 71
G) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
8
1 -1 1 -1 1 -1 1
H) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
4
1 3 6 10 15 21
I) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
14
3 1 4 1 5 9 2 6 5 3
J) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
17
8 6 7 5 3 0 9
K) 4 11 0, null 22 3, null 33 3, 1 44 4, 3 55 null, 7 66 7, 6 77 6
3
22 44 55
L) null -123 null
0
-123