ইনপুটকে দিকনির্দেশে রূপান্তর করুন


15

চ্যালেঞ্জ

আকারে ইনপুট দেওয়া হয়েছে <n1>, <n2>যেখানে নম্বরটি -1, 0 বা 1 হতে পারে, সংশ্লিষ্ট কার্ডিনাল দিকটি ফেরত দিন । ধনাত্মক সংখ্যাগুলি পূর্বদিকে এক্স-অক্ষে এবং দক্ষিণে y- অক্ষে সরে যায়, gণাত্মক সংখ্যাগুলি পশ্চিমে এক্স-অক্ষে এবং উত্তরটি y- অক্ষে চলে যায়।

আউটপুট রূপে হওয়া উচিত South East, North East, North। এটি কেস-সংবেদনশীল।

যদি ইনপুট 0, 0 হয়, আপনার প্রোগ্রামটি অবশ্যই ফিরবে That goes nowhere, silly!

নমুনা ইনপুট / আউটপুট:

1, 1 -> South East

0, 1 -> South

1, -1 -> North East

0, 0 -> That goes nowhere, silly!

এটি , বাইট জেতে সংক্ষিপ্ত উত্তর।



1
ডাব্লু, এনডাব্লু এবং এসডাব্লু সহ কয়েকটি উদাহরণ প্রয়োজন।
শেশোমারা

@ সেশৌমারা আমি মোবাইলে রয়েছি, তাই ব্যাকটিকস নেই, তবে এনডাব্লু হবে -1, -1
মাতিয়াস কে

1
পেছনের স্থানগুলি কি অনুমোদিত?
অর্জুন

আহ ... অবশ্যই, আমার ধারণা। যতক্ষণ না এটি একই দেখায়।
মাটিয়াস কে

উত্তর:


12

জাপট , 55 51 বাইট

`
SÆ 
NÆ° `·gV +`
E†t
Wƒt`·gU ª`T•t goƒ Í2€e, Ðéy!

ব্যাখ্যা

                      // Implicit: U, V = inputs
`\nSÆ \nNÆ° `       // Take the string "\nSouth \nNorth ".
·                     // Split it at newlines, giving ["", "South ", "North "].
gV                    // Get the item at index V. -1 corresponds to the last item.
+                     // Concatenate this with
`\nE†t\nWƒt`·gU       // the item at index U in ["", "East", "West"].
ª`T•t goƒ Í2€e, Ðéy!  // If the result is empty, instead take "That goes nowhere, silly!".
                      // Implicit: output result of last expression

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


উম ... আমি ... ??? কিভাবে পৃথিবীতে এই কাজ করে? জাপটে কি এমন কিছু অভিনব জিনিস রয়েছে যা প্রচলিত চরিত্রের জুটি প্রতিস্থাপন করে?
হাইপারনিউটারিনো ২৩:৪৪

@ হাইপারনিট্রিনো হ্যাঁ, জাপট শোকো সংক্ষেপণ গ্রন্থাগার ব্যবহার করে যা একটি জোড়ের সাথে ছোট ছোট অক্ষরের সাধারণ জোড়া প্রতিস্থাপন করে।
ইটিএইচ প্রডাকশনগুলি

ঠিক আছে, এটা সত্যিই দুর্দান্ত! আমি এটি খতিয়ে দেখব, আমি এটি থেকে কোনও ব্যবহার করতে পারি কিনা তা দেখুন।
হাইপারনিউত্রিনো ২৩:৪7

9

পাইথন, 101 87 বাইট

সত্যিই নিষ্পাপ সমাধান।

lambda x,y:['','South ','North '][y]+['','West','East'][x]or'That goes nowhere, silly!'

14 লাইট সংরক্ষণের জন্য লিনকে ধন্যবাদ! পরিবর্তনগুলি: স্ট্রিং.স্প্লিট পদ্ধতিটি ব্যবহার করা আসলে এটি আরও দীর্ঘ করে দেয়; _; এবং এছাড়াও, নেতিবাচক সূচী অজগর মধ্যে বিদ্যমান।


