बहुभुज उपसर्ग


17

बहुभुज उन पक्षों की संख्या के नाम पर रखे गए हैं जो उनके पास हैं। एक पंचभुज में 5 भुजाएँ हैं, एक अष्टकोण में 8 भुजाएँ हैं। लेकिन उनका नाम कैसे रखा जाता है? 248-पक्षीय बहुभुज का नाम क्या है?

सभी बहुभुज प्रत्यय हैं -gon। पक्षों की संख्या के आधार पर प्रत्येक बहुभुज के लिए विशिष्ट उपसर्ग होते हैं। यहाँ निम्न संख्याओं के लिए उपसर्ग हैं:

3 - tri
4 - tetra
5 - penta
6 - hexa
7 - hepta
8 - octa
9 - nona
10 - deca
11 - undeca
12 - dodeca
13 - triskaideca
14 - tetradeca
15 - pentadeca
16 - hexadeca
17 - heptadeca
18 - octadeca
19 - nonadeca
20 - icosa

21 से 99 पक्षों वाले बहुभुजों में एक अलग प्रणाली होती है। दसियों अंक (बाएं स्तंभ पर पाया गया) के लिए उपसर्ग लें, जो अंक (नीचे दाएं स्तंभ) हैं, और फिर पाने के लिए उनके बीच एक "काई" चिपका दें (tens)kai(ones)gon

10 - deca        | 1 - hena
20 - icosi       | 2 - di
30 - triaconta   | 3 - tri
40 - tetraconta  | 4 - tetra
50 - pentaconta  | 5 - penta
60 - hexaconta   | 6 - hexa
70 - heptaconta  | 7 - hepta
80 - octaconta   | 8 - octa
90 - nonaconta   | 9 - nona

3-अंकीय पक्षीय बहुभुज का नाम इसी तरह से रखा गया है। 100-पक्षीय बहुभुज को एक हेक्टोगोन कहा जाता है। सैकड़ों अंक ले लो, इसे लोगों के अंकों के लिए स्तंभ पर ढूंढें, फिर इसके दाईं ओर एक "हेक्टा" चिपका दें। अब दसियों और लोगों को बंद संख्या के ऊपर की तरह है: (hundreds)hecta(tens)kai(ones)gon। यदि सैकड़ों स्थान अंक 1 है, तो "हेक्टा" के पीछे उपसर्ग न लगाएं; यदि वे स्थान 0 हैं, तो (वाले) अनुभाग को छोड़ दें।

तो, एक पूर्णांक (3 <= n <= 999) दिया गया है, एक n- पक्षीय बहुभुज का नाम लौटाएं। n-gonएक मान्य उत्तर नहीं है: P

सभी कोड गोल्फ के साथ, सबसे छोटा कोड जीतता है।


100-पक्षीय हेक्टोगोन या हेक्टागोन है? 100 से ऊपर का दहाई अंक भी अस्पष्ट है। मेरा अनुमान है कि 110 और 120 हेक्टेनाईकिगोन और हेक्टैडिकिगॉन (या हेक्टाइकोसिकागोन) हैं
बदसूरत

इसके अलावा, 101-तरफा "हेक्टाकाइहेंगन" है (जैसा कि मैं आपके नियमों से समझता हूं) या "हेक्टाहेनगन"?
बदसूरत

@ beary605 मुझे लगता है कि गैर- गलत है। यह लैटिन और अन्य से होगा, hepta-, hexa- ग्रीक से हैं। यह ennea होना चाहिए- मुझे पता है कि विकिपीडिया कहता है कि गैरोन ठीक है!
felipa

@felipa: मैं बहस कर रहा था कि क्या यह होना चाहिए ennea-, लेकिन मैंने "एनगॉन" को "एन्नेगॉन" की तुलना में अधिक बार सुना है, इसलिए मैं इसके साथ गया।
beary605

@ यूगोरेन: 100 - हेक्टागोन, और मैंने नहीं देखा कि मेरे पास नहीं है deca, इस ओर इशारा करने के लिए धन्यवाद। 110 - हेक्टेकेडागॉन, 120 - हेक्टायोसिगॉन। 101 - हेकाकाइहेंगन।
beary605

जवाबों:


5

सी, 401 , 391

संदर्भ के लिए कम से कम एक उत्तर देने के लिए वहाँ कुछ डाल देता है :-)

char*s[]={"","hena","di","tri","tetra","penta","hexa","hepta","octa","nona","un","do","triskai","deca","icosi","tria","conta","kai","icosa","hecto","hecta","gon\n"};
p(i){printf(s[i]);}
t;n(i){
    if(i<10)
        p(i);   // ones
    else if(i<20){
        i-=10; 
        p(i+(i&&i<4)*9); // teens
        p(13); // "deca"
    }else if(i==20)
        p(18); // "icosa"
    else if(i==100)
        p(19); // "hecto"
    else{
        t=i/100;
        p(t>1?t:0); // hundreds
        p(t?20:0);  // "hecta"
        i%=100;
        t=i/10;
        p(t+(t&&t<4)*12); // tens
        p(t>2?16:0);      // "conta"
        i%=10;
        p(i?17:0); // "kai"
        p(i);      // ones
    }
    p(21); // "gon\n"
}

