আলোচ্য বিষয়টি কি?


22

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা দুটি পূর্ণসংখ্যার সাথে নেয় যা কার্তেসিয়ান বিমানের বিন্দুর এক্স এবং ওয়াই স্থানাঙ্ককে উপস্থাপন করে ।

ইনপুট হিসেবে দীর্ঘ এক্স মান উদাহরণস্বরূপ ওয়াই সামনে আসে যে কোন যুক্তিসংগত বিন্যাসে আসতে পারে, 1 -2, (1,-2), [1, -2], অথবা 1\n-2সব ঠিক হয়ে যাবে করবে এক্স = 1, y = -2।

বিমানের বিন্দুর অবস্থান বর্ণনা করে এমন একটি একক অক্ষরের স্ট্রিং (তার পরে একটি returnচ্ছিক ট্রেইলিং নিউলাইন) মুদ্রণ করুন বা প্রত্যাবর্তন করুন:

  • 1যদি বিন্দুটি চতুষ্কোণ হয় I
  • 2 যদি বিন্দুটি দ্বিগুণ হয়
  • 3 যদি বিন্দু তৃতীয় চতুর্ভুজ হয়
  • 4 যদি বিন্দুটি চতুষ্কোণ হয় IV
  • Xযদি বিন্দুটি X- অক্ষে থাকে (ছোট হাতের xঅনুমতি দেওয়া হয় না)
  • Yযদি বিন্দুটি y- অক্ষের উপর থাকে (ছোট হাতের yঅনুমতি দেওয়া হয় না)
  • O যদি বিন্দুটি উত্সের দিকে থাকে (এটি শূন্য নয়, তবে এটি "বড়" অক্ষর)

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

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

(1,-2) -> 4
(30,56) -> 1
(-2,1) -> 2
(-89,-729) -> 3
(-89,0) -> X
(0,400) -> Y
(0,0) -> O
(0,1) -> Y
(0,-1) -> Y
(1,0) -> X
(-1,0) -> X
(1,1) -> 1
(1,-1) -> 4
(-1,1) -> 2
(-1,-1) -> 3

সুতরাং এই চ্যালেঞ্জের উদ্দেশ্যে, এক্স এবং ওয়াই অক্ষগুলি কোনও কোয়াড্রেন্টে নেই?
আর

@ রিকারডাব্লু অন্যথায় বিন্দু (0, 9) চতুর্ভুজ I বা II বলা যেতে পারে।
ক্যালভিনের

একটি জটিল সংখ্যা (বা এর একটি স্ট্রিং উপস্থাপনা "30+56i") যেমন একটি বৈধ ইনপুট ফর্ম্যাট?
স্তর নদী সেন্ট

@ স্টেভেভারিল হ্যাঁ
ক্যালভিনের

ইনপুট কি জটিল সংখ্যার আকারে থাকতে পারে? (উদাঃ 1+2j)
ডিজিটাল ট্রমা

উত্তর:


16

জেলি, 14 বাইট

Ṡḅ3ị“Y4X13X2YO

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

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

Ṡḅ3ị“Y4X13X2YO    Main link. Input: [x, y]

Ṡ                 Apply the sign function to both coordinates.
 ḅ3               Convert the resulting pair from base 3 to integer.
                  Because of how base conversion is implemented in Jelly, this maps
                  [a, b] to (3a + b), even if a and b aren't valid ternary digits.
                  Therefore:
                      [0, 1]   ->  1
                      [1, -1]  ->  2
                      [1, 0]   ->  3
                      [1, 1]   ->  4
                      [-1, -1] -> -4
                      [-1, 0]  -> -3
                      [-1, 1]  -> -2
                      [0, -1]  -> -1
                      [0, 0]   ->  0
   ị“Y4X13X2YO    Retrieve the character at that index from the string.
                Indexing is 1-based and modular in Jelly, so 1ị retrieves the
                first character, -1ị the penultimate, and 0ị the last.

6
ফোন ক্লাব থেকে জেলি যোগদান ।
ডেনিস

3
Aaaaaand জেলি আবার জিতেছে ...
ETH প্রোডাকশনস

খুব ভাল পদ্ধতির!
লুইস মেন্ডো

11

রুবি, 35 বাইট

->x,y{%w[OY X14 X23][x<=>0][y<=>0]}

"স্পেসশিপ" ( <=>) অপারেটরটি কাজে লাগানো ।

x <=> 0 ফিরে আসবে

  • 0 যদি x == 0
  • 1 যদি x > 0
  • -1 যদি x < 0

