জেলি , 14 12 বাইট
J’ƲœṗZ⁻¦µU⁼
এটি অনলাইন চেষ্টা করুন!
পটভূমি
আমরা ইনপুট স্ট্রিংয়ের 0-ভিত্তিক সূচকগুলি দেখে শুরু করি।
H H e H H e l e H H e l l l e H H e l l o l l e H
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
ত্রিভুজের সারিগুলি পেতে, আমরা সূচকগুলি 1 , 1 + 3 = 4 , 1 + 3 + 5 = 9 এবং 1 + 3 + 5 + 7 = 16 এর আগে স্ট্রিংটি বিভক্ত করতে পারি । যেহেতু (n + 1) ² = nn + (2 এন + 1) , এই পরিমাণগুলি সূচক তালিকার যথাযথভাবে ইতিবাচক, নিখুঁত স্কোয়ার। যদি আমরা 0 এর আগেও স্ট্রিংটি বিভক্ত করি তবে নিখুঁত স্কোয়ারযুক্ত সমস্ত 0-ভিত্তিক সূচকগুলির আগে এটি বিভাজনের মতোই সহজ।
বিভক্ত হওয়ার পরে, আমরা নিম্নলিখিত স্ট্রিংগুলি পাই।
""
"H"
"HeH"
"HeleH"
"HellleH"
"HellolleH"
এর পরে, আমরা প্রথম কলামে সমস্ত অক্ষর দিয়ে শুরুতে খালি স্ট্রিংটি প্রতিস্থাপন করি।
"HHHHH"
"H"
"HeH"
"HeleH"
"HellleH"
"HellolleH"
সমস্ত স্ট্রিং উল্টিয়ে একই স্ট্রিং অ্যারে দেয় কিনা তা পরীক্ষা করার জন্য এখন টাস্কটি হ্রাস পেয়েছে।
কিভাবে এটা কাজ করে
প্রথমে J
ইনপুট স্ট্রিংয়ের সমস্ত 1-ভিত্তিক সূচকগুলি উত্পন্ন করে J
, তারপরে ’
সমস্ত 0-ভিত্তিক সূচকগুলি উত্পাদনের জন্য সেগুলি হ্রাস করে । Ʋ
বর্গক্ষেত্রের জন্য সমস্ত 0-ভিত্তিক সূচকগুলি পরীক্ষা করে। উপরে থেকে আমাদের উদাহরণের জন্য, এটি নিম্নলিখিত বুলিয়ান অ্যারে দেয়।
1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
এর পরে, আমরা œṗ
ইনপুট স্ট্রিংকে পার্টিশন করার জন্য কল করি , যেমন,
H H e H H e l e H H e l l l e H H e l l o l l e H
সমস্ত 1 এর আগে (আসলে সমস্ত সত্যবাদী উপাদান) আমাদের উদাহরণস্বরূপ, এটি নিম্নলিখিত স্ট্রিং অ্যারের ফলন করে।
['',
'H',
'HeH',
'HeleH',
'HellleH',
'HellolleH'
]
Z⁻¦
যুক্তিযুক্তভাবে এই উত্তর সবচেয়ে আকর্ষণীয় অংশ। Z1¦
প্রথমে আরও সহজবোধ্য বিশ্লেষণ করা যাক ।
¦
হয় বিক্ষিপ্ত দ্রুত। এটি স্ট্যাক থেকে দুটি লিঙ্ক খায়, বিশেষত 1
এবং Z
এই ক্ষেত্রে। প্রথমে Z
তার যুক্তিতে প্রয়োগ করা হয়: স্ট্রিং অ্যারেটি আগে থেকে। Z
হয় জিপ পরমাণু ও কলাম স্ট্রিং অ্যারে / 2D চরিত্র অ্যারে লেখা আছে, ফলনশীল
['HHHHH',
'eeee',
'Hlll',
'ell',
'Hlo',
'el',
'Hl',
'e',
'H'
]
ইনপুট স্ট্রিং এবং স্ট্রিং অ্যারের প্রথম কলামের বাম পাশে কী ব্যবহৃত হত তা এখন প্রথম স্ট্রিংয়ে পরিণত হয় ।
এখন ¦
উঁকি দেয় 1
এবং একটি একক সূচক খুঁজে পায়: 1 । সুতরাং আসল স্ট্রিং অ্যারেতে প্রথম স্ট্রিং এর রিটার্ন ভ্যালুতে প্রথম স্ট্রিংয়ের সাথে প্রতিস্থাপিত হয় Z
; অন্যান্য সূচকগুলিতে স্ট্রিংগুলি প্রভাবিত থাকে না।
['HHHHH',
'H',
'HeH',
'HeleH',
'HellleH',
'HellolleH'
]
এর এই অ্যারের কল করা যাক একটি ।
এর Z⁻¦
পরিবর্তে আমরা ব্যবহার করেছি Z1¦
, তবে এতে কোনও পার্থক্য নেই: ⁻
বৈষম্যের জন্য ইনপুট স্ট্রিংয়ের সাথে স্ট্রিং অ্যারের তুলনা করে, তারা সমান নয় বলে 1 ফলন করে । Z⁻¦
উভয়ের মধ্যে পার্থক্যটি হ'ল ডায়াডিক কারণ ⁻
এটি আমাদের œṗZ⁻¦
পরিবর্তে লিখতে দেয় œṗ¹Z1¦
। এটি কারণ একটি ডায়াড ( œṗ
) এর পরে একটি মোনাদ ( œṗ¹Z1¦
) একটি কাঁটাচামচ (মোনাডটি শৃঙ্খলার আর্গুমেন্ট / ইনপুট স্ট্রিংয়ের সাথে প্রয়োগ করা হয়, এবং প্রত্যাবর্তিত মানটি সঠিক যুক্তি হিসাবে প্রেরণ করা হয় œṗ
), অন্যদিকে একটি ডায়াড পরে অন্য ডায়াড হয় (বা চেইনের শেষে) একটি হুক , অর্থাত্, এর ডান আর্গুমেন্টটি চেইনের যুক্তি।
যা করার বাকি তা হল প্যালিনড্রোমিসনেস পরীক্ষা করা। µ
একটি নতুন (monadic) শৃঙ্খলা শুরু হয় যার যুক্তি এ । Upend পরমাণু U
সমস্ত স্ট্রিং reverses একজন (কিন্তু একজন নিজেই), তারপর ⁼
ফলাফল নিয়ে তুলনা একটি সমতার জন্য। প্রত্যাবর্তিত বুলিয়ান 1 সম্পূর্ণ প্যালিনড্রমিক ত্রিভুজ নির্দেশ করে; অন্যান্য স্ট্রিং 0 ফিরে আসবে ।