শব্দটি কি একে অপরের সাথে সংযুক্ত কীগুলির সাথে টাইপযোগ্য?


13

এটি পড়ার আগে আমি এই ছোট ধাঁধাটি পড়ার পরামর্শ দিচ্ছি: /puzzling/11408/longest-word-with-adjacent-letters-on-a-keyboard

আমি আপনাকে একটি প্রোগ্রাম তৈরি করতে চাই যাতে একটি যুক্তি, একটি শব্দ (কেবল ছোট হাতের অক্ষর) নেওয়া হয় এবং শব্দটি কী-বোর্ডের সংলগ্ন কীগুলির সাথে টাইপ করা যেতে পারে "হ্যাঁ" আউটপুট দেয় (নিবন্ধটি দেখুন) এবং শব্দটি যদি করতে পারে তবে "না" সংলগ্ন অক্ষরের সাথে টাইপ করা হবে না।

এই চ্যালেঞ্জটিতে ব্যবহৃত কীবোর্ড লেআউটটি এখানে রয়েছে:

 ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
 | Q | W | E | R | T | Y | U | I | O | P |
 └─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘
   | A | S | D | F | G | H | J | K | L |
   └─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┘
     | Z | X | C | V | B | N | M |
     └───┴───┴───┴───┴───┴───┴───┘

মনে রাখবেন: এটি কোডগল্ফ তাই সংক্ষিপ্ত উত্তরটি জিতেছে!


আমরা কি ধরে নিতে পারি যে ইনপুটটিতে কেবল অক্ষর রয়েছে? আমরা কি ধরে নিতে পারি যে সেগুলি সবই একক ক্ষেত্রে দেওয়া হয়েছে?
মার্টিন এন্ডার

2
আমি এর দ্বারা বিভ্রান্ত হয়েছি: "দুটি সংলগ্ন কীগুলির মধ্যে সর্বাধিক 1.5 * * এর মধ্যে একটি কীের স্থান থাকতে পারে।" নিশ্চয় সংলগ্ন কীগুলি আসলে সংলগ্ন, অর্থাত্ লিঙ্কযুক্ত ধাঁধার মতো তাদের মধ্যে কোনও স্থান নেই?
লুক

কীভাবে যুক্তি নেবেন? Stdin? একটি অনুষ্ঠান?
theonlygusti

উত্তর:


9

পাইথ, 66

?"Yes".Am>2sm^-.uk2Cm.Dx"qwertyuiopasdfghjkl*zxcvbnm"b9.5dC,ztz"No

এখানে চেষ্টা করুন।

পাইথের শিখে আমি আশ্চর্য হয়ে গেলাম পাইথের কোনও হাইপোপেনস ফাংশন নেই, তাই সম্ভবত এটি কোনও ভিন্ন ভাষায় মারবে। আমি পাইথের কাছে একটি হাইপোথেনজ ফাংশন প্রস্তাব করব, যাতে ভবিষ্যতে এই নৃশংসতা ঘটবে না।

ব্যাখ্যা

আমি কীবোর্ডকে এতে রূপান্তর করি:

┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
| Q | W | E | R | T | Y | U | I | O | P |
└─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┐
  | A | S | D | F | G | H | J | K | L | * |
  └─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴───┘
    | Z | X | C | V | B | N | M |
    └───┴───┴───┴───┴───┴───┴───┘

যা আমি তখন এনকোড করেছি "qwertyuiopasdfghjkl*zxcvbnm"তারপরে আমি প্রতিটি কী এর 2D স্থানাঙ্কগুলি বের করতে মডুলো 9.5 সহ ডিভোড ব্যবহার করেছি। তারপরে আমি ধারাবাহিক কীগুলির মধ্যে দূরত্বগুলি গণনা করি এবং স্কোয়ারের দূরত্ব <2 কি না তা পরীক্ষা করি।


3

সিজেম, 83 75 74 বাইট