তাই,

  • যদি x == 0, আমরা ফিরে 'OY'[y<=>0]আসি এই

    • Oযদি y == 0(স্ট্রিং ইনডেক্সিং 0)

    • Yযদি y != 0(এটি সত্য কারণ উভয়ই 1এবং এই স্ট্রিংটিতে সূচীকরণের সময় -1ফলাফল আসবে Y, যেমন স্ট্রিংয়ের -1শেষ অক্ষরকে বোঝায়, যা সূচকে 1 তে এক হিসাবেও ঘটে)

  • যদি x > 0, আমরা ফিরে 'X14'[y<=>0]আসি এই Xযদি y == 0, 1যদি y > 0, এবং 4যদি y < 0(উপরোক্ত ব্যাখ্যা দেখুন)।

  • যদি x < 0, আমরা ফিরে 'X23'[y<=>0]আসি


6

জাভাস্ক্রিপ্ট, 44 বাইট

(x,y)=>x?y?x>0?y>0?1:4:y>0?2:3:'X':y?'Y':'O'


3
আমার চোখে আঘাত
লেগেছে

1
আফিক এটি বেনামে একটি ফাংশন ( s/^f=//)
andlrc

5

ES6, 43 বাইট

(x,y)=>"OYYX32X41"[3*!!x+3*(x>0)+!!y+(y>0)]

সমস্ত টেরিনারিগুলির চেয়ে পুরো বাইটটি সংক্ষিপ্ত!


3

জাপট, 30 22 বাইট

"3Y2XOX4Y1"g4+3*Ug +Vg

তিনি কোনও ব্যাখ্যা যোগ করার আগে @ ডেনিসের জেলি উত্তর দ্বারা অনুপ্রাণিত হন। এটি অনলাইন পরীক্ষা!

মজাদার ঘটনা: আমি যদি negativeণাত্মক সংখ্যার জন্য সমর্থন যোগ করে থাকি তবে এটি দুটি বাইট ছোট হবে g স্ট্রিংগুলির জন্য ফাংশনে ।

আরেকটি প্রচেষ্টা, জেলি এর নিকটে (23 বাইট):

"3Y2XOX4Y1"gNmg m+1 ¬n3

দুঃখের বিষয়, একটি তালিকা বাড়ানোর জন্য 4 বাইট খরচ হয় ...


2

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

'3X2YOY4X1'iZSQI1h*sQ)

এটি বর্তমান প্রকাশ (10.2.1) ব্যবহার করে ভাষা / সংকলকের ব্যবহার করে।

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

ব্যাখ্যা

এটি নির্লজ্জভাবে ডেনিসের উত্তরের দুর্দান্ত পদ্ধতির ধার নিয়েছে ।

'3X2YOY4X1'     % literal string. Will be indexed into to produce result
i               % input array of two numbers
ZS              % sign of each number in that array. Gives -1, 0 or 1
Q               % add 1 to produce 0, 1 or 2
I1h             % array [3 1]
*s              % multiply both arrays element-wise and compute sum
Q               % add 1. Gives a value from 1 to 9
)               % index into string. Display


1

পাইথন 2, 75 বাইট

lambda x,y,b=bool:[['OX','YO'][b(y)][b(x)],[[1,2],[4,3]][y<0][x<0]][b(x*y)]

অনেকটাই অকপট.


1

গণিতের 81 বাইট

Switch[Sign@#,{1,-1},4,{1,1},1,{-1,1},2,{-1,-1},3,{0,0},"O",{_,0},"X",{0,_},"Y"]&

%/@{{1, -2}, {30, 56}, {-2, 1}, {-89, -729}, {-89, -0}, {0, 400}, {0, 0},{0, 1}, {0, -1}, {1, 0}, {-1, 0}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1}}

