গোলাপ দিয়ে আমাকে 22.5 করুন Turn


38

একটি স্ট্রিং দেওয়া হয়েছে যা 16-পয়েন্টের কম্পাস গোলাপের দিকনির্দেশগুলির মধ্যে একটি

16-পয়েন্টের কম্পাস গোলাপ

দুটি দিক যা আক্ষরিকভাবে ইনপুট দিকের সাথে সংলগ্ন, ঘড়ির কাঁটার ক্রমে আউটপুট দেয়।

বিশেষত, আপনার এই (এবং কেবলমাত্র) ইনপুট / আউটপুট জোড়াগুলি পরিচালনা করতে হবে:

Input  Output
N      NNW NNE
NNE    N NE
NE     NNE ENE
ENE    NE E
E      ENE ESE
ESE    E SE
SE     ESE SSE
SSE    SE S
S      SSE SSW
SSW    S SW
SW     SSW WSW
WSW    SW W
W      WSW WNW
WNW    W NW
NW     WNW NNW
NNW    NW N

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

উদাহরণস্বরূপ, ইনপুট N(বা nআপনি যদি ছোট হাতের ব্যবহার করছেন) এর জন্য কিছু বৈধ আউটপুট হ'ল:

NNW NNE
NNW-NNE
["NNW", "NNE"]
nnw-nne (if using lowercase)

কিছু অবৈধ ফলাফল:

NNWNNE
NNE NNW
nnwNNE
NNw NNe

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

উত্তর:


11

গণিত, 118 112 বাইট

6 টি বাইট সংরক্ষণের জন্য মার্টিন ইন্ডারকে ধন্যবাদ!

r=StringSplit@"N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW N NNE";<|Array[r[[#]]->r[[#+{-1,1}]]&,16,2]|>

অজানা ফাংশন (সত্যিই একটি সমিতি) যা ইনপুট হিসাবে একটি স্ট্রিং নেয় এবং একটি আদেশযুক্ত জোড় স্ট্রিং দেয়। মূলত উত্তর হার্ডকোড।


11

জেলি , 37 34 বাইট

“¢ ¬9£Hæz¥{çb¤S®!‘ṃ€“¡&¦»
¢iµ’,‘ị¢

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

ছোট হাতের ইনপুট নেয়।

-2 জনাথন অ্যালানকে ধন্যবাদ ।
-1 যেহেতু দেখা যাচ্ছে এটি একটি ফাংশন হিসাবে বৈধ :)

জোনাথন অ্যালান (এবং ডেনিস) কে ধন্যবাদ, এখন আপনি এটিকে মুছে ফেলতে পারেন । দুর্ভাগ্যক্রমে, এটি এখানে প্রতিদ্বন্দ্বী হবে।

বিস্তারিত অ্যালগরিদম ব্যাখ্যা :

আমরা সাধারণত নীচে (মূল) লিঙ্কটি থেকে নীচে গিয়ে ব্যাখ্যা করা শুরু করি তবে এখানে আমি মনে করি এটি শীর্ষ থেকে ব্যাখ্যা করা আরও উপযুক্ত।

প্রথমত, আমরা কেবল তালিকাটি লোড করি [1, 32, 7, 57, 2, 67, 17, 92, 3, 94, 19, 119, 4, 109, 9, 34]। মনে হচ্ছে এলোমেলো নাম্বার হাহ? ঠিক আছে, এটি আসলে বেস -5-সংক্ষেপিত সংখ্যার একটি তালিকা, তাই আমরা এটি বেস -5-সংক্ষেপিত করি। এখন দেখে মনে হচ্ছে [[1], [1, 1, 2], [1, 2], [2, 1, 2], [2], [2, 3, 2], [3, 2], [3, 3, 2], [3], [3, 3, 4], [3, 4], [4, 3, 4], [4], [4, 1, 4], [1, 4], [1, 1, 4]]। এখনও এলোমেলো চেহারার স্টাফ, তবে এটি প্রকৃতপক্ষে NESWষোলটি স্থানাঙ্কের তালিকাভুক্ত তালিকা, সুতরাং আমরা তালিকাটি সম্পূর্ণ করা থেকে খুব বেশি দূরে নই (জেলি 1-সূচকযুক্ত)। চূড়ান্ত ম্যাপিংয়ের মাধ্যমে আমরা পেয়েছি [['N'], ['N', 'N', 'E'], ['N', 'E'], ['E', 'N', 'E'], ['E'], ['E', 'S', 'E'], ['S', 'E'], ['S', 'S', 'E'], ['S'], ['S', 'S', 'W'], ['S', 'W'], ['W', 'S', 'W'], ['W'], ['W', 'N', 'W'], ['N', 'W'], ['N', 'N', 'W']], যা আমরা চাই সম্পূর্ণ তালিকা (জেলি স্ট্রিং ফর্মটিতে রয়েছে [char1, char2, char3, ...]))

যেহেতু আমরা এখন সমন্বয় তালিকা তৈরি করেছি, আমরা এটি নিয়ে কাজ করি। মূল লিঙ্কটি খেলতে আসে। প্রথমে আমরা যে তালিকাটি তৈরি করেছি তা লোড করে তারপরে ইনপুটটি (কমান্ড-লাইন আর্গুমেন্ট হিসাবে) সমন্বিত থাকে এমন সূচিটি নিয়ে যাই Then তারপরে, আমরা এর পূর্বসূরি এবং এর উত্তরসূরিকে একটি তালিকায় যুক্ত করি, এবং আমরা সেগুলি মডুলার হিসাবে ব্যবহার করি স্থানাঙ্কের একই তালিকার সূচকগুলি যথাক্রমে ইনপুটটির বাম এবং ডানে স্থানাঙ্ক নিতে। আপনি এখন ভাবেন যে আমরা শেষ পর্যন্ত শেষ করেছি, তবে বাস্তবে আরও একটি জিনিস রয়েছে, বিভাজক। এটি ফাংশন হিসাবে বৈধ, যেহেতু 1) আপনি এটিকে <integer>Ŀ2 ব্যবহার করে কল করতে পারেন ) আপনাকে অন্যান্য ফাংশনগুলিও সংজ্ঞায়িত করার অনুমতি দেওয়া হয়েছে (যেমন মডিউলগুলি আমদানি করা)। এখন, আমরা সম্পন্ন। সম্পূর্ণ প্রোগ্রাম হিসাবে, এর কোনও বিভাজক নেই, তবে এটি ঠিক আছে, কারণ এটি একটি ফাংশন হিসাবে কাজ করে।

