एक एकल डार्ट स्कोर


22

परिचय

एक प्रोग्राम या फ़ंक्शन लिखें, जो एक डार्टबोर्ड पर एक डार्ट भूमि के निर्देशांक को देखते हुए, उस डार्ट के स्कोर को वापस करता है। डार्ट निर्देशांक दो पूर्णांक के रूप में दिए गए हैं, x,yजो डार्टबोर्ड के केंद्र से मापा जाता है, मिलीमीटर परिशुद्धता के साथ।

कैसे एक डार्ट स्कोर करने के लिए

डार्ट्स एक खेल है जिसे एक गोल बोर्ड पर डार्ट फेंककर खेला जाता है। डार्ट बोर्ड को 20 समान रूप से "वेजेज" में विभाजित किया गया है। शीर्ष से शुरू होने और घड़ी की दिशा में जाने पर, वर्गों में 20,1,18,4,13,6,10,15,2,17,3,19,7,16,8,11,14,9,12 मूल्य हैं , 5। यदि आपका डार्ट किसी भी वेड्स के काले या सफेद हिस्सों में है, तो आप उस पच्चर के बाहर की ओर दिए गए मूल्य को स्कोर करते हैं।
यहाँ एक डार्टबोर्ड की एक तस्वीर है


हालाँकि, यदि आपके डार्टबोर्ड के बाहरी हरे / लाल रिंग में डार्ट की भूमि है, तो आप हिट किए गए पच्चर के बाहर की ओर इंगित किए गए अंक को दोगुना करते हैं। इसी तरह, आंतरिक हरी / लाल अंगूठी (दो सफेद / काले वर्गों के बीच एक) को मारते हुए, आप कील के बाहर इंगित संख्या को तीन गुना करते हैं। यदि आपका डार्ट अंतरतम सर्कल (लाल बैल-आंख) को हिट करता है, तो आप 50 अंक स्कोर करते हैं और अंत में, यदि आपका डार्ट दूसरे-अंतरतम सर्कल (बैल-आंख के चारों ओर हरे रंग की अंगूठी) को हिट करता है, तो आप 25 अंक स्कोर करते हैं।

डार्टबोर्ड के केंद्र से मापे गए छल्ले के आयाम इस प्रकार हैं:

पैमाने पर नहीं छवि


Bullseye (50): [0mm-6mm)
25:            [6mm-16mm)
Inner Single:  [16mm-99mm)
Triple:        [99mm-107mm)
Outer Single:  [107mm-162mm)
Double:        [162mm-170mm)
Miss (0):       170mm+

नोट 1: प्रदान की गई तस्वीरें केवल चित्रण प्रयोजनों के लिए हैं, और पैमाने पर नहीं हैं।

नोट 2: दिए गए माप अनुमानित हैं, और एक असली डार्टबोर्ड के लिए सटीक नहीं हो सकते हैं।

नोट 3: दिए गए सभी माप हैं [inclusive-exclusive)। इस चुनौती के प्रयोजनों के लिए, हम डार्ट्स को तार से टकराने और उछलते हुए परेशान करने के लिए नहीं जा रहे हैं। यदि डार्ट भूमि में से एक रेडियल लाइनों के साथ "तार पर" है, तो यह तय करने वाले पर निर्भर है कि टाई क्लॉकवाइज या काउंटर-क्लॉकवाइज को तोड़ना है या नहीं। टाई ब्रेकिंग दिशा को सुसंगत, और इंगित किया जाना चाहिए।

नोट 4: डार्टबोर्ड को मानक तरीके से लटका दिया गया है, जिसमें 20 खंड सीधे बुल्सआई के ऊपर और 3 खंड सीधे बुलसे के ऊपर हैं।

इनपुट

x,yडार्टबोर्ड के केंद्र के सापेक्ष मिलीमीटर में मापा गया डार्ट कहां उतरा, इसके निर्देशांक का प्रतिनिधित्व करने वाले दो पूर्णांक ।

उत्पादन

एक एकल पूर्णांक, उन बिंदुओं की संख्या के लिए जो किसी दिए गए निर्देशांक पर उतरने वाले डार्ट को प्रदान किए जाएंगे।

नमूना

0,0     -> 50
2,101   -> 60
-163,-1 -> 22
6,18    ->  1
-6,18   ->  5
45,-169 ->  0
22, 22  ->  4 (if tie-broken clock-wise)
            18(if tie-broken counter-clockwise)
