ডানদিকে অগ্রাধিকার


12

আপনার কাজ হ'ল ক্রসরোডে ট্র্যাফিক নিয়ন্ত্রণ করা। উত্তর, পূর্ব, দক্ষিণ এবং পশ্চিম থেকে চারটি রাস্তা আসছে।

ইনপুটটি প্রতিটি রাস্তায় আগত ট্র্যাফিকের প্রতিনিধিত্বকারী একটি স্ট্রিং। উদাহরণস্বরূপ, NNNWSমোট 5 টি গাড়ি নির্দেশ করে: উত্তরে তিনটি, পশ্চিমে একটি এবং দক্ষিণে একটি। অক্ষরের ক্রমের এখানে কোনও গুরুত্ব নেই, NNNWSসমান WNNSN

সঠিক নিয়মের অগ্রাধিকারটি ব্যবহার করে গাড়িগুলি যে ক্রমগুলি চলতে হবে সেগুলি আপনাকে আউটপুট করতে হবে: দক্ষিণ থেকে আগত গাড়িগুলি পূর্ব থেকে আগত গাড়িগুলিকে প্রথমে যেতে দেওয়া উচিত, পূর্বটি উত্তর দিকে যাত্রা করবে, উত্তর পশ্চিম এবং পশ্চিমে পথ দেয় দক্ষিণ।

উদাহরণস্বরূপ, ইনপুট সহ NNNWS, দক্ষিণ গাড়িটি প্রথমে, তারপরে পশ্চিম গাড়ি, তারপরে 3 উত্তরের গাড়ি হওয়া উচিত। আউটপুট এইভাবে হওয়া উচিত SWNNN

কিছু অনিবার্য কেস রয়েছে, উদাহরণস্বরূপ NSবা NNWSE: আপনার তারপরে স্ট্রিং আউটপুট করা উচিত stuck

পরীক্ষার মামলা

N => N
NW => WN
NWS => SWN
SNW => SWN
SSSSS => SSSSS
ENNNNES => NNNNEES
NS => stuck
NNWSE => stuck

3
এগুলি উভয়ই অনেক বেশি শক্ত বলে মনে হয় কারণ তারা বহির্গামী দিকগুলিও বিবেচনায় নেয়।
মার্টিন এন্ডার

3
আমি মুদ্রণের পরিবর্তে অপরিজ্ঞাত আচরণ ব্যবহার করার পরামর্শ দেব stuck
এরিক দি আউটগল্ফার

4
@Erik যখন সড়ক নিরাপত্তা সঙ্গে যখন কারবারী, অনির্ধারিত আচরণ গ্রহণ করা যাবে না :-)
Arnaud


2
ফাঁকা স্ট্রিং কি ইনপুট হিসাবে সম্ভব? যদি তাই হয় তবে ফলাফল কী হওয়া উচিত? আর NSআটকা পড়েছে কেন ? কারণ উভয় NSএবং SNএকটি সমাধান হতে পারে?
টন হসপেল

উত্তর:


2

পার্ল, 65 বাইট

এর জন্য +2 অন্তর্ভুক্ত -lp

STDIN এ ইনপুট দিন। ধরে নিলাম খালি স্ট্রিংটি কোনও বৈধ ইনপুট নয়

#!/usr/bin/perl -lp
s%.%'+(y/NESW/ESWN/*s/N(.*)W/W$1N/,/N/^/S/)'x4%gere+0or$_=stuck

আপনি বিকল্পটি stuckফেলে দেওয়ার পরে যদি কোনও নতুন লাইনের অনুপস্থিতিতে আপত্তি না রাখেনl


2

পিএইচপি, 267 বাইট

নতুন স্পেসশিপ অপারেটর ব্যবহার করুন এবং @ ইসমাইলমিগুয়েল দ্বারা -5 বাইট ব্যবহার করুন

<?foreach($f=[E,S,W,N]as$l)$s.=+!($r=strstr)($i=$argv[1],$l);if(in_array($s,[0101,1010,0000]))die(stuck);$x=($p=strpos)($s,"1");$t=$r($j=join($f),$f[$x]).$r($j,$f[$x],1);$a=str_split($i);usort($a,function($x,$y)use($t,$p){return$p($t,$x)<=>$p($t,$y);});echo join($a);