{4, 1, 2, 3, "এক্স", "ওয়াই", "ও", "ওয়াই", "ওয়াই", "এক্স", "এক্স", 1, 4, 2, 3


1

রেটিনা , 52

এটি একটি সহজ বিকল্প-ভিত্তিক পদ্ধতি:

^0 0
O
^0.*
Y
.* 0
X
-.*-.*
3
^-.*
2
.*-.*
4
.* .*
1

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


পূর্বে আমি এই আরও আকর্ষণীয় পদ্ধতির চেষ্টা করেছি , তবে এটি বেশ খানিকটা দীর্ঘ (প্রায় 65 mসংশোধক ছাড়াই ):

[1-9]\d*
1
-1
2
(.) (.)
$1$*3$2$*1
3
111
m`^(.)*$
$#1
T`d`OYYX14X23
  • সমস্ত শূন্য নম্বরের পরিবর্তে 1রেখে-চিহ্নগুলি স্থানে
  • বিকল্প -1হিসাবে2
  • 1 ম এবং 2 য় সংখ্যাটিকে অবিচ্ছিন্ন 3এবং 1যথাক্রমে অ্যানারি অংক হিসাবে রূপান্তর করুন । এটি কার্যকরভাবে 2 বেস 3 ডিজিট দেয়, অবিচ্ছিন্নভাবে প্রকাশিত
  • রূপান্তর 3করার গুলি 111। এটি কার্যকরভাবে একক ইউনিারি নম্বর দেয় যা প্রতিটি কোয়াড্রেন্টস, অক্ষ এবং উত্সের সাথে মিলে যায়
  • অ্যানারিটিকে এক দশমিক অঙ্কে রূপান্তর করুন
  • দশমিক অঙ্কটি উপযুক্ত আউটপুট চরকে স্থানান্তর করুন।

1
ইনপুটটিতে শীর্ষস্থানীয় জিরো থাকবে না বলে Xমঞ্চটি দরকার বলে আমি মনে করি $না।
মার্টিন এন্ডার

1
আরও আকর্ষণীয় পদ্ধতিটি কমপক্ষে 40 বাইটে সংক্ষিপ্ত করা যেতে পারে । এখন আমি আগামীকাল আরও কিছু এটি তাকান।
এলোমেলো

ব্যাচের রানের জন্য আপনার কিছুটা টুইচিং দরকার
এলোমেলো

1

অক্টাভা, 34 বাইট

@(p)['3X2YOY4X1'](sign(p)*[3;1]+5)

ভেক্টর গুণনের মাধ্যমে পুরানো বেস -3 ট্রিক (যদিও আমাকে 1-ভিত্তিক অ্যারে সূচকগুলির জন্য অ্যাকাউন্টে 5 যোগ করতে হয়েছিল) এবং কিছু অষ্টাভ সূচীকরণ যাদু।

ইনপুট হ'ল ফর্মটির ভেক্টর [1, -2](কমা সহ বা ছাড়াই), সুতরাং যখন কোনও ভেরিয়েবলের জন্য নির্ধারিত হয় w:

>> w([1 -2])
ans = 4

এখানে এটি আদর্শে


আইডিয়োন আবার কাজ করছে বলে মনে হচ্ছে। আপনি এটি ব্যবহার করার জন্য বিশেষ কিছু করেছিলেন?
লুইস মেন্ডো 20

@ লুইসমেডো এটি একটি বেনামি ফাংশন ব্যবহার করে। নামকৃত ফাংশনগুলি এখনও আমার জন্য উদাসীন। :(
বেকার

আহ, তুমি ঠিক বলেছ। এটি কাজ করে না এমন ফাংশনগুলির নামকরণ করা হয়েছিল। এখনও এখনও একই: - /
লুইস মেন্ডো

1

পাইথ, 24

খুব দীর্ঘ, তবে সম্ভবত একটি আকর্ষণীয় পদ্ধতির:

?Q?sQ?eQh%/yPQ.n04\X\Y\O

ইনপুট অবশ্যই একটি জটিল নম্বর হিসাবে নির্দিষ্ট করা আবশ্যক 1-2j। মূলত পরীক্ষার জন্য নেস্টেড টেরেনারি:

  • যদি ইনপুট শূন্য হয় - আউটপুট O
  • অন্যথায় যদি আসল অংশটি শূন্য হয় - আউটপুট Y
  • অন্যথায় যদি কাল্পনিক অংশটি শূন্য হয় - আউটপুট X
  • অন্যথায় জটিল পর্বটি গণনা করুন, 2 দিয়ে গুণন করুন, পূর্ণসংখ্যাকে π দিয়ে ভাগ করুন, তারপরে মোড করুন এবং উপযুক্ত কোয়াড্র্যান্ট নম্বর দিতে যোগ করুন।

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


1

জাভা 8, 64 বাইট

এটি একটি এর জন্য ল্যাম্বডা এক্সপ্রেশন BiFunction<Integer,Integer,String>

(x,y)->"OYYX14X23".charAt(3*(x>0?1:x<0?2:0)+(y>0?1:y<0?2:0))+"";

3 এর Characterপরিবর্তে একটি প্রতিস্থাপন করে 3 বাইট সংরক্ষণ করা সম্ভব Stringতবে অটোবক্সিং ল্যাম্বডায় ভালভাবে খেলবে কিনা তা আমি পুরোপুরি নিশ্চিত নই।


1
ওহ ঝরঝরে, ডেনিসের জেলি উত্তর (1.5929) এর তুলনায় পিসিসিজি হ্যান্ডিক্যাপ সিস্টেম ব্যবহার করে এই উত্তরটি আরও ভাল (1.5598) স্কোর করে।
ড্রাকো 18

এটা বেশ আকর্ষণীয়। এটি উল্লেখ করার জন্য ধন্যবাদ
জ্যাক আম্মো

1
কৌতূহল ছাড়াই এই কয়েকটিতে কয়েকটি প্রবেশের জন্য মানগুলি চালান (সমস্ত স্কোর রেফারেন্সের জন্য 1.5 এবং 2 এর মধ্যে ছিল)।
ড্রাকো 18
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.