-150,0  ->  11
-150,-1 ->  11

स्कोरिंग

। आपके स्रोत कोड में सबसे कम बाइट्स जीतता है।

मानक खामियों को मना किया


1
@ शैगी मुझे ऐसा करने का कोई भी उचित कारण नहीं दिखता है।
जोनाथन एलन

5
@ शैगी क्या आप बता सकते हैं कि ऐसा क्यों होना चाहिए? व्यक्तिगत रूप से मुझे यह पसंद आएगा अगर मेरे डार्ट्स को डार्ट बोर्ड को हिट करने की गारंटी दी जाती है, लेकिन चुनौती के लिए, मैंने कल्पना पर वास्तविकता से चिपके रहना सबसे अच्छा समझा।
म्युटेलियन

1
सुझाए गए परीक्षण के मामले: -150,-1और -150,0जो दोनों को देना चाहिए 11और कुछ कार्यान्वयन पर एक किनारे का मामला हो सकता है, क्योंकि यह थीटा में परिवर्तित होने वाले थीटा और ध्रुवीय निर्देशांक में थीटा = + पीआई के बीच संक्रमण है। (मेरा प्रारंभिक उत्तर 2 वें पर विफल रहा।)
अरनौल्ड

1
खतरे, x = y = 0 मुझे पूरी तरह से गड़बड़ कर रहा है !! अच्छी चुनौती।
ब्रैडेक

1
आशा है कि आप बुरा नहीं मानेंगे, मैंने दूसरी तस्वीर के बेहतर संस्करण में संपादन किया।
ब्रैड

जवाबों:


19

जावास्क्रिप्ट (ईएस 7), 137 बाइट्स

समन्वय वाक्य रचना में निर्देशांक लेता है (x)(y)। वामावर्त टाई-ब्रेक का उपयोग करता है।

x=>y=>(r=(x*x+y*y)**.5)<6?50:r<16?25:(r<99?1:r<107?3:r<162||r<170&&2)*parseInt('b8g7j3h2fa6d4i1k5c9eb'[Math.atan2(y,x)*3.1831+10.5|0],36)

इसे ऑनलाइन आज़माएं!

कैसे?

हम इनपुट कार्टेशियन निर्देशांक ध्रुवीय निर्देशांक the करते हैं:(x,y)(r,θ)

r=x2+y2
θ=arctan2(y,x)

हम यह निर्धारित करने के लिए का उपयोग करते हैं कि डार्ट बुल्सआई , 25 , इनर सिंगल , ट्रिपल , आउटर सिंगल , डबल पर स्थित है या यदि शॉट मिस हैr

हम एक से अधिक रहते हैं, तो एकल , डबल या ट्रिपल , हम का उपयोग करें निर्धारित करने के लिए क्षेत्र में जो हम साथ हैं:θs

s=θ+π2π×20+12=θ×10π+10+12

एक के लिए क्षेत्र है, हम में से 4 दशमलव स्थानों की जरूरत है काफी सटीक है, जो देता है पाने के लिए:340×34010/π

10π3.1831

बेस स्कोर 21 प्रविष्टियों में से एक बेस -36 एन्कोडेड स्ट्रिंग में काउंटरक्लॉकवाइज स्टोर किया जाता है, जो बजे शुरू और समाप्त होता है :11

11,8,16,7,19,3,17,2,15,10,6,13,4,18,1,20,5,12,9,14,11

हमें को दोहराने की जरूरत है क्योंकि इस सेक्टर का आधा हिस्सा पहले स्लाइस (जहां के पास ) है, जबकि दूसरा आधा आखिरी स्लाइस (जहां करीब है ) से संबंधित है।θ - π θ + π11θπθ+π

आलेखीय उत्पादन

निम्नलिखित ईएस 6 कोड स्निपेट डार्टबोर्ड को उसी तर्क का उपयोग करके खींचता है जैसे कि गोल्फ कोड में।


8

जावास्क्रिप्ट (ईएस 6) + एसवीजी (एचटीएमएल 5), 53 + 523 51 + 519 507 = 576 570 558 बाइट्स