ভাঙ্গন

# Extended Version without notices
$s="";
foreach($f=["E","S","W","N"] as $l){$s.=+!strstr($i=$argv[1],$l);} #bool concat swap the false true values in string
if(in_array($s,["0101","1010","0000"])){die("stuck");} # NS WE NESW -> stuck = end program
$x=strpos($s,"1"); # find the first false value for an begin for the sort algorithm
$t=strstr($j=join($f),$f[$x]).strstr($j,$f[$x],1); # create the sort pattern
#sort algorithm example sort string = NESW-> N is not in the string
function c($x,$y){
    global $t;
    return strpos($t,$x)<=>strpos($t,$y); # e.g. comparison E<=>W =-1 , W<=>S=1, W<=>W =0
}
$a=str_split($i); # Input in an array
usort($a,"c"); #sort array
echo join($a);# output array as string

1
পরিবর্তে function c($x,$y){global$t,$p;return$p($t,$x)<=>$p($t,$y);}$a=str_split($i);usort($a,c);, আপনি $a=str_split($i);usort($a,function($x,$y)use($t,$p){return$p($t,$x)<=>$p($t,$y);});5 বাইট ব্যবহার এবং সংরক্ষণ করতে পারেন । স্পেসশিপ অপারেটর এই ধরণের বাছাইয়ের সাথে সত্যই সহায়তা করেছিল। আমি কী করেছি তা বোঝার জন্য আমি ফাংশনটিকে usort()একটি বেনামে পরিণত করেছি into তারপরে, global(কখনও এটি ব্যবহার করুন) এর পরিবর্তে , আমি ব্যবহার করেছি function(...)use($t,$p){...}use(...)সিনট্যাক্স আপনি (এটা খুব recerences গ্রহণ) বেনামী ফাংশন শরীরের মধ্যে ভেরিয়েবল পাস করতে পারবেন।
ইসমাইল মিগুয়েল

@ ইসমাইল মিগুয়েল এই দুর্দান্ত ব্যাখ্যা করার জন্য আপনাকে ধন্যবাদ।
জার্গ হালসারম্যান 10

আপনাকে স্বাগতম. আমি use()বেনাম ফাংশনগুলিতে বিটটি সত্যিই পছন্দ করি । আপনার এটি ব্যবহার এবং অপব্যবহার করা উচিত।
ইসমাইল মিগুয়েল 10 ই

1

ব্যাচ, 216 বাইট

@echo off
set/pt=
set/an=2,e=4,s=8,w=16,r=0
:l
set/ar^|=%t:~0,1%
set t=%t:~1%
if not "%t%"=="" goto l
set/a"o=449778192>>r&3,l=1053417876>>r&3"
if %l%==0 (echo stuck)else set t=NESWNE&call echo %%t:~%o%,%l%%%

আমার জাভাস্ক্রিপ্ট উত্তরের সহজ বন্দর। উচ্চ বা নিম্ন ক্ষেত্রে STDIN এ ইনপুট নেয়।


1

জাভাস্ক্রিপ্ট (ES6), 108 107 106 104 বাইট

s=>(r=t=`NESWNE`,s.replace(/./g,c=>r|=2<<t.search(c)),t.substr(449778192>>r&3,1053417876>>r&3)||`stuck`)

বিটমাস্ককে একত্রিত করে যার দিকনির্দেশে গাড়িগুলির কাছে পৌঁছেছে এবং অগ্রাধিকারের স্ট্রিংয়ের উপযুক্ত অংশটি বের করে।


Uncaught SyntaxError: Invalid regular expression: missing /
সাইওস

পছন্দ করুন যা ঘটেছিল তা হল ব্রাউজারটি সেই সময়ে কোডটি মুড়ে ফেলেছিল এবং আমি ভেবেছিলাম একটি নতুন লাইন প্রবেশ করেছে। সে সম্পর্কে দুঃখিত।
নিল

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