লিঙ্ক-বাই লিংক কোড ব্যাখ্যা :

¢iµ’,‘ị¢K Main link. Arguments: z = cmd0
¢         Run the helper link niladically (i.e. load the coordinate list).
 i        Find the index of z in the list.
  µ       Start a new monadic chain. Arguments: z = list_index.
   ’      Decrement z.
     ‘    Increment z.
    ,     Pair x and y into [x, y].
       ¢  Run the helper link niladically.
      ị   Take the elements of y at the indices in x.

“¢ ¬9£Hæz¥{çb¤S®!‘ṃ€“¡&¦» Helper link. Arguments: [1, 32, 7, 57, 2, 67, 17, 92, 3, 94, 19, 119, 4, 109, 9, 34]
“¢ ¬9£Hæz¥{çb¤S®!‘        Generate the integer list (the argument).
                    “¡&¦» Literal "newsy".
                  ṃ€      Base-length(y)-decompress every integer in x, then index into y.


8

পাইথন 2, 116 115 103 বাইট

-12 বাইট ধন্যবাদ নীলকে

d='N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW'.split()
n=d.index(input())
print d[n-1],d[n-15]

অনলাইনে চেষ্টা করে দেখুন!


2
d[n-15]শর্ত এড়াতে ব্যবহার করুন ।
নীল

1
যাইহোক, আপনার উত্তরে কোড বিভাগের শেষে একটি বহিরাগত উদ্ধৃতি রয়েছে। আমি নিজেই একটি সম্পাদনার অনুরোধ রাখব তবে সম্পাদনাটি কমপক্ষে ছয়টি অক্ষর হতে হবে এবং এটি কেবল একটি হবে।
notjagan

1
@ নীল ধন্যবাদ! প্রচুর বাইটস সংরক্ষণ করেছেন :)
গণিত জাঙ্কি

1
@ নটজাগান এটি উল্লেখ করার জন্য ধন্যবাদ এটি স্থির করে
গণিত জাঙ্কি

8

জাভাস্ক্রিপ্ট ES6, 106 102 বাইট

p=>[(a=`N|NNE|NE|ENE|E|ESE|SE|SSE|S|SSW|SW|WSW|W|WNW|NW|NNW`.split`|`)[i=a.indexOf(p)-1&15],a[i+2&15]]

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

const f = p=>[(a=`N|NNE|NE|ENE|E|ESE|SE|SSE|S|SSW|SW|WSW|W|WNW|NW|NNW`.split`|`)[i=a.indexOf(p)-1&15],a[i+2&15]]

console.log(f('N'))
console.log(f('NNE'))
console.log(f('ENE'))
console.log(f('E'))
console.log(f('ESE'))
console.log(f('SE'))
console.log(f('SSE'))
console.log(f('S'))
console.log(f('SSW'))
console.log(f('SW'))
console.log(f('WSW'))
console.log(f('W'))
console.log(f('WNW'))
console.log(f('NW'))
console.log(f('NNW'))


letপরিবর্তে 2 বাইট সংরক্ষণ করুন const
সম্মানিত মুল

1
ভেরিয়েবলের ঘোষণাপত্রগুলি যেখানে সেগুলি প্রথমে ব্যবহার করা হয় সেখানে নিয়ে যাওয়ার মাধ্যমে বাইটগুলি অনলাইনে চেষ্টা করে দেখুন
fəˈn 14tɪk

7

05 এবি 1 ই , 44 43 বাইট (আদনানকে ধন্যবাদ)

"ESNW4"•2ßU^]>Þ‡¾“¾&é{½‡•5BSè4¡©skD<®ès>®è)

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