5
আপনি এটি এর মতো এটিকে 87 টি করে নামিয়ে ফেলতে পারেন:lambda x,y:('','South ','North ')[y]+('','East','West')[x]or'That goes nowhere, silly!'
লিন

2
আমি কিছু দিকনির্দেশ পাওয়ার জন্য একটি ঝরঝরে উপায় পেয়েছি, তবে দুর্ভাগ্যক্রমে এটি মনে হয় না যে এটি এই চ্যালেঞ্জটির পক্ষে কাজ করবে। ভেবেছি আমি এটিকে যেভাবেই ভাগ করব (সম্ভবত আমি এর চেয়ে কারুকর্মী তার সমস্যাগুলি কীভাবে মোকাবেলা করতে পারি, যেমন x বা y = 0 এর মতো): lambda x,y:'North htuoS'[::x][:6]+'EastseW'[::y][:4]সম্পাদনা করুন: সম্ভবত এটি এখন খুব দীর্ঘ হবে তবে আপনি দ্বিতীয় স্লাইসিং করতে পারবেন [:6*x**2], পূর্ব / পশ্চিম স্ট্রিংয়ের জন্য একইভাবে, যদি আপনি প্রথম টুকরো টুকরো করার সময় ত্রুটিটি সমাধান করতে পারেন।
কোলে

@ লিন lambda x,y:('North ','South ')[y+1]+('West','East')[x+1]or'That goes nowhere, silly!'2 বাইট দ্বারা সংক্ষিপ্ত
ডেড

@ লিন ওহ, ধন্যবাদ! (আমি নেতিবাচক সূচকগুলি সম্পর্কে ভুলে গেছি!)
হাইপারনিউটারিনো

@ ডেডপসসাম এটি কাজ করবে না কারণ এটির South Eastজন্য ফিরে আসবে (0, 0)। ধন্যবাদ যদিও!
হাইপারনিউটারিনো

6

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

[,$b,$a]=$argv;echo$a|$b?[North,"",South][1+$a]." ".[West,"",East][1+$b]:"That goes nowhere, silly!";

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

1
@ কেভিন ক্রুজসেন উত্তর একটি ধ্রুবক php.net/manual/en/language.constants.php যদি ধ্রুবক না থাকে তবে এটি স্ট্রিং হিসাবে ব্যাখ্যা করা হবে। পিএইচপি-তে একটি অ্যারে বিভিন্ন ধরণের থাকতে পারে। স্ট্রিংগুলি চারটি উপায়ে নির্দিষ্ট করা যেতে পারে php.net/manual/en/language.types.string.php
Jörg Hülsermann

6

পার্ল 6 , 79 বাইট

{<<'' East South North West>>[$^y*2%5,$^x%5].trim||'That goes nowhere, silly!'}

চেষ্টা করে দেখুন

সম্প্রসারিত:

{ # bare block lambda with placeholder parameters 「$x」 and 「$y」

  << '' East South North West >>\ # list of 5 strings
  [                               # index into that with:

    # use a calculation so that the results only match on 0
    $^y * 2 % 5, # (-1,0,1) => (3,0,2) # second parameter
    $^x % 5      # (-1,0,1) => (4,0,1) # first parameter

  ]
  .trim  # turn that list into a space separated string implicitly
         # and remove leading and trailing whitespace

  ||     # if that string is empty, use this instead
  'That goes nowhere, silly!'
}

6

জাভাস্ক্রিপ্ট (ES6), 106 100 97 93 বাইট

এটি একটি খুব সহজ পদ্ধতির। এতে কয়েকটি ত্রিনিরি অপারেটর একসাথে বাসা বাঁধে -

f=a=>b=>a|b?(a?a>0?"South ":"North ":"")+(b?b>0?"East":"West":""):"That goes nowhere, silly!"