document.write`<svg width=345 height=345>`;i=b=Math.PI/10;s=Math.sin(a=-b/2);c=Math.cos(a);f=(r,f,n)=>document.write(`<path d=M172,172L${[172+r*s,172+r*c]}A${[r,r,0,0,1,172+r*t,172+r*d]}z fill=#${f} n=${n} />`);g=(q,r,m,n,i)=>f(q,i?474:`b32`,n*m)+f(r,i?`fff`:`000`,n);[3,17,2,15,10,6,13,4,18,1,20,5,12,9,14,11,8,16,7,19].map(n=>{t=s;d=c;s=Math.sin(a+=b);c=Math.cos(a);g(170,162,2,n,i=!i);g(107,99,3,n,i);});document.write`<circle cx=172 cy=172 r=16 fill=#474 n=25 /><circle cx=172 cy=172 r=6 fill=#b32 n=50`
<body onclick=alert(+event.target.getAttribute`n`)>

इनपुट माउस क्लिक, आउटपुट के माध्यम से होता है alert। संपादित करें: @Arnauld द्वारा सुझाए अनुसार थोड़ा अधिक अनुमानित रंगों का उपयोग करके 12 बाइट्स सहेजे गए।


मुझे लगता है कि कोई भी नहीं की है, तो आप का उपयोग आप इसके लिए जिम्मेदार जा रहा b33है और 474लाल और हरे रंग के लिए। :-)
अरनौल

@Arnauld मेले पर्याप्त है, हालांकि b33है bb3333तो b22(उर्फ bb3322) अपने मूल के करीब है be3628
नील

7

इंटेल 8086/8087 विधानसभा, 180 144 142 138 बाइट्स

यह ट्रिग और फ्लोटिंग-पॉइंट अंकगणित के सभी के लिए 8087 गणित सह-प्रोसेसर का उपयोग करता है। सभी गणना 80-बिट फ्लोटिंग-पॉइंट परिशुद्धता के साथ हार्डवेयर में की जाती हैं।

df06 b101 d8c8 df06 af01 d8c8 dec1 d9fa df1e b301 8b16 b301
33c0 81fa aa00 7c03 eb53 9083 fa06 7d05 b032 eb49 9083 fa10
7d05 b019 eb3f 90df 06b7 01df 06b5 01d9 f3df 06b1 01dd d2d9
ebde f9de c9de c1df 1eb3 01a1 b301 bb9c 01d7 83fa 6b7d 0a83
fa63 7c05 b303 eb09 9081 faa2 007c 04b3 02f6 e30b 0810 0713
0311 020f 0a06 0d04 1201 1405 0c09 0e0b 0a00

एक MASM MACRO (मूल रूप से एक फ़ंक्शन) के रूप में लिखा गया, X और Y को निर्देशांक के रूप में लेता है और AX में परिकलित स्कोर लौटाता है। टाई टूटी हुई है दक्षिणावर्त।

MAX_BULL EQU 6
MAX_25   EQU 16
MIN_3X   EQU 99
MAX_3X   EQU 107
MIN_2X   EQU 162
MAX_2X   EQU 170

; cartesian coordinates to radius
; ST = sqrt( X^2 + Y^2 )
; input: X,Y (mem16,mem16)
; output: Radius (mem16)
FCRAD   MACRO X, Y, R
    FILD  Y         ; ST[] = Y
    FMUL  ST,ST     ; ST = y^2 
    FILD  X         ; ST[] = X
    FMUL  ST,ST     ; ST = x^2
    FADD            ; ST = ST + ST1
    FSQRT           ; ST = SQRT(ST)
    FISTP R         ; R = ROUND(ST)
        ENDM

; cartesian coordinates to sector #
; input: X,Y (mem16,mem16)
; output: Sector (mem16)
FCSEC   MACRO X, Y, S
    FILD  Y         ; ST[] = Y
    FILD  X         ; ST[] = X
    FPATAN          ; ST = atan2(Y,X)
    FILD  CTEN      ; ST[] = 10
    FST   ST(2)     ; ST(2) = 10
    FLDPI           ; ST[] = pi
    FDIV            ; ST = 10 / pi
    FMUL            ; ST = A * ST
    FADD            ; ST = ST + 10
    FISTP S         ; S = ROUND(ST)
        ENDM

; score the dart throw
; input: X / Y coordinates (mem16)
; output: Score (AX)
SCORE   MACRO X, Y
        LOCAL IS_BULL, IS_25, IS_3X, IS_2X, MUL_SCORE, DONE
    FCRAD X, Y, FDW         ; FDW = radius(X,Y)
    MOV  DX, FDW            ; DX = FDW = radius
    XOR  AX, AX             ; score is initially 0
    CMP  DX, MAX_2X         ; >= 170 (miss)
    JL   IS_BULL            ; if not, check for bullseye
    JMP  DONE
