คำนำหน้ารูปหลายเหลี่ยม


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 เฮกตาร์เฮนนิกอนอนและเฮกตาร์ดิกานิกอน (หรือเฮคโคโนซิกาก้า?)
ugoren

นอกจากนี้ 101-side คือ "hectakaihenagon" (ตามที่ฉันเข้าใจจากกฎของคุณ) หรือ "hectahenagon"
ugoren

@ beary605 ฉันคิดว่าไม่ใช่ - ผิด นั่นมาจากภาษาละตินและภาษาอื่น ๆ hepta-, hexa- มาจากภาษากรีก มันควรจะเป็น ennea- ฉันรู้ว่าวิกิพีเดียบอกว่า nonagon ก็โอเค!
felipa

@ เฟลิปา: ฉันกำลังพิจารณาว่าจะเป็นennea-แต่ฉันเคยได้ยิน "nonagon" บ่อยกว่า "enneagon" ดังนั้นฉันจึงไปกับมัน
beary605

@ugoren: 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เพื่อให้ค่าคงที่ที่คุณใช้จะเป็นตัวเลขหลักเดียว
ugoren

1

JavaScript - 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'

และด้วยเหตุผลบางอย่างเครื่องมือเน้นข้อความของงูเห่าจึงได้//แสดงความคิดเห็นซึ่งผิด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.