दायीं ओर प्राथमिकता


12

आपका काम एक चौराहे पर यातायात को विनियमित करना है। उत्तर, पूर्व, दक्षिण और पश्चिम से 4 सड़कें आ रही हैं।

इनपुट एक स्ट्रिंग है जो प्रत्येक सड़क पर आगामी ट्रैफ़िक का प्रतिनिधित्व करता है। उदाहरण के लिए, 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
@ सड़क सुरक्षा के साथ काम करते समय, अपरिभाषित व्यवहार स्वीकार नहीं किया जा सकता है :-)
अरनौद


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

PHP, 267 बाइट्स

नए अंतरिक्ष यान संचालक का उपयोग करें और @IsmaelMiguel द्वारा -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()एक अनाम फ़ंक्शन बना दिया। फिर, इसके बजाय global(कभी भी इसका उपयोग न करें), मैंने उपयोग किया है function(...)use($t,$p){...}use(...)वाक्य रचना आप (यह भी recerences स्वीकार करता है) गुमनाम समारोह शरीर में चर पारित करने के लिए अनुमति देता है।
इस्माइल मिगुएल

@IsmaelMiguel इस अद्भुत व्याख्या के लिए धन्यवाद।
जॉर्ग ह्यूल्सरमैन

आपका स्वागत है। मैं वास्तव में use()गुमनाम कार्यों पर थोड़ा प्यार करता हूं । आपको इसका उपयोग और दुरुपयोग करना चाहिए।
इस्माइल मिगुएल

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%%%

मेरे जावास्क्रिप्ट उत्तर का सरल बंदरगाह। ऊपरी या निचले मामले में एसटीडीआईएन पर इनपुट लेता है।


1

जावास्क्रिप्ट (ईएस 6), 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 /
साइओस

@Cyoce वूप्स। क्या हुआ कि ब्राउज़र ने उस बिंदु पर कोड लपेट दिया और मुझे लगा कि एक नई पंक्ति में क्रेप था। इसके बारे में क्षमा करें।
नील

कोई बात नहीं, बस आपको बता देता हूं।
21
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.