"ESNW4"•2ßU^]>Þ‡¾“¾&é{½‡•5BSè # Push N4NNE4NE4ENE4E4ESE4SE4SSE4S4SSW4SW4WSW4W4WNW4NW4NNW
4¡©            # Split on 4's and store.
   sk          # Index of input in direction array.
     D<®è      # Element before index of input.
         s>®è  # Element after index of input.
             ) # Wrap two element to array.

অসাধারণ আউটপুট:

N => [NNW,NNE]

N0NNE0NE0ENE0E0ESE0SE0SSE0S0SSW0SW0WSW0W0WNW0NW0NNWপরিবর্তে ধাক্কা দেওয়া সংস্করণ :

•17¿$Mn]6VAÆ—Dªd—•5B4LJ"NSWE"‡0¡©skD<®ès>®è)

এছাড়াও 44-বাইট, আমার রিফ্যাক্টরের 0 কারণ ছিল এবং 4 এর বিভক্ত হওয়ার 0 কারণ রয়েছে।



1
এস বিশেষ বিভাজন কোন বিশেষ কারণ 4?
গ্রেগ মার্টিন

@ গ্রেগমার্টিন •17¿$Mn]6VAÆ—Dªd—•5B4LJ"NSWE"‡0¡©skD<®ès>®è)প্রমাণ করেছেন যে, না, এর কোনও কারণ নেই। ডেলিমিটার হিসাবে 0 ব্যবহার করা একই সংকোচনের অনুপাত, কারণ এটি বেস -5 রূপান্তরকরণের সংখ্যার দৈর্ঘ্যকে বেস -214 এ নামায় না। কানা এটি করে শপথ করল যে যদিও আমাকে একটি বাইট বাঁচিয়েছে।
ম্যাজিক অক্টোপাস উরন

আপনি „ €Ã¦•174SÝ©l2ÎG¦˜fÐ98•5BSè#ÐIk©<ès®>è)4 বাইট সংরক্ষণ করতে পারেন ।
এমিগানা

7

জাভাস্ক্রিপ্ট - 234 154 156 152 120 106 102 বাইট

শুধু আমার দ্বিতীয় বার কোড গল্ফ করছে !!

সর্বশেষ সংশোধন:

এই পরিষ্কার পরিচ্ছন্ন কৌশলটির জন্য আপনাকে @ fəˈnɛtɪk ধন্যবাদ!

s=>[(a=`NNW N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW`.split` `)[n=a.indexOf(s)-1&15],a[n+2&15]]

তার আগে: ঠিক আছে তাই সর্বশেষ সংশোধন: ইনপুট একটি স্ট্রিং এবং আউটপুট একটি স্ট্রিং যা নিয়মে থাকে তাই আমি এটিকে একটি ফাংশনে পরিণত করেছি এবং হ্রাসের সাথে আমি আরও ছোট হয়ে গেছি (এছাড়াও ফাংশন বেনামে রয়েছে, যার অর্থ এখন আমার হয়েছে কোনওভাবে অন্য জেএসের উত্তরকে ছড়িয়ে দিল ওফ! উনার (পাওয়েলস) এটি প্রথম ছিল !!):

