কোন সুইচ চালু আছে?


12

ভূমিকা

আপনি আপনার সহকর্মীর সাথে বসে, মধ্যাহ্নভোজন করছেন এবং আপনার সাথে কাজ করছেন এমন সর্বশেষ এবং সম্ভবত সবচেয়ে বড় প্রকল্প সম্পর্কে তাকে / তার কাছে বড়াই করে। আপনার অহংকারের অবিচ্ছিন্ন শোকেসে অসুস্থ এবং ক্লান্ত হয়ে পড়ে সে আপনাকে চ্যালেঞ্জ দেয় যাতে আপনি চুপ করে যান। অহংকারী এবং সুখী-ভাগ্যবান ব্যক্তি হওয়ায় আপনি অবশ্যই গ্রহণ করুন (কারণ আপনার অবশ্যই প্রতিটি চ্যালেঞ্জ গ্রহণ করতে হবে )। চ্যালেঞ্জ , যেমন তিনি / সে ব্যাখ্যা করে তা না হয়, একটি প্রদত্ত ইনপুট মধ্যে 1 বা প্রতিটি অক্ষর আরো ধারণকারী লেখার একটা ব্লক !@#$^&*, আউটপুট কোনো যুক্তিসংগত বিন্যাস সুইচ (গুলি) যে / স্থানাঙ্ক "চালু" হয়।

আপনার সহকর্মীর মতে, একটি স্যুইচ হ'ল একটি $, এবং যদি নিম্নলিখিত নীতিগুলির মধ্যে কমপক্ষে 1 টি সন্তুষ্ট হয় তবেই একটি স্যুইচটিকে "চালু" হিসাবে শ্রেণীবদ্ধ করা হয়:

  1. এটিকে ঘিরে রয়েছে সবাই ^। তাই ...

    ^^^
    ^$^
    ^^^
    

    "অন" স্যুইচ এর ফলাফল।

  2. এটিকে ঘিরে রয়েছে সবাই &। তাই ...

    &&&
    &$&
    &&&
    

    "অন" স্যুইচ এর ফলাফল।

  3. এটি কমপক্ষে দুটি পক্ষের সাথে সম্পূর্ণরূপে আচ্ছাদিত *। এই ক্ষেত্রে,

    ***
    &$&
    ***
    

    একটি "অন" স্যুইচ ফলাফল, কিন্তু

    &*&
    &$&
    &*&
    

    না, যেহেতু স্যুইচটি সম্পূর্ণরূপে কোনও দুটি পক্ষের দ্বারা *.েকে নেই

  4. এর চারপাশে যে কোনও কোণে কমপক্ষে 1 !এবং / অথবা 1 @রয়েছে। এগুলির দুটি একটি কোণে না থাকলে এটি গণনা করে না । তাই ...

    !&&
    ^$@
    @&!
    

    "অন" স্যুইচটিতে ফলাফল আসে, যেহেতু কমপক্ষে 1 !এবং / অথবা @কমপক্ষে 1 কোণে থাকে (উপরের ক্ষেত্রে, 2 টি বৈধ !s এবং @3 টি কোণে 1 বৈধ )) এবং...

    &!&
    ^$@
    ^!&
    

    না না , যদিও আছে 2, !গুলি এবং 1 @থেকে তাদের কেউ হয়, কোনো কোণে করুন।

  5. 1 বা বেশি #হয় না উপর কোন যদি না অন্তত 1, সুইচ প্রায় পক্ষের &সুইচ ঘিরে। অন্য কথায়, যদি কোনও দিকে কমপক্ষে 1 #উপস্থিত থাকে তবে &উপস্থিত উপস্থিত না থাকলে এটি অন্য সমস্ত নিয়মকে ওভাররাইড করে । অতএব:

    #&*
    *$*
    !**
    

    একটি "চালু" স্যুইচ পাওয়া যায়, যদিও এটি #বিদ্যমান থাকে, যেহেতু &স্যুইচটির চারপাশে প্রায়শই রয়েছে এবং এটি উপরোক্ত নিয়মের কমপক্ষে 1 টি অনুসরণ করে। তবে, যদি উদ্দীপনা বিন্দু এর মতো উপস্থিত না থাকে:

    #&*
    *$*
    ***
    

    স্যুইচটি বন্ধ থাকবে, যেহেতু এটি উপরোক্ত কোনও বিধি অনুসরণ করে না। অতএব, স্যুইচটি a #এবং a দ্বারা চারপাশে ঘিরে থাকতে পারে, যদিও &এটি নিয়মগুলির এক বা একাধিক অনুসরণ না করে তবে এটি বন্ধ থাকবে। এছাড়াও, আবশ্যক সবসময় মধ্যে 1 অনুপাত: একটি> = 1 হতে &s এবং #সুইচ জন্য গুলি বৈধ বলে। এই ক্ষেত্রে,

    #&!
    *$*
    **#
    

    এখনও এটি একটি অবৈধ স্যুইচ হতে পারে, যদিও এটি এই নিয়মের 1 টি অনুসরণ করে, যেহেতু 2 #টি রয়েছে তবে কেবল 1 টি &, এবং সুতরাং &s এবং #s এর মধ্যে a> = 1: 1 অনুপাত নয় । এটি বৈধ করতে, আপনার অবশ্যই অবশ্যই এর মতো এবং এর &সংখ্যার ভারসাম্য বজায় রাখতে কোনও প্রান্তে 1 বা ততোধিক অতিরিক্ত এস যুক্ত করতে হবে : সম্ভবত:#&

    #&!
    *$&
    &*#
    
    3:2 ratio between &s and #s
    

    অবশেষে ...

    #^^
    ^$*
    @^!
    

    এটি "অফ" স্যুইচ-এ ফলাফল দেয় যদিও এটি উপরোক্ত নিয়মগুলির 1 বা একাধিক অনুসরণ করে, কারণ এটির চারপাশে কমপক্ষে 1 রয়েছে #এবং &এটির ভারসাম্যহীনতা রাখার কোনও কারণ নেই।

  6. বৈধ সুইচ হবে শুধুমাত্র হতে ভিতরে একটি ইনপুট, সেইজন্য এবং, প্রতিটি বৈধ $বেষ্টিত করা আবশ্যক সম্পূর্ণরূপে বৈধ অক্ষর কোন 8। উদাহরণস্বরূপ, পুরো ইনপুটটি যদি হয়:

    *$*
    !$!
    !!!
    

    শীর্ষ $স্পষ্টভাবে হয় না একটি বৈধ সুইচ থেকে সুইচ একটি প্রান্ত চালু থাকে, তখন এবং সেইজন্য সুইচ সম্পূর্ণরূপে 8 বৈধ অক্ষর দ্বারা বেষ্টিত করা হয় না। এই উদাহরণে, স্যুইচটি এমনকি বিবেচনা করা উচিত নয়। যাইহোক, মাঝখানে স্যুইচটি সম্পূর্ণভাবে বৈধ, এবং সত্য হিসাবে এটি "চালু" রয়েছে, যেহেতু এটি উপরের প্রয়োজনীয়তার মধ্যে কমপক্ষে একটি পূরণ করে।