l_1>]z["qwertyuiop asdfghjkl  zxcvbnm "[__B>]z+s_W%+_]zsf{\#)}:*"Yes""No"?

এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা

সাধারণ পদ্ধতিটি হ'ল সংলগ্ন কীবোর্ড অক্ষরের প্রতিটি জোড়া সমন্বিত একটি বড় সংলগ্ন স্ট্রিং উত্পাদন করা এবং তারপরে পার্শ্ববর্তী ইনপুট অক্ষরের প্রতিটি জোড়া সেই স্ট্রিংয়ে রয়েছে কিনা তা পরীক্ষা করে দেখুন।

আমি কীভাবে সংলগ্ন স্ট্রিং তৈরি করতে পেরেছি তাতে আমি বেশ খুশি, যা খুব সাধারণ এবং কমপ্যাক্ট যুক্তি ব্যবহার করে।

l_1>]z          "Read a line of input and create a list of every pair of
                 adjacent input characters. There will be a trailing element
                 of just the final character, but that's okay since any single
                 lowercase letter can be found in the adjacency string.";
["qwertyuiop asdfghjkl  zxcvbnm "
              "^ Create the in-row forward adjacency string.";
[__B>]z         "Create the alternating-row forward adjacency string by
                 interleaving the in-row string with a substring of itself
                 starting with the middle row letters:
                   'q w e r t y u i o p   a s d f g h j k l  zxcvbnm '
                 + ' a s d f g h j k l     z x c v b n m  '[no interleave here]
                 -----------------------------------------------------
                   'qawsedrftgyhujikolp   azsxdcfvgbhnjmk l  zxcvbnm '";
+s              "Append the alternating-row forward adjacency string to the
                 in-row forward adjacency string.";
_W%+            "Append the reverse of the forward adjacency string (the
                 backward adjacency string) to the forward adjacency string.";
_]zs            "Double every character in the adjacency string so every
                 character is adjacent to itself.";
f{\#)}          "Map each pair of input characters to its 1-indexed location in
                 the adjacency string (0 if not found).";
:*              "Calculate the product of each pair's location in the adjacency
                 string. This will be nonzero if and only if every pair of
                 input characters are in fact adjacent.";
"Yes""No"?      "If the product is nonzero, produce 'Yes'; otherwise, produce
                 'No'.";
                "Implicitly print the result.";

এটাই, আমি সিজেম শিখছি।
সোহম চৌধুরী

@ অকটাটোয়ান দেখে মনে হচ্ছে যদিও আমরা দুজনেই পাইথ শেখা ভাল। : পি
রানার 1112

হাহাহা, সম্ভবত এই ক্ষেত্রে, হ্যাঁ।
সোহম চৌধুরী

2

জে, 77 বাইট

No`Yes{::~[:*/2>+/"1@(2|@-/\3(|,.<.@%~+-:@|)'qazwsxedcrfvtgbyhnujmikXolX'i.])

ব্যবহার:

   f=.No`Yes{::~[:*/2>+/"1@(2|@-/\3(|,.<.@%~+-:@|)'qazwsxedcrfvtgbyhnujmikXolX'i.])

   f 'redresser'
Yes
   f 'qwergy'
No
   f 'ppcg'
No

পদ্ধতি:

প্রতিটি ইনপুট চিঠির জন্য আমি স্ট্রিংয়ের সূচকগুলির ভিত্তিতে এটি 2 ডি স্থানাঙ্ক (প্রশ্নে চিত্রের অনুরূপ) উত্পন্ন করি 'qazwsxedcrfvtgbyhnujmikXolX'। ইনপুট অক্ষর প্রতিটি যুগল আমি পরীক্ষা যদি তাদের স্থানাঙ্ক 'ম্যানহাটন দূরবর্তী চেয়ে ছোট 2. যদি সব, আমি আউটপুট Yes, Noঅন্যথায় ( `অপারেটর অপব্যবহারের দ্বারা)।

এটি এখানে অনলাইনে চেষ্টা করুন।


আপনি চিঠি ভুলে গেছেন p
mbomb007

@ mbomb007 কোনও সন্ধান না পাওয়া অক্ষরের জন্য i.অপারেটর এটিকে রিটার্ন দেয় index of the last element + 1যাতে আমি 1 বাইট না লিখে লিখে সংরক্ষণ করতে পারি pএবং এখনও এটি সঠিক সূচক পেতে পারি।
এলোমেলো 21 এ 21

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.