IS_BULL:
    CMP  DX, MAX_BULL       ; < 6 (inner bullseye)
    JGE  IS_25              ; if not, check for 25
    MOV  AL, 50             ; score is 50
    JMP  DONE
IS_25:
    CMP  DX, MAX_25         ; < 16 (outer bullseye)
    JGE  IS_3X              ; if not, check for triple
    MOV  AL, 25             ; score is 25
    JMP  DONE
IS_3X:
    FCSEC X, Y, FDW         ; FDW = sector(X,Y)
    MOV  AX, FDW            ; load sector # into AX
    MOV  BX, OFFSET SCR     ; load base score table
    XLAT                    ; put base score into AL
    CMP  DX, MAX_3X         ; < 107 (triple upper bounds)
    JGE  IS_2X              ; if not, check for double
    CMP  DX, MIN_3X         ; >= 99 (triple lower bounds)
    JL   IS_2X              ; if not, check for double
    MOV  BL, 3              ; this is triple score
    JMP  MUL_SCORE          ; go forth and multiply
IS_2X:
    CMP  DX, MIN_2X         ; >= 162 (double lower bounds) (> 170 already checked)
    JL   DONE               ; if not, single score
    MOV  BL, 2              ; this is double score
MUL_SCORE:
    MUL  BL                 ; multiply score either 2x or 3x
DONE:
    ENDM

; DATA (place in appropriate segment)
SCR     DB  11,8,16,7,19,3,17,2,15,10,6  ; score table
        DB  13,4,18,1,20,5,12,9,14,11
CTEN    DW  10      ; constant 10 to load into FPU
FDW     DW  ?       ; temp DW variable for CPU/FPU data transfer

पीसी डॉस के लिए एक उदाहरण परीक्षण कार्यक्रम। इसे यहां डाउनलोड करें DARTTEST.COM

INCLUDE DART.ASM            ; the above file
INCLUDE INDEC.ASM           ; generic I/O routines - input int
INCLUDE OUTDEC.ASM          ; generic I/O routines - output int

    FINIT                   ; reset 8087

    MOV  AH, 2              ; display "X" prompt
    MOV  DL, 'X'
    INT  21H
    CALL INDEC              ; read decimal for X into AX
    MOV  X, AX

    MOV  AH, 2              ; display "Y" prompt
    MOV  DL, 'Y'
    INT  21H
    CALL INDEC              ; read decimal for Y into AX
    MOV  Y, AX

    SCORE X, Y              ; AX = SCORE( X, Y )

    CALL OUTDEC             ; display score

X   DW  ?
Y   DW  ?

उत्पादन

उपरोक्त परीक्षण कार्यक्रम का उदाहरण उपयोग । 8087, डॉसबॉक्स या अपने पसंदीदा एमुलेटर के साथ वास्तविक आईबीएम पीसी की आवश्यकता।

A>DARTTEST.COM
X: 0
Y: 0
50
A>DARTTEST.COM
X: 2
Y: 101
60
A>DARTTEST.COM
X: -163
Y: -1
22
A>DARTTEST.COM
X: 6
Y: 18
1
A>DARTTEST.COM
X: -6
Y: 18
5
A>DARTTEST.COM
X: 45
Y: -169
0
A>DARTTEST.COM
X: 22
Y: 22
4
A>DARTTEST.COM
X: -150
Y: 0
11
A>DARTTEST.COM
X: -150
Y: 0
11
A>DARTTEST.COM
X: -150
Y: -1
11
A>DARTTEST.COM
X: -7
Y: -6
25
A>DARTTEST.COM
X: -90
Y: 138
24

* संपादन:

  • ट्रंकट-राउंडिंग स्टेटमेंट और 10.5 स्थिर हटाकर -36 बाइट्स। टाई अब क्लॉकवाइज टूट गई।
  • -2 आवश्यक नहीं FRNDINT निकालकर बाइट्स
  • -4 बाइट्स, एफएमयूएल एक ही स्रोत / गंतव्य का उपयोग करते हैं

6

जेली , 56 बाइट्स

æA/Æ°_9:18ị“!@umÞẓẓS’Œ?¤
ḅıA<“©Ñckɱȥ‘TṂị“2ı¢¤¢£¡‘¹×>3$?Ç