পরীক্ষার কেস

f=a=>b=>a|b?(a?a>0?"South ":"North ":"")+(b?b>0?"East":"West":""):"That goes nowhere, silly!"

console.log(f(1729)(1458));
console.log(f(1729)(-1458));
console.log(f(-1729)(1458));
console.log(f(-1729)(-1458));
console.log(f(0)(1729));
console.log(f(0)(-1729));
console.log(f(1729)(0));
console.log(f(-1729)(0));


a!=0a0 টি মিথ্যা এবং অন্যান্য সমস্ত মান সত্যবাদী হওয়ায় ন্যায় দ্বারা প্রতিস্থাপন করা যেতে পারে । এছাড়াও, কারিটিং সিনট্যাক্সের ইনপুট নেওয়া সংক্ষিপ্ত এবং অ্যারে অ্যাপোচও ছোট হয়।
লুক

@ পরামর্শ পরামর্শ দেওয়ার জন্য ধন্যবাদ! আমি উত্তর সম্পাদনা করেছি। এখন, আমি পিএইচপি এবং পাইথন সমাধানগুলিকে মারছি! সব আপনি এর কারণ!!! ধন্যবাদ!
অর্জুন

f=a=>b=>ফাংশনটি করে এবং কল করে অন্য একটি বাইট সংরক্ষণ করুন f(1729)(1458); যা currying syntax@ লুক উল্লেখ করেছেন।
টম

a|bপরিবর্তে আপনি নিরাপদে ব্যবহার করতে পারেন a||b। ধরে নেওয়া যাক যে ইনপুট শুধুমাত্র -1, 0 বা 1 (যা আমার কাছে স্পষ্ট নয়) নিয়ে গঠিত, আপনি প্রতিস্থাপন করতে পারে a>0এবং b>0সঙ্গে ~aএবং ~b
আর্নল্ড

এছাড়াও, আপনার এই প্রথম বন্ধনীগুলির দরকার নেই: a?(...):""/b?(...):""
Arnauld

4

ব্যাচ, 156 বাইট

@set s=
@for %%w in (North.%2 South.-%2 West.%1 East.-%1)do @if %%~xw==.-1 call set s=%%s%% %%~nw
@if "%s%"=="" set s= That goes nowhere, silly!
@echo%s%

forযখন (সম্ভবত অস্বীকার) প্যারামিটার -1 সমান, এবং ম্যাচিং শব্দ concatenating লুপ ফিল্টার করার জন্য একটি লুকআপ টেবিল হিসাবে কাজ করে। যদি কিছু না নির্বাচিত হয় তবে এর পরিবর্তে মূর্খ বার্তা প্রিন্ট করা হয়।


4

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

a=>b=>["North ","","South "][b+1]+["West","","East"][a+1]||"That goes nowhere, silly!"

ব্যাখ্যা

এটিকে কলিং সিনট্যাক্স ( f(a)(b)) দিয়ে কল করুন । এটি অ্যারে সূচকগুলি ব্যবহার করে। উভয় aএবং bযদি 0 হয় তবে ফলাফলটি একটি মিথ্যা খালি স্ট্রিং। সেক্ষেত্রে স্ট্রিংয়ের পরে ||ফিরে আসবে।

চেষ্টা করে দেখুন

সমস্ত পরীক্ষার কেস এখানে চেষ্টা করুন:

let f=
a=>b=>["North ","","South "][b+1]+["West","","East"][a+1]||"That goes nowhere, silly!"

for (let i = -1; i < 2; i++) {
    for (let j = -1; j < 2; j++) {
        console.log(`${i}, ${j}: ${f(i)(j)}`);
    }
}


3

GNU সেড , 100 + 1 (আর পতাকা) = 101 বাইট

s:^-1:We:
s:^1:Ea:
s:-1:Nor:
s:1:Sou:
s:(.*),(.*):\2th \1st:
s:0...?::
/0/cThat goes nowhere, silly!