প্রদর্শনের জন্য, অক্ষরের এই ব্লকটি বিবেচনা করুন:

!@#^^$#!@
!@#$$*$&@
@$^!$!@&&

যেটিকে আমরা যেমন স্থানাঙ্কের জন্য উল্লম্ব অক্ষ yএবং অনুভূমিক অক্ষকে কল করতে পারি x:

y

3 !@#^^$#!@
2 !@#$$*$&@
1 @$^!$!@&&

  123456789 x

স্থানাঙ্কগুলি সর্বদা(x,y) দ্বি-মাত্রিক স্থানাঙ্ক গ্রিডের মতো ফর্ম্যাটে ফিরে আসতে হবে। এখন, কোন সুইচ চালু আছে? ঠিক আছে, প্রথমে তাদের সমস্ত খুঁজে বের করা যাক। আমরা ইতিমধ্যে দেখতে পাচ্ছি যে খুব উপরের সারিতে 1 রয়েছে এবং খুব নীচে রয়েছে আরেকটি। যাইহোক, এগুলি স্বয়ংক্রিয়ভাবে কোনও বিকল্প নেই, যেহেতু তারা 8 টি অক্ষর দ্বারা সম্পূর্ণরূপে ঘিরে নেই surrounded

পরের সারিতে একটি আসে ২. বিশেষত, এটি:

#^^
#$$
^!$

আমরা দেখতে পাচ্ছি যে এর মধ্যে 3 টি $লক্ষণ রয়েছে, তবে আমরা কেবল মাঝের একটিতে মনোনিবেশ করতে চাই এবং আপনি সম্ভবত দেখতে পাচ্ছেন যে এটি ইতিমধ্যে অবৈধ, যেহেতু #এর চারপাশে 2 টি রয়েছে &যাতে এগুলি ভারসাম্য বজায় রাখে না বাইরে। অতিরিক্তভাবে, এটি এমনকি কোনও বিধি অনুসরণ করে না, সুতরাং এটি বৈধ সুইচ হলেও, এটি যাইহোক "বন্ধ" হবে।