एक मोनाडिक लिंक जोड़ी को एक सूची के रूप में स्वीकार [x,y]करता है जो स्कोर प्राप्त करता है।
दक्षिणावर्त टाई-ब्रेकिंग का उपयोग करता है।

इसे ऑनलाइन आज़माएं! या परीक्षण-सूट देखें

एनबी एक डाईएडिक संस्करण भी 56 बाइट्स है

कैसे?

æA/Æ°_9:18ị“!@umÞẓẓS’Œ?¤ - Link 1, segment score: pair [x, y]
  /                      - reduce by:
æA                       -   arc tangent
   Æ°                    - convert from radians to degrees
     _9                  - subtract 9 (align 0 with boundary between 1 & 20)
       :18               - integer divide by 18 (yields a segment index from 0 to 19)
                       ¤ - nilad followed by link(s) as a nilad:
           “!@umÞẓẓS’    -   base 250 number = 2091180117530057584
                     Œ?  -   shortest permutation of natural numbers [1..N] which
                         -   would reside at that index in a list of all permutations of
                         -   those same numbers ordered lexicographically.
                         -   = [18,4,13,6,10,15,2,17,3,19,7,16,8,11,14,9,12,5,20,1]
          ị              - index into (yields the score associated with the segment)

ḅıA<“©Ñckɱȥ‘TṂị“2ı¢¤¢£¡‘¹×>3$?Ç - Main Link: segment score: pair [x, y]
 ı                              - √(-1)
ḅ                               - convert from base = x+iy
  A                             - absolute value = √(x²+y²)
    “©Ñckɱȥ‘                    - code-page index list = [6,16,99,107,162,170]
                                - (i.e. the radial boundaries)
            T                   - list of truthy indexes
             Ṃ                  - minimal value (0 if empty)
               “2ı¢¤¢£¡‘        - code-page index list = [50,25,1,3,1,2,0]
              ị                 - index into
                                - (i.e. get an override score (>3) OR a multiplier (<=3))
                              Ç - call last Link (1) as a monad (get the segment score)
                             ?  - if...
                            $   - ...condition: last two links as a monad:
                          >     -      (override OR multiplier) greater than?
                           3    -      three
                        ¹       - ...then: identity (keep override as is)
                         ×      - ...else: multiply (by multiplier)

4

टीआई-बेसिक (TI-84 Plus CE), 147 146 बाइट्स