ডিজাইন অনুসারে, এসডি স্ক্রিপ্টটি যতবার ইনপুট লাইন রয়েছে তার সম্পাদন করে, সুতরাং প্রয়োজনে একজন এক রানে সমস্ত পরীক্ষার কেস করতে পারেন। নীচের টিআইও লিঙ্কটি ঠিক তা করে।

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

ব্যাখ্যা:

s:^-1:We:                         # replace '-1' (n1) to 'We'
s:^1:Ea:                          # replace '1' (n1) to 'Ea'
s:-1:Nor:                         # replace '-1' (n2) to 'Nor'
s:1:Sou:                          # replace '1' (n2) to 'Sou'
s:(.*),(.*):\2th \1st:            # swap the two fields, add corresponding suffixes
s:0...?::                         # delete first field found that starts with '0'
/0/cThat goes nowhere, silly!     # if another field is found starting with '0',
                                  #print that text, delete pattern, end cycle now

একটি চক্রের শেষে অবশিষ্ট প্যাটার্ন স্পেসটি স্পষ্টভাবে মুদ্রিত করা হয়।


2

05AB1E , 48 45 43 বাইট

õ'†Ô'…´)èUõ„ƒÞ „„¡ )èXJ™Dg_i“§µ—±æÙ,Ú¿!“'Tì

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

ব্যাখ্যা

õ'†Ô'…´)                                       # push the list ['','east','west']
        èU                                     # index into this with first input
                                               # and store the result in X
          õ„ƒÞ „„¡ )                           # push the list ['','south ','north ']
                    èXJ                        # index into this with 2nd input
                                               # and join with the content of X
                       ™                       # convert to title-case
                        Dg_i                   # if the length is 0
                            “§µ—±æÙ,Ú¿!“       # push the string "hat goes nowhere, silly!"
                                        'Tì    # prepend "T"


2

জাপট , 56 বাইট

N¬¥0?`T•t goƒ Í2€e, Ðéy!`:` SÆ NÆ°`¸gV +S+` E†t Wƒt`¸gU

এটি অনলাইন চেষ্টা করুন! | পরীক্ষা স্যুট

ব্যাখ্যা:

N¬¥0?`Tt go Í2e, Ðéy!`:` SÆ NÆ°`¸gV +S+` Et Wt`¸gU
Implicit U = First input
         V = Second input

N´0?`...`:` ...`qS gV +S+` ...`qS gU
N¬                                                     Join the input (0,0 → "00")
  ¥0                                                   check if input is roughly equal to 0. In JS, "00" == 0
    ?                                                  If yes:
      ...                                               Output "That goes nowhere, silly!". This is a compressed string
     `   `                                              Backticks are used to decompress strings
          :                                            Else:
           ` ...`                                       " South North" compressed
                 qS                                     Split on " " (" South North" → ["","South","North"])
                   gV                                   Return the string at index V
                     +S+                                +" "+ 
                        ` ...`                          " East West" compressed
                              qS gU                     Split on spaces and yield string at index U

ইঙ্গিত: 00হয় ঠিক হিসাবে একই 0;), যেমন অতিরিক্ত অঙ্ক সরানো
ETHproductions

1
দ্বিতীয় সেরা সমাধানটি এখনও কোনও অগ্রগতি নেই। আমি আপনার জন্য উত্সাহ।
অর্জুন

1

রেটিনা , 84 82 81 বাইট

1 বাইট 0...?পরিবর্তে প্রস্তাব দেওয়ার জন্য @seshoumara ধন্যবাদ সংরক্ষণ করা হয়েছে0\w* ?

(.+) (.+)
$2th $1st
^-1
Nor
^1
Sou
-1
We
1
Ea
0...?

^$
That goes nowhere, silly!

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