পরের সারি ২ তে আরেকটি আসে:

^^$
$$*
!$!

আবার, শুধুমাত্র মাঝখানে স্যুইচ উপর ফোকাস। এই সুইচ যেহেতু এটি আছে, "এ" হয় অন্তত 1 !মধ্যে অন্তত 1 কোণ। এটির স্থানাঙ্কগুলি হ'ল (5,2)

চলতে চলতে, শেষ পর্যন্ত আমরা শেষ স্যুইচটিতে চলে যাই। এটি একটি দ্বিতীয় সারিতেও রয়েছে এবং এর মতো প্রদর্শিত হয়:

$#!
*$&
!@&

এবং, আপনি সম্ভবত দেখতে পাচ্ছেন যে #এটির একটি বৈধ &সুইচও রয়েছে যদিও এর চারপাশে রয়েছে, কারণ 2 এর আরও বেশি ভারসাম্য বজায় রাখার জন্য রয়েছে #। এটির পাশাপাশি, এটি !কমপক্ষে 1 টি কোণে কমপক্ষে 1ও রয়েছে এবং তাই কেবল স্যুইচটি বৈধ নয়, এটি "চালু "ও রয়েছে। এই সুইচ এর স্থানাঙ্ক হয় (7,2)

আমরা শেষ অবধি পৌঁছে গেছি এবং পাঠ্যের পুরো ব্লকটিতে 2 "অন" স্যুইচ পেয়েছি। তাদের স্থানাঙ্কগুলি হ'ল (5,2)এবং (7,2)এটি আমাদের চূড়ান্ত উত্তর এবং আউটপুটটি কী হওয়া উচিত। তবে এই ইনপুটটি খুব সাধারণ ছিল। ইনপুটগুলি অনেক বড় আকার ধারণ করতে পারে, কারণ পাঠ্যের ব্লকটি কত বড় পেতে পারে তার সীমাবদ্ধতা নেই। উদাহরণস্বরূপ, ইনপুট এমনকি 200x200পাঠ্যের একটি এলোমেলো ব্লক হতে পারে ।

Contraints

  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।

  • এটির জন্য সম্ভবত কোনও অন্তর্নির্মিত থাকতে পারে না, তবে কেবল সেখানে (ম্যাথাম্যাটিকাকে আপনার দিকে তাকিয়ে) দেখা দিলে, বিল্ট-ইনগুলির ব্যবহার যা সরাসরি সমাধান করে তা নিষিদ্ধ।

পরীক্ষার কেস:

বিন্যাসে দেওয়া string input -> [array output]:

@#$$&^!&!# 
@*&!!^$&^@
$!#*$@#@$!   ->  [[7,3],[9,2]]
*@^#*$@&*#

#^&!$!&$@@#&^^&*&*&&
!^#*#@&^#^*$&!$!*^$$
#^#*#$@$@*&^*#^!^@&* -> [[19,3],[15,3],[8,2]]
#$@$!#@$$^!#!@^@^^*#

@!@!^&*@*@
*$*^$!*&#$
@$^*@!&&&#
**$#@$@@#!  -> [[2,8],[5,8],[6,6],[9,3]]
##*&*#!^&^
$&^!#$&^&@
^^!#*#@#$*
$@@&#@^!!&
#@&#!$$^@$


!!@##!$^#!&!@$##$*$#
$^*^^&^!$&^!^^@^&!#!
@*#&@#&*$!&^&*!@*&** -> [[9,4],[9,3]]
^!!#&#&&&#*^#!^!^@!$
&$$^*$^$!#*&$&$#^^&$

আরও শীঘ্রই আসছে

অতিরিক্ত নোট

  • আপনি ধরে নিতে পারেন যে ইনপুটটি সর্বদা একটি সম্পূর্ণ ব্লকের (যেমন একটি আয়তক্ষেত্র বা বর্গক্ষেত্র) আকারে থাকবে
  • ইনপুটটিতে অন্য কোনও চরিত্র আর কখনও থাকবে না!@#$^&*

মনে রাখবেন, এটি একটি তাই সংক্ষিপ্ততম কোডটি জয়ী!


12
কিছুটা দীর্ঘ এবং স্বেচ্ছাচারী বলে মনে হচ্ছে।
orlp