Prompt X,Y
abs(X+iY→R
int(E-12+11.5+10π-1R▸Pθ(X,Y→θ
{11,8,16,7,19,3,17,2,15,10,6,13,4,18,1,20,5,12,9,14,11
25((R<6)+(R<16))+Ans(θ)(R≥16 and R<170)(1+(R≥162)+2(R≥99 and R<107

अलग-अलग लाइनों पर एक्स और वाई के लिए संकेत।

टाई-ब्रेक को वामावर्त।

टीआई-बेसिक एक टोकन भाषा है ; यहां उपयोग किए जाने वाले सभी टोकन एक बाइट हैं।

स्पष्टीकरण:

Prompt X,Y
# 5 bytes, Prompt for X and Y
abs(X+iY→R
# 8 bytes, store distance from origin in R
int(E-12+11.5+10π-1R▸Pθ(X,Y→θ
# 22 bytes, store index in list of point values by polar angle in θ
{11,8,16,7,19,3,17,2,15,10,6,13,4,18,1,20,5,12,9,14,11
# 55 bytes, list of point values
25((R<6)+(R<16))+Ans(θ)(R≥16 and R<170)(1+(R≥162)+2(R≥99 and R<107
# 57 56 bytes, calculate the score

इस तथ्य का उपयोग करता है कि टीआई-बेसिक बूलियन तुलना 0 या 1 को जोड़कर और बिंदु मानों को गुणा करके वापस आती है।


3

टी-एसक्यूएल, 392 374 366 बाइट्स

UPDATE t SET x=1WHERE x=0
SELECT TOP 1IIF(r<16,f,b*f)
FROM(SELECT r=SQRT(x*x+y*y),w=FLOOR(10*ATN2(y,x)/PI()+.5)FROM t)p,
(VALUES(10,11),(9,14),(8,9),(7,12),(6,5),(5,20),(4,1),(3,18),(2,4),(1,13),(0,6),
   (-1,10),(-2,15),(-3,2),(-4,17),(-5,3),(-6,19),(-7,7),(-8,16),(-9,8),(-10,11))s(a,b),
(VALUES(6,50),(16,25),(99,1),(107,3),(162,1),(170,2),(999,0))d(e,f)
WHERE a=w AND r<e

लाइन ब्रेक पठनीयता के लिए हैं। प्रारंभिक समस्या UPDATEका ध्यान रखता x=y=0है जो अन्यथा एक त्रुटि के साथ फेंक देगा ATN2(), लेकिन स्कोर नहीं बदलता है।

इनपुट हमारे मौजूदा दिशानिर्देशों के अनुसार , पहले से मौजूद टेबल टी के माध्यम से लिया जाता है । उपयोग करने के कारण , इस तालिका में केवल एक पंक्ति होनी चाहिए।TOP 1

मूल रूप से मैं 3 तालिकाओं में शामिल हो रहा हूं:

  • तालिका p : इनपुट तालिका t से x और y ध्रुवीय r में परिवर्तित हो जाते हैं और एक "पच्चर" मान w, जो संख्या -11 से सकारात्मक 11 तक दर्शाते हैं, स्कोरिंग वेज के लिए डार्ट में गिर गया। "टाई ब्रेकर" काउंटर-क्लॉकवाइज है। (मैंने कोशिश की , जो थोड़ा कम था, लेकिन इसने असंगत टाई ब्रेकर दिया।)ROUND()
  • टेबल रों : यह एक "फान" मूल्य कन्वर्ट करने के लिए एक लुकअप तालिका है एक स्कोर में
  • तालिका d : यह एक लुकअप तालिका केंद्र से दूरी के आधार पर स्कोर गणना देता है। दूरी है और आर से जुड़ता है , और केवल एक पंक्ति पर आधारित रिटर्न देता है TOP 1। मान f या तो एक निश्चित स्कोर (बैल-आंख के लिए) है या वेज स्कोर के लिए गुणक है।

संपादित करें : ORDER BYइसे छोड़ दिया गया, यह ठीक से इसके बिना काम करने लगता है, कम से कम SQL 2017 पर। मैंने AND y=0अद्यतन स्थिति पर भी गिरा दिया ; मैंने सभी पूर्णांक yमानों के लिए परीक्षण किया , जो स्कोर x=0को x=1कभी नहीं बदलता है।

EDIT 2 : टेबल डी से हटाए गए कॉलम जी , इसे एक बयान के साथ बदल दिया गया है जो या तो सीधे (बैल-आंख के लिए) वापस आता है, या , 8 बाइट्स को बचाया। के बाद भी अंतरिक्ष हटा दिया ।IIF()ff*bTOP 1


2

हास्केल , 198 बाइट्स

p=pure
a#b=(!!(sum[1|k<-a,k<=b]))
a!b=([6,16,99,107,162,170]#(sqrt$a*a+b*b))[p 50,p 25,id,(*3),id,(*2),p 0]$([pi/20,3*pi/20..6]#(pi+atan2 b a))[11,8,16,7,19,3,17,2,15,10,6,13,4,18,1,20,5,12,9,14,11]

टाई काउंटर-दक्षिणावर्त तोड़ती है। (#)एक लुकअप फंक्शन है। ध्रुवीय कोण का उपयोग संख्याओं की सूची से अनुक्रमित करने के लिए किया जाता है, जो atan2कटऑफ बिंदु पर 11 से शुरू होता है । दूरी का उपयोग कार्यों की सूची से अनुक्रमित करने के लिए किया जाता है [const 50, const 25, id, (*3), id, (*2), const 0]और अंत में यह फ़ंक्शन उस नंबर पर लागू होता है जो हमें पहले मिला था।

इसे ऑनलाइन आज़माएं!


1

पर्ल 5 -MMath::Trig':pi' -MMath::Trig':radial' -apl , 166 बाइट्स

($d,$a)=cartesian_to_cylindrical@F;$_=(1+($d>161||$d<6)+($d<107&&$d>98)*2)*($d<170)*($d<16?25:("6 134 181 205 129 14118 167 193 172 1510"=~/../g)[($a/pi*10+41/2)%20])

इसे ऑनलाइन आज़माएं!

STDIN पर अलग किए गए दो निर्देशांक स्थान लेता है। टाई-ब्रेकिंग एंटीलॉकवाइज है।

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