(s,a=`NNW N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW`.split` `,n=a.indexOf(s))=>[a[n-1&15],a[n+1&15]]

এর দ্বারা ব্যবহার করা যেতে পারে:

f=(s,a=`NNW N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW`.split` `,n=a.indexOf(s))=>[a[n-1&15],a[n+1&15]]
alert(f(prompt()))

আউটপুট - 120 এর সাথে পুনরায় তৈরি (ফাংশন নয়):

a="NNW N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW".split(' ');n=a.indexOf(prompt());alert(a[n-1&15]+' '+a[n+1&15]);
  • নোট করুন যে আমি প্রথমে ত্রুটি করেছি, প্রথম সূচকটির জন্য এটি দৈর্ঘ্য -1 এর পরিবর্তে দৈর্ঘ্যের সমান হবে। এটি এনএনডাব্লুয়ের পক্ষে কাজ করে না বলে উল্লেখ করার জন্য @ নীলকে ধন্যবাদ জানাই।

  • নোট 2: আমাকে কোডটি সংক্ষিপ্ত করতে সহায়তা করার জন্য @ নীল এবং @ETHProductions আপনাকে ধন্যবাদ!

Originial:

a="NNWN  NNENE ENEE  ESESE SSES  SSWSW WSWW  WNWNW ";l=prompt("","");n=l.length<3?l.length<2?l+'  ':l+' ':l;f=a.indexOf(n);i=f-3;j=f+3;i=i<0?a.length+--i:i;j=j+3>=a.length?j-a.length:j;alert(a.substring(i,i+3)+' '+a.substring(j,j+3));

1
গল্ফওয়ার্ল্ডে স্বাগতম!
গ্রেগ মার্টিন

1
এটি কাজ করে না NNW
নীল

@ নিল আপনি সঠিক আছেন আমি এটা ঠিক করব!
ব্লু ওকিরিস

1
আমি বুঝতে পারছিলাম যে এটি আপনার সাথে খুব মিলেছে before আপনার জন্য কয়েকটি টিপস: ১) বেনামে ফাংশনগুলি বৈধ, ২) আপনার জমা দেওয়ার ক্ষেত্রে আপনাকে একটি ইনপুট অনুরোধ করতে হবে না, এটির জন্য কেবল একটি গ্রহণ করতে সক্ষম হওয়া প্রয়োজন, ৩) আপনার আউটপুটটিতে লগ ইন করতে হবে না আপনার জমা, সহজভাবে ফিরে। এই সমস্ত বিষয় মাথায় রেখে, আপনার সমাধানটি আরও উন্নত করার জন্য আমি এখানে 106 টি অক্ষর রেখেছি: পি => (এ = "এন, এনএনই, এনই, ইএনই, ই, ইএসই, এসই, এসএসই, এস, এসএসডাব্লু, এসডাব্লু , WSW, W, WNW, NW, NNW ".স্প্লিট ,, i = a.indexOf (পি), [এ [আই -1 এবং 15], এ [আই + 1 এবং 15]])
শেগি

1
-4 বাইটগুলি পরিবর্তনশীল ঘোষণাগুলি যেখানে ব্যবহার করা হয় সেদিকে নিয়ে তা অনলাইনে
fəˈnɛtɪk

3

ব্যাচ, 196 বাইট

@set s=N
@if %1==N echo NNW
@for %%r in (NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW)do @call:c %1 %%r
@if %1==NNW echo N
@exit/b
:c
@if %1==%2 echo %s%
@if %1==%s% echo %2
@set s=%2

অন্যান্য ম্যাচ যখন একটি মুদ্রণ, কম্পাস পয়েন্ট প্রতিটি জোড়া মাধ্যমে লুপ। উদাহরণস্বরূপ, একটি প্যারামিটারের জন্য ENE, যখন লুপ পৌঁছে যায় ENE, ভেরিয়েবলটি sথাকে NEযা মুদ্রিত হয়, তারপরে লুপ যখন অগ্রসর হয় E, ভেরিয়েবলটি sথাকে ENEএবং তাই Eমুদ্রিত হয়। কম্পাস পয়েন্টগুলি ভুল ক্রমে মুদ্রণ করা থেকে বাঁচতে এক জোড়া তারপরে বিশেষ ক্ষেত্রে হওয়া দরকার।