@orlp এটাই আমি যাচ্ছি এটি যাইহোক চ্যালেঞ্জ। কেন আপনি এটি স্বেচ্ছাসেবী বলছেন?
আর কাপ,

6
@ আর.কেপ কোনও নিয়মের যৌক্তিকতা নেই; তারা অকারণে জটিলতা যোগ করতে আপ মনে হয়।
মনিকার মামলার তহবিল

6
@ কিপায়সট্যাক্স এই ন্যায্যতার কী প্রয়োজন? এই হয় চ্যালেঞ্জ অনুরোধে জন্য গঠিত। এটা তোলে হয় একটি চ্যালেঞ্জ, এবং একটি চ্যালেঞ্জ আক্ষরিক হতে পারে কিছু । এটির জন্য যা প্রয়োজন তা হ'ল নিয়মের একটি সেট, একটি ইনপুট এবং সেই নিয়মের উপর ভিত্তি করে আউটপুট কী হওয়া উচিত।
আর কাপ,

1
আমি বলছি না যে আমি রাজি, আমি কেন ব্যাখ্যা দিচ্ছি তা ব্যাখ্যা করছি। আমার সর্বাধিক জনপ্রিয় চ্যালেঞ্জটিকে উদাহরণ হিসাবে ধরুন : আপনি যদি সমস্ত প্রসঙ্গটি সরিয়ে ফেলেছেন এবং কেবল বলেছেন, "আপনাকে কিছু স্ট্রিং দেওয়া হয়েছে। ইনডেন্টেশনের উপর ভিত্তি করে, তাদের গোষ্ঠী করুন, গোষ্ঠীগুলিকে বদলে দিন, তবে অভ্যন্তরীণ দলগুলিকে বদল করুন, তবে সদস্যদের রাখুন নীচের অংশে অভ্যন্তরীণ গোষ্ঠীগুলি যদি তারা উপস্থিত থাকে তবে ", এটি খুব একটা বোঝায় না। তবে, এর প্রসঙ্গ রয়েছে বলে, এই সমস্ত অদ্ভুত নিয়ম এবং বিধিনিষেধগুলি অন্তত বুদ্ধিমান হওয়ার ভান করে।
মনিকার লসুইট

উত্তর:


2

হাস্কেল, 304 বাইট

import Data.List
s!c=sum[1|a<-s,a==c]
f t|Just w<-elemIndex '\n't,h<-t!'\n'=[c|c<-mapM(\a->[2..a-1])[w,h],s<-[(\[x,y]->t!!((h-y-1)*(w+1)+x))<$>mapM(\a->[a-2..a])c],s!!4=='$',foldr1(-)((s!)<$>"#&")<1,or$("@!"/="@!"\\map(s!!)[0,2..8]):zipWith(\c i->all(==c)$(s!!)<$>[0..8]\\(4:i))"^&**"[[],[],[1,7],[3,5]]]

এটি fপ্রদত্ত কার্য সম্পাদন করে এমন ফাংশনটি সংজ্ঞায়িত করে ।


2

জাভাস্ক্রিপ্ট (ES6), 363 339 312 309 298 বাইট

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

a=>[...a].map((z,p,m)=>(y-=z==B,z)=='$'&&(r=m[p-n-2]+m[p-n]+m[p+n]+m[p+n+2]+m[p-n-1]+m[p-1]+m[p+1]+m[p+n+1],r=r[L]<9?r:'')[T]`&`[L]>=r[T]`#`[L]&&(/(\^|&){8}|\*{4}(.\*\*.|\*..\*)/.exec(r)||/!|@/.exec(r.substr(0,4)))&&[1+(p-(w-y))%n,y],y=w=a[T='split'](B='\n')[L='length'],n=a.search(B)).filter(e=>e)

2

পাইথন 2 , 299 297 279 275 261 259 বাইট

m=input()
R=range
h=len(m)
for y in R(h-2):
 for x in R(len(m[0])-2):
	a=''.join(m[y+o][x:x+3]for o in R(3))
	if(a.count('&')>=a.count('#'))*(a[:4]+a[5:]in('^'*8,'&'*8)or'*'*6in(a[:3]+a[6:],a[::3]+a[2::3])or'!'in a[::2]or'@'in a[::2])*a[4]=='$':print x+2,h+~y

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

স্ট্রিংগুলির তালিকা হিসাবে ইনপুট নেয়

এক্স এর এক জোড়া হিসাবে আউটপুট মুদ্রণ করে, প্রতিটি লাইনে y স্থানাঙ্ক করে

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