এই কোড গল্ফটি সাম্প্রতিক দৈনিক ডাব্লুটিএফ প্রবন্ধটি দ্বারা অনুপ্রাণিত হয়েছিল আপনি সত্যটি পরিচালনা করতে পারবেন না! , যা এতে লেখা একটি স্ট্রিং তুলনা বৈশিষ্ট্যযুক্ত:
String yes = "YES";
if ((delay.hashCode()) == yes.hashCode())
স্টিভের দলটির জন্য জাভাটির String.hashCode
পদ্ধতিটি যদি এমনভাবে বাস্তবায়িত হতে পারে তবে সমস্যাটি কল্পনা করুন "YES".hashCode() == "NO".hashCode()
। সুতরাং, আমি এখানে প্রস্তাবিত চ্যালেঞ্জটি হ'ল:
যতটা সম্ভব অক্ষরের অক্ষরে লিখুন,
h
একটি স্ট্রিং প্যারামিটার এবং পূর্ণসংখ্যার রিটার্ন মান সহ একটি হ্যাশ ফাংশন (আমি এটি কল করব )h("YES")
যেমন এর সমানh("NO")
।
অবশ্যই, এটি কোনও ফাংশনটির সাথে করা তুচ্ছ হবে def h(s): return 0
, যা প্রতিটি স্ট্রিংয়ের জন্য একটি হ্যাশ সংঘর্ষ তৈরি করে । এই চ্যালেঞ্জটিকে আরও আকর্ষণীয় করে তুলতে আপনাকে নিম্নলিখিত অতিরিক্ত নিয়ম মেনে চলতে হবে:
এর অন্যান্য তিনটি বা তার চেয়ে কম বড় হাতের হওয়া ASCII অক্ষর (এর মধ্যে রয়েছে 18 277 সম্ভব স্ট্রিং
^[A-Z]{0,3}$
), হতে হবে কোন হ্যাশ দুর্ঘটনায়।
ব্যাখ্যা (Heiko Oberdiek দ্বারা নির্দিষ্ট): ইনপুট স্ট্রিং ছাড়া অন্য অক্ষর থাকতে পারে A-Z
, এবং আপনার কোড আবশ্যক নির্বিচারে স্ট্রিং হ্যাশ করতে সক্ষম হবেন। (আপনি পারে, তবে, অনুমান যে ইনপুট হয় একটি অক্ষর স্ট্রিং বদলে নাল পয়েন্টার অথবা অন্য কোনো ডাটা টাইপ একটি অবজেক্ট।) যাইহোক, এটা কোন ব্যাপার না কি ফেরত মান স্ট্রিং যে মিলছে না হয় ^[A-Z]{0,3}$
যতদিন, এটি একটি পূর্ণসংখ্যা
তদতিরিক্ত, এই ফাংশনটির অভিপ্রায়টি অস্পষ্ট করতে:
আপনার কোডগুলিতে অক্ষর বা স্ট্রিংয়ের অক্ষরে অক্ষরের মধ্যে 'Y', 'E', 'S', 'N', বা 'O' (উপরের বা নীচের দিকে উভয়) অক্ষর অন্তর্ভুক্ত করা উচিত নয়।
অবশ্যই, এই সীমাবদ্ধতা ভাষা কীওয়ার্ড প্রযোজ্য নয়, তাই else
, return
ইত্যাদি জরিমানা হয়।
YESNO
এই নির্দিষ্ট ব্যতিক্রমটি যাচাই করতে সংখ্যার ASCII মানগুলি ব্যবহার করতে পারি ।