3

হাস্কেল , 100 99 বাইট

s=words"N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW"++s
(a:b:c:r)#x|x==b=(a,c)|1<3=r#x
(s#)

এটি অনলাইন চেষ্টা করুন! কলিং (s#) "N"রিটার্ন ("NNW","NNE")

sদিকনির্দেশের তালিকার অসীম পুনরাবৃত্তি, সুতরাং তালিকার প্রান্তগুলি সঠিকভাবে পরিচালনা করতে আমাদের কোনও অতিরিক্ত যুক্ত করতে হবে না Nএবং NNEঅন্যান্য উত্তরগুলির মতো করতে হবে।

একটি বাইট সংরক্ষণ করার জন্য @ নিমিকে ধন্যবাদ!


1
একটি পোতা ফাংশন একটি বাইট সংরক্ষণ: (a:b:c:r)!x| ... =r!x;(s!)
নিমি

2

জেলি ,  40 38 বাইট

“NSWE”“dḍ.ƈ€ḶƘfƥ’ṃṁ
“¢)`)’ḃ3RÇṙi¥µṖṪ,Ḣ

এটি অনলাইন চেষ্টা করুন! (আউটপুটটি দেখানোর জন্য পাদলেখ যুক্ত দুটি আইটেমের তালিকা) ... বা সমস্ত কেস দেখুন

(আমি কেন পুরোপুরি নিশ্চিত নই 1323DRẋ4স্থানে “¢)`)’ḃ3Rমুহূর্তে কাজ করে না।)

কিভাবে?

“NSWE”“dḍ.ƈ€ḶƘfƥ’ṃṁ - Link 1, rose list helper: shape array
“NSWE”              - "NSWE"
      “dḍ.ƈ€ḶƘfƥ’   - base 250 number: 1554210846733274963415
                 ṃ  - base decompress: "NNNENEENEEESESESSESSSWSWWSWWWNWNWNNW"
                  ṁ - mould like shape array

“¢)`)’ḃ3RÇṙi¥µṖṪ,Ḣ - Main link: direction string
“¢)`)’             - base 250 number: 33899292
      ḃ3           - to base 3: [1,3,2,3,1,3,2,3,1,3,2,3,1,3,2,3]
        R          - range (vectorises) [[1],[1,2,3],[1,2],[1,2,3],[1],[1,2,3],[1,2],[1,2,3],[1],[1,2,3],[1,2],[1,2,3],[1],[1,2,3],[1,2],[1,2,3]]
         Ç         - call the last link (1) as a monad: ["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"]
            ¥      - last two links as a dyad
          ṙ        -     rotate the list by:
           i       -         index of the direction string in the list
             µ     - monadic chain separation (call the rotated list x)
              Ṗ    - pop (x[:-1]) (removes the direction string)
               Ṫ   - tail that (i.e. x[-2])
                 Ḣ - head x (i.e. x[0])
                ,  - pair

2

এসওজিএল , 33 বাইট

≠┐πΜ]ρ½d⁹V¹-┐*╔╤¹Ψæ;¶‘θ,W:AHwOaIw

প্রথম অংশটি ≠┐πΜ]ρ½d⁹V¹-┐*╔╤¹Ψæ;¶‘হ'ল একটি সংকুচিত স্ট্রিং

N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW

সঙ্গে একটি কাস্টম অভিধান সংকুচিত ENSW

প্রোগ্রামের বাকি:

...‘θ,W:AHwOaIw  example input: NNW
...‘             push the compressed string        ["N NNE NE ... NNW"]
    θ            split on spaces                   [["N","NNE",...,"NNW"]]
     ,W          get the index of input            [["N","NNE",...,"NNW"], 16]
       :A        save the index on variable A      [["N","NNE",...,"NNW"], 16]
         H       decrease [the index]              [["N","NNE",...,"NNW"], 15]
          wO     output that'th item of the array  [["N","NNE",...,"NNW"]]
            a    load variable A                   [["N","NNE",...,"NNW"], 16]
             I   increase [the index]              [["N","NNE",...,"NNW"], 17]
              w  get that item in the array        [["N","NNE",...,"NNW"], "N"]

কোন কোড পৃষ্ঠা?
জোশুয়া