इसके साथ टेस्ट करें:

main(){
    for(int i=3;i<=999;i++){
        printf("%3d: ",i);n(i);
    }
}

उत्पादन की शुरुआत:

  3: trigon
  4: tetragon
  5: pentagon
  6: hexagon
  7: heptagon
  8: octagon
  9: nonagon
 10: decagon
 11: undecagon
 12: dodecagon
 13: triskaidecagon
 14: tetradecagon
 15: pentadecagon
 16: hexadecagon
 17: heptadecagon
 18: octadecagon
 19: nonadecagon
 20: icosagon
 21: icosikaihenagon
 22: icosikaidigon
 23: icosikaitrigon
...
 99: nonacontakainonagon
100: hectogon
101: hectakaihenagon
102: hectakaidigon
103: hectakaitrigon
104: hectakaitetragon
105: hectakaipentagon
106: hectakaihexagon
107: hectakaiheptagon
108: hectakaioctagon
109: hectakainonagon
110: hectadecagon
111: hectadecakaihenagon
...
997: nonahectanonacontakaiheptagon
998: nonahectanonacontakaioctagon
999: nonahectanonacontakainonagon

1
अच्छा लगा। आप बदल सकते हैं if..elseके साथ ?:(और ;साथ ,कुछ पात्रों को बचाने के लिए)। इसके अलावा t>1&&p(t)और इसी तरह के बदलाव मदद कर सकते हैं। और मुझे यकीन नहीं है, लेकिन शायद आप पुनर्व्यवस्थित कर सकते हैं sताकि आपके द्वारा उपयोग किए जाने वाले स्थिरांक एकल अंक होंगे।
बदसूरत

1

जावास्क्रिप्ट - 405 386

संस्करण 1: (405 वर्ण)

i=prompt(),o='0hena0di0tri0tetra0penta0hexa0hepta0octa0nona'.split(0),d='0W0icosi0triaQ0tetraQ0pentaQ0hexaQ0heptaQ0octaQ0nonaQ'.split(0),t='W0unW0doW0triskaiW0tetraW0pentaW0hexaW0heptaW0octaW0nonaW0icosa'.split(0),x=('000'+i).substr(-3).split('');alert((i<10?o[i]:i<21?t[i-10]:i==100?'hecto':(i<100?'':i<200?'hecta':o[x[0]]+'hecta')+d[x[1]]+'kai'+o[x[2]]).replace(/Q/g,'conta').replace(/W/g,'deca')+'gon')

संस्करण 2: (386 वर्ण)

i=prompt(),p='0tetra0penta0hexa0hepta0octa0nona',o='0hena0di0tri'+p,t=('W0unW0doW0triskai'+p.replace(/0/g,'W0')+'W0icosa').split(0),x=('000'+i).substr(-3).split(''),o=o.split(0);alert((i<10?o[i]:i<21?t[i-10]:i==100?'hecto':(i<100?'':i<200?'hecta':o[x[0]]+'hecta')+('0W0icosi0tria'+p.replace(/0/g,'Q0')+'Q').split(0)[x[1]]+'kai'+o[x[2]]).replace(/Q/g,'conta').replace(/W/g,'deca')+'gon')

आउटपुट उदाहरण:

3: trigon
4: tetragon
5: pentagon
6: hexagon
7: heptagon
8: octagon
9: nonagon
10: decagon
11: undecagon
12: dodecagon
13: triskaidecagon
14: tetradecagon
15: pentadecagon
16: hexadecagon
17: heptadecagon
18: octadecagon
19: nonadecagon
20: icosagon
21: icosikaihenagon
22: icosikaidigon
23: icosikaitrigon
99: nonacontakainonagon
...
100: hectogon
101: hectakaihenagon
102: hectakaidigon
103: hectakaitrigon
104: hectakaitetragon
105: hectakaipentagon
106: hectakaihexagon
107: hectakaiheptagon
108: hectakaioctagon
109: hectakainonagon
110: hectadecakaigon
111: hectadecakaihenagon
...
997: nonahectanonacontakaiheptagon
998: nonahectanonacontakaioctagon
999: nonahectanonacontakainonagon 

0

कोबरा - 370 बाइट्स

यह वर्तमान में एक फ़ंक्शन है, लेकिन अगर इसकी अनुमति नहीं है तो मैं इसे बदल दूंगा।

def f(x) as String
    o='. hena di tri tetra penta hexa hepta octa nona'.split
    o[0],t,h,d='',['','deca','icosci','triconta'],['','hecta','dihecta','trihecta'],['undeca','dodeca','triskaideca']
    for z in 4:10,t,h,d=t+[o[z]+'conta'],h+[o[z]+'hecta'],d+[o[z]+'deca']
    for z in 10,t[z]+='kai'
    return if(x-100,h[x//100]+if(10<x<20,d[x-11],t[x%100//10]+o[x%10]),'hecto')+'gon'

और किसी कारण से कोबरा हाइलाइटर ने //एक टिप्पणी के रूप में सेट किया है, जो गलत है।

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