আউটপুট ভুল। ও-এর Y- অক্ষগুলিতে এস এবং নেতিবাচক সংখ্যাগুলিকে এন স্থানান্তরিত করতে ইতিবাচক সংখ্যা চায়
Sesoumara

@ সশৌমারা রাইট, এটি একই বাইটোকন্টের জন্য ঠিক করেছেন (সবেমাত্র অদলবদল করতে হবে Norএবং Sou)
ক্রিটসি লিথোস

ঠিক আছে. এছাড়াও, আপনি ব্যবহার করে 1 বাইট শেভ করতে পারেন 0...?
শৈশুমারা

@ সেশৌমারা টিপটির জন্য ধন্যবাদ :)
ক্রিটসি লিথোস

1

সুইফট 151 বাইট

func d(x:Int,y:Int){x==0&&y==0 ? print("That goes nowhere, silly!") : print((y<0 ? "North " : y>0 ? "South " : "")+(x<0 ? "West" : x>0 ? "East" : ""))}

1

পিএইচপি, 95 বাইট।

এটি কেবল অ্যারের উপাদানটি প্রদর্শন করে এবং কিছু না থাকলে কেবল "ডিফল্ট" বার্তাটি প্রদর্শন করে।

echo['North ','','South '][$argv[1]+1].[East,'',West][$argv[2]+1]?:'That goes nowhere, silly!';

এটি -rপতাকাটি দিয়ে চালানো , 1 ম এবং 2 য় আর্গুমেন্ট হিসাবে স্থানাঙ্কগুলি গ্রহণ করে।


1

সি # , 95 102 বাইট


Golfed

(a,b)=>(a|b)==0?"That goes nowhere, silly!":(b<0?"North ":b>0?"South ":"")+(a<0?"West":a>0?"East":"");

Ungolfed

( a, b ) => ( a | b ) == 0
    ? "That goes nowhere, silly!"
    : ( b < 0 ? "North " : b > 0 ? "South " : "" ) +
      ( a < 0 ? "West" : a > 0 ? "East" : "" );

অসম্পূর্ণ পাঠযোগ্য

// A bitwise OR is perfomed
( a, b ) => ( a | b ) == 0

    // If the result is 0, then the 0,0 text is returned
    ? "That goes nowhere, silly!"

    // Otherwise, checks against 'a' and 'b' to decide the cardinal direction.
    : ( b < 0 ? "North " : b > 0 ? "South " : "" ) +
      ( a < 0 ? "West" : a > 0 ? "East" : "" );

সম্পূর্ণ কোড

using System;

namespace Namespace {
    class Program {
        static void Main( string[] args ) {
            Func<Int32, Int32, String> f = ( a, b ) =>
                ( a | b ) == 0
                    ? "That goes nowhere, silly!"
                    : ( b < 0 ? "North " : b > 0 ? "South " : "" ) +
                      ( a < 0 ? "West" : a > 0 ? "East" : "" );

            for( Int32 a = -1; a <= 1; a++ ) {
                for( Int32 b = -1; b <= 1; b++ ) {
                    Console.WriteLine( $"{a}, {b} = {f( a, b )}" );
                }
            }

            Console.ReadLine();
        }
    }
}

রিলিজ

  • v1.1 - + 7 bytes- একটি ফাংশন মধ্যে জড়ান স্নিপেট।
  • v1.0 -  95 bytes- প্রাথমিক সমাধান।

মন্তব্য

আমি ভূত, বু!


1
এটি একটি কোড স্নিপেট যা আপনাকে এটি কোনও ফাংশনে (a,b)=>{...}
আবদ্ধ

আপনি বাইট সংরক্ষণের জন্য কার্চিং ব্যবহার করতে পারেন a=>b=>, ()আশেপাশের প্রয়োজন a|bনাও হতে পারে, আপনি স্ট্রিংটি আরও ভাল তৈরি করতে ইন্টারপোল্টেড স্ট্রিং ব্যবহার করতে সক্ষম হতে পারেন
TheLethalCoder