@ জোশুয়া bytesশিরোনামে কোডের সাথে একটি লিঙ্ক রয়েছে
ডিজাইমা

@ জোশুয়া আসলে, এটি মার্কডাউনের কারণে বেশ কয়েকটি চরিত্র হারিয়েছিল, তবে এটি এখন ঠিক হয়েছে
জিজাইমা

2

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

preg_match("/([^ ]+ )$argv[1] ([^ ]+)/",'N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW N NNE',$m);
echo $m[1].$m[2];

1
অযৌক্তিক সাদা স্থান সরিয়ে আপনি 2 বাইট সংরক্ষণ করতে পারেন। -3 প্রতিস্থাপন জন্য বাইট $argv[1]সঙ্গে $argnএবং -R বিকল্প ব্যবহার করে। আপনি যদি ereg("([^_]+)_{$argn}(_[^_]+)",N_NNE_NE_ENE_E_ESE_SE_SSE_S_SSW_SW_WSW_W_WNW_NW_NNW_N_NNE,$t);echo$t[1].$t[2];
অবসন্ন

1

রুবি - 94 বাইট

নীল ওকিরিসের উত্তরের উপর একটি রিফ , কেবলমাত্র কিছু সুন্দর রুবি শর্টহ্যান্ড ( %w[]সিনট্যাক্স এবং pবিশেষত) এর সুবিধা নিতে :

->(s,d=%w[N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW],n=d.index(s)){p d[n-1],d[n-15]}

1

জাপট , 66 52 বাইট

14 বাইট সংরক্ষিত হয়েছে @ ইথ প্রডাকশনগুলির জন্য ধন্যবাদ

V=`ã@JaÀTeaÀÄsÁÁss°s°ws°°wn°n°nnw`qa [J1]£VgX+VaU

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

ব্যাখ্যা:

V=(`...`qa) [J1]£Vg(X+VaU)
V=(       )                // Set V to:
   `...`                   //   "nanneaneaeneaeaeseaseasseasasswaswawswawawnwanwannw" (de-)compressed
        qa                 //    Split on "a", creating [n...nnw]
            [J1]           // [-1,1]
                £          // Iterate through ^, X becomes the iterative item
                 Vg(     ) //   V.Item at index:
                    X+VaU  //     X + V.indexOf(input)

খুব সুন্দর. একটি দম্পতি উন্নতি: 1) আপনি অ্যারে বড় হাতের মধ্যে রূপান্তর না করে ছোট হাতের ইনপুট নিতে পারেন। 2) আপনি আসলে অপসারণ করতে পারেন 'মধ্যে q'oএবং এটি ঠিক একই :-) কাজ করবে
ETHproductions

এছাড়াও, আপনি [J1]£VgX+VaUকয়েকটি বাইট সংরক্ষণ করতে শেষে অ্যারে নির্মাণকে কমিয়ে আনতে পারেন
ETH Productions

@ এথ প্রডাকশনগুলি উজ্জ্বল, ধন্যবাদ!
অলিভার


1

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

for($r=explode(_,($w=N_NNE_NE_ENE_E_ESE_SE_SSE_).strtr($w,SWNE,NESW).$w);$r[++$i]!=$argn;);echo$r[$i-1]._.$r[$i+1];

-2 এর splitপরিবর্তে অবহিত ফাংশন ব্যবহার করে বাইটসexplode

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

for($i=2;$i--;print$i?end($e)._:$e[2])$e=explode(_,strstr(($w=N_NNE_NE_ENE_E_ESE_SE_SSE_).strtr($w,SWNE,NESW).$w,_.$argn._,$i));

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

echo($r=explode(_,N_NNE_NE_ENE_E_ESE_SE_SSE_S_SSW_SW_WSW_W_WNW_NW_NNW))[($k=array_search($argn,$r))-1<0?15:$k-1]._.$r[$k+1>15?0:$k+1];

1

পিএইচপি, 110 109 বাইট

জার্গ হালসারম্যানকে 1 বাইট সংরক্ষণ করা হয়েছে

echo@preg_filter("/.*?(\w+) $argn( \w+).*/",'$1$2',($s='N NNE NE ENE E ESE SE SSE ').strtr($s,NESW,SWNE).$s);

2
আপনি 1 বাইট সংরক্ষণ করার preg_replaceসাথে প্রতিস্থাপন করতে preg_filterপারেন
জার্গ হালসারম্যান

0

পাইথন 3 - 112 107 বাইট

