क्या बात है?


22

एक प्रोग्राम या फ़ंक्शन लिखें जो दो पूर्णांकों में होता है जो कार्टेशियन विमान पर बिंदु के X और Y निर्देशांक का प्रतिनिधित्व करते हैं

इनपुट के रूप में लंबे समय के एक्स मूल्य उदाहरण के लिए वाई से पहले आता है के रूप में किसी भी उचित प्रारूप में आ सकते हैं, 1 -2, (1,-2), [1, -2], या 1\n-2सब ठीक हो जाएगा के लिए एक्स = 1, y = -2।

एक एकल वर्ण स्ट्रिंग को प्रिंट करें या लौटाएं (इसके बाद एक वैकल्पिक अनुगामी न्यूलाइन) जो विमान में बिंदु के स्थान का वर्णन करता है:

  • 1अगर बिंदु चतुर्थांश I में है
  • 2 यदि बिंदु चतुर्थांश II में है
  • 3 यदि बिंदु चतुर्थांश III में है
  • 4 अगर चतुर्थांश में बिंदु है
  • 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

तो इस चुनौती के उद्देश्यों के लिए, एक्स और वाई अक्ष कोई क्वाड्रेंट नहीं है?
R

@ रायरर राइट। अन्यथा बिंदु (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 Jelly एक बार फिर से
जीती है

बहुत अच्छा दृष्टिकोण!
लुइस मेंडो

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
afaik ने एक अनाम फ़ंक्शन ( s/^f=//)
andlrc

5

ईएस 6, 43 बाइट्स

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

एक पूरी बाइट उन सभी ternaries की तुलना में कम!


3

जाप, 30 22 बाइट्स

"3Y2XOX4Y1"g4+3*Ug +Vg

इससे पहले कि वह एक स्पष्टीकरण जोड़ते, @ डेनिस जैली जवाब से प्रेरित। इसे ऑनलाइन टेस्ट करें!

मजेदार तथ्य: यह दो बाइट्स छोटा होगा यदि मैंने gस्ट्रिंग के लिए फ़ंक्शन में नकारात्मक संख्याओं के लिए समर्थन जोड़ा था ।

एक और प्रयास, जेली एक (23 बाइट्स) के करीब:

"3Y2XOX4Y1"gNmg m+1 ¬n3

अफसोस की बात है, एक सूची में वृद्धि 4 बाइट्स लागत ...


2

MATL , 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, "X", "Y", "O", "Y", "Y", "X", "X", 1, 4, 2, 3}


1

रेटिना , ५२

यह एक सरल प्रतिस्थापन-आधारित विधि है:

^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

यहाँ यह विचारधारा पर है ।


Ideone फिर से काम करने लगता है। क्या आपने इसे इस्तेमाल करने के लिए कुछ खास किया?
लुइस मेन्डो

@LuisMendo यह एक अनाम फ़ंक्शन का उपयोग करता है। नामांकित कार्य अभी भी मेरे लिए हैं। :(
बीकर 21

आह, आप सही हैं। इसे उन कार्यों का नाम दिया गया था जो काम नहीं कर रहे थे। तो अभी भी वही: - /
लुइस मेंडो

1

अजगर, २४

बहुत लंबा, लेकिन शायद एक दिलचस्प दृष्टिकोण:

?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बजाय बचाया जा सकता है, Stringलेकिन मुझे पूरी तरह से यकीन नहीं है कि ऑटोबॉक्सिंग अच्छी तरह से लैम्ब्डा के साथ खेलेगा।


1
ओह नीक , यह उत्तर डेनिस जेली उत्तर (1.5929) की तुलना में पीसीसीजी हैंडीकैप सिस्टम स्कोर का बेहतर (1.5598) उपयोग करता है ।
ड्रेको

यह काफी दिलचस्प है। उस ओर इशारा करने के लिए धन्यवाद
जैक अम्मो

1
जिज्ञासा से बाहर इस पर कुछ प्रविष्टियों के लिए मानों (सभी स्कोर 1.5 और 2 के बीच थे, संदर्भ के लिए)।
18
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.