বিন্দু সংযোগ


13

oবিন্দুগুলির প্রতিনিধিত্ব করে এমন একটি সিরিজ দেওয়া হয়েছে , সেগুলি উল্লম্ব বা অনুভূমিকভাবে সংযুক্ত করুন

উদাহরণ

ইনপুট:

o   o

o

আউটপুট:

o---o
|
|
o

ইনপুট:

o   o    o

    o

আউটপুট:

o---o----o
    |
    o

ফটকা খেলা

  • আপনি যদি ফাঁকা জায়গাগুলি দিয়ে ইনপুটটি একটি আয়তক্ষেত্র গঠন করতে চান তবে দয়া করে আপনার উত্তরে এটি উল্লেখ করুন

  • oইনপুটটিতে কেবল স্থান, স্থান এবং নতুন লাইন থাকবে

  • সংযোগের জন্য সর্বদা এক জোড়া বিন্দু থাকবে
  • কোনও দুটিই oসরাসরি সংলগ্ন হবে না
  • বিন্দুর সংযুক্ত করা উচিত |এবং -যথাক্রমে উল্লম্ব এবং অনুভূমিক সংযোগের
  • কোনও ডট সংযোগ ওভারল্যাপ হবে না

আপনার কি প্রতিটি আইনী জুটি সংযুক্ত করতে হবে বা কেবল বিন্দুগুলিকে 1 টি উপাদানতে সংযুক্ত করতে হবে? বিন্দুগুলি কি সর্বদা 1 উপাদানগুলির সাথে সংযুক্ত থাকতে পারে? " সংযোগ করার জন্য সর্বদা কমপক্ষে দুটি বিন্দু থাকবে" যদি আমি এটি সঠিকভাবে বুঝতে পারি তবে আরও অর্থবোধ করতে পারে। একটি দম্পতি পরীক্ষার কেসগুলি এগুলিও পরিষ্কার করতে পারে।
এলোমেলো

@randomra আপনি প্রতিটি আইনী জুটি সংযুক্ত করতে পারবেন না, সেগুলি সর্বদা 1 উপাদান হবে না
ডাউনগোট

@ ডাওনগোট কীভাবে আরও কয়েকটি পরীক্ষার ক্ষেত্রে বিচ্ছিন্ন উপাদানগুলি এবং একটি একক উপাদানগুলির মধ্যে লুপগুলি কভার করে? ;)
মার্টিন এন্ডার

উত্তর:


2

জাপট, 33 29 বাইট

Uy eV="o +o"_rS'|} y eV,_rS'-

এটি অনলাইন পরীক্ষা!

কিভাবে এটা কাজ করে

Uy         // Transpose rows with columns in the input.
eV="o +o"  // Set V to the regex-string "o +o", and recursively replace each match Z with:
_rS'|}     //  Z with spaces replaced with "|"s.
y          // Transpose again.
eV,        // Recursively replace matches Z of V with:
_rS'-      //  Z with spaces replaced with "-"s.

2

রুবি, 137 133 বাইট

->s{eval"s.split($/).map(&:chars)#{".map{|x|x.join.gsub(/o +(?=o)/){|x|x.tr' ',?|}.chars}.transpose"*2}.map(&:join)*$/".sub'?|','?-'}

এটি একেবারে ভয়াবহ। এখনও গল্ফ চেষ্টা করছে।

প্যাডেড আয়তক্ষেত্র হিসাবে ইনপুট করুন, দয়া করে।

"পাঠযোগ্যতা" এর জন্য নতুন লাইন:

eval"s.split($/).map(&:chars)#{".map{|x|x.join.gsub(/o +(?=o)/){|x|x.tr' ',?|}
.chars}.transpose"*2}.map(&:join)*$/".sub'?|','?-'

4
ঠিক আছে, আমি প্যাডেড আয়তক্ষেত্র হিসাবে ইনপুট করব, তবে কেবলমাত্র আপনি এত সুন্দর জিজ্ঞাসা করেছিলেন।
অ্যালেক্স এ।

আপনি কি \bপরিবর্তে ব্যবহার করতে পারেন (?=o)?
জাস্টিন

@ জাস্টিন কাজ করতে উপস্থিত হয় না। : /
Doorknob

2

রেটিনা , 80 বাইট

T` `-`o.+o
Tm` `|`(?<=(?(1)!)^(?<-1>.)*o\D*¶(.)*) (?=(.)*¶\D*o(?<-2>.)*$(?(2)!))

ইনপুট প্যাড করা প্রয়োজন।

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

ব্যাখ্যা

প্রথম পর্যায়টি বেশ সহজ, এটি সমস্ত স্থানকে হাইফেনে রূপান্তরিত করে যা oএকই লাইনে দু'জনের মধ্যে পাওয়া যায় ।

দ্বিতীয় পর্যায়ে |এস অন্তর্ভুক্ত। এই একটি বিট trickier হয় এবং প্রয়োজন মিট গ্রুপ । দৃষ্টিনন্দন

(?<=(?(1)!)^(?<-1>.)*o\D*¶(.)*)

oএকই কলামে এর আগে রয়েছে কিনা পরীক্ষা করে । মনে রাখবেন যে লুকবাইন্ডগুলি ডান থেকে বামে পড়তে হবে। (.)*ম্যাচের অনুভূমিক অবস্থান সংরক্ষণ \D*¶করে, পূর্ববর্তী লাইনে যে কোনও অক্ষরকে এড়িয়ে যায়, oআক্ষরিক সাথে ম্যাচ করে। তারপরে (?(1)!)^(?<-1>.)*নিশ্চিত করে যে এর অনুভূমিক অবস্থান oএকই রকম।

চেহারা

(?=(.)*¶\D*o(?<-2>.)*$(?(2)!))

বিপরীত দিকে ঠিক একই জিনিস করে।

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