আমি আমার জাভাস্ক্রিপ্ট উত্তরটি বন্ধ করে দিয়েছি:

remade:

lambda i,s="N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW".split():[s[s.index(i)-1],s[s.index(i)-15]]

যেমনটি ব্যবহার করুন

f = lambda i,s="N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW".split():[s[s.index(i)-1],s[s.index(i)-15]]
print(f(input()));

মূল:

lambda i,s="N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW".split():[s[s.index(i)-1&15],s[s.index(i)+1&15]]

0

এমএটিএল , 43 বাইট

';evl(Z?&fWElf`gvhM'F' NESW'ZaYbtjY=fFTEq+)

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

ব্যাখ্যা

';evl(Z?&fWElf`gvhM' % Push this string
F                    % Push false
' NESW'              % Push this string
Za                   % Base conversion. This decompresses the first string from alphabet
                     % given by all printable ASCII except single quote to the alphabet
                     % ' NESW'. The result is the following string, which is pushed:
                     % 'N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW'
Yb                   % Split at spaces. Gives a cell array of strings
t                    % Duplicate
j                    % Input string
Y=                   % String comparison. Gives an array containing true at the index
                     % of the matching string
f                    % Find: index of the entry that equals true
FTEq                 % Push [-1 1] (obtained as [false true], times 2, minus 1)
+                    % Add, element-wise
)                    % Index modularly into the cell array of strings
                     % Implicitly display. Each cell is displayed on a different line


0

জাভাস্ক্রিপ্ট (ES6), 189 বাইট

d="N.NNW NNE.NNE.N NE.NE.NNE ENE.ENE.NE E.E.ENE ESE.ESE.E SE.SE.ESE SSE.SSE.SE S.S.SSE SSW.SSW.S SW.SW.SSW WSW.WSW.SW W.W.WSW WNW.WNW.W NW.NW.WNW NNW.NNW.NW N".split`.`,f=>d[d.indexOf(f)+1]

কেবল ইনপুট নেয়, এটি দেখায় এবং এটিকে ফেরত দেয়।


0

জাভাস্ক্রিপ্ট (ES6), 94 বাইট

বড় হাতের অক্ষরে যেমন একটি স্ট্রিং আশা করে "ENE"। কমা দ্বারা পৃথক করা স্ট্রিং যেমন ফিরে আসে "NE,E"

s=>/\D+,\D+/.exec('NNW0N0NNE0NE0ENE0E0ESE0SE0SSE0S0SSW0SW0WSW0W0WNW0NW0NNW0N'.split(0+s+0))[0]

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

0+s+0যখন split()ডাকা হয় তখন এক্সপ্রেশনটি একটি স্ট্রিংয়ের দিকে জোর করে । উদাহরণস্বরূপ, যদি ইনপুট থাকে "ENE"তবে স্ট্রিংটি বিভক্ত হবে "0ENE0":

"NNW0N0NNE0NE0ENE0E0ESE0SE0SSE0S0SSW0SW0WSW0W0WNW0NW0NNW0N"
             ^^^^^

এটি নিম্নলিখিত অ্যারে বাড়ে:

[ "NNW0N0NNE0NE", "E0ESE0SE0SSE0S0SSW0SW0WSW0W0WNW0NW0NNW0N" ]

আবার, যখন এই অ্যারে exec()বলা হয় তখন একটি স্ট্রিংতে জোর করা হয়। সুতরাং, নিয়মিত প্রকাশটি আসলে এতে প্রয়োগ করা হয়:

"NNW0N0NNE0NE,E0ESE0SE0SSE0S0SSW0SW0WSW0W0WNW0NW0NNW0N"

আমরা ক্রমাগত অ-সংখ্যাসূচক অক্ষর ( \D+) এর পরে কমা এবং তারপরে ক্রমাগত অ-সংখ্যাসূচক অক্ষর সন্ধান করি। এটি অ্যারে প্রদান করে [ "NE,E" ]। আমরা যুক্তিযুক্তভাবে সেখানে থামাতে এবং ঠিক যে ফিরে আসতে পারে। তবে চ্যালেঞ্জটি একটি সীমিত স্ট্রিং বা একটি দ্বি-উপাদান অ্যারের জন্য জিজ্ঞাসা করছে। সুতরাং, আমরা স্ট্রিং এর সাথে এক্সট্রাক্ট করি [0]

ডেমো


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