পুরোপুরি কোনও ফাংশনে আবদ্ধ করতে ভুলে গেছেন: এস। জন্য ()প্রায় a|b, আমি এটা প্রয়োজন, অন্যথায় না Operator '|' cannot be applied to operands of type 'int' and 'bool'। আমি ইন্টারপোল্টেড স্ট্রিংগুলিও চেষ্টা করেছি, তবে ""আমাকে ত্রুটি দেওয়ার কারণে বেশি দেয়নি ।
auhmaan

1

স্কালা, 107 বাইট

a=>b=>if((a|b)==0)"That goes nowhere, silly!"else Seq("North ","","South ")(b+1)+Seq("West","","East")(a+1)

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

এটি ব্যবহার করতে, এটি একটি ফাংশন হিসাবে ঘোষণা করুন এবং এটি কল করুন:

val f:(Int=>Int=>String)=...
println(f(0)(0))

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

a =>                                // create an lambda with a parameter a that returns
  b =>                              // a lambda with a parameter b
    if ( (a | b) == 0)                // if a and b are both 0
      "That goes nowhere, silly!"       // return this string
    else                              // else return
      Seq("North ","","South ")(b+1)    // index into this sequence
      +                                 // concat
      Seq("West","","East")(a+1)        // index into this sequence

1

সি, 103 বাইট

f(a,b){printf("%s%s",b?b+1?"South ":"North ":"",a?a+1?"East":"West":b?"":"That goes nowhere, silly!");}

0

জাভা 7, 130 বাইট

String c(int x,int y){return x==0&y==0?"That goes nowhere, silly!":"North xxSouth ".split("x")[y+1]+"WestxxEast".split("x")[x+1];}

ব্যাখ্যা:

String c(int x, int y){               // Method with x and y integer parameters and String return-type
  return x==0&y==0 ?                  //  If both x and y are 0:
     "That goes nowhere, silly!"      //   Return "That goes nowhere, silly!"
    :                                 //  Else:
     "North xxSouth ".split("x"[y+1]  //   Get index y+1 from array ["North ","","South "] (0-indexed)
     + "WestxxEast".split("x")[x+1];  //   Plus index x+1 from array ["West","","East"] (0-indexed)
}                                     // End of method

পরীক্ষার কোড:

এখানে চেষ্টা করুন।

class M{
  static String c(int x,int y){return x==0&y==0?"That goes nowhere, silly!":"North xxSouth ".split("x")[y+1]+"WestxxEast".split("x")[x+1];}

  public static void main(String[] a){
    System.out.println(c(1, 1));
    System.out.println(c(0, 1));
    System.out.println(c(1, -1));
    System.out.println(c(0, 0));
  }
}

আউটপুট:

South East
South 
North East
That goes nowhere, silly!

0

সিজেম , 68 বাইট

"
South 
North 

East
West"N/3/l~W%.=s_Q"That goes nowhere, silly!"?

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ছাপে এক চিহ্ন স্থান [0 -1]বা [0 1]( Northবা South)।

ব্যাখ্যা

"\nSouth \nNorth \n\nEast\nWest"  e# Push this string
N/                                e# Split it by newlines
3/                                e# Split the result into 3-length subarrays,
                                  e#  gives [["" "South " "North "]["" "East" "West"]]
l~                                e# Read and eval a line of input
W%                                e# Reverse the co-ordinates
.=                                e# Vectorized get-element-at-index: accesses the element
                                  e#  from the first array at the index given by the 
                                  e#  y co-ordinate. Arrays are modular, so -1 is the last
                                  e#  element. Does the same with x on the other array.
s                                 e# Cast to string (joins the array with no separator)
_                                 e# Duplicate the string
Q"That goes nowhere, silly!"?     e# If it's non-empty, push an empty string. If its empty, 
                                  e#  push "That goes nowhere, silly!"

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