다각형은 가지고있는 변의 수에 따라 이름이 지정됩니다. 오각형에는 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 개의면을 가진 다각형은 다른 시스템을 갖습니다. 십자 리에 대한 접두사를 사용하십시오 ( 왼쪽 열), 1의 숫자 (아래 오른쪽 열)를 입력하고 그 사이에 “kai”를 붙여 (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면 다각형은 헥토 곤이라고합니다. 수백 개의 숫자를 가져 와서 1 자리 열에서 찾은 다음 “헥타”를 붙입니다. 이제 위와 같이 10과 1을 떼어 내십시오 : (hundreds)hecta(tens)kai(ones)gon. 백 자리 숫자가 1이면 “hecta”뒤에 접두사를 붙이지 마십시오. 1의 자리가 0이면 (ones) 섹션을 생략합니다.

따라서 정수 (3 < = n < = 999), n면 다각형의 이름을 반환합니다. n-gon는 유효한 답변이 아닙니다. : P

모든 코드 골프와 마찬가지로 가장 짧은 코드가 이깁니다.

댓글

  • 100면은 육각형입니까 아니면 육각형입니까? 100보다 큰 십자 리도 불분명합니다. 110과 120은 hectahenakaigon이고 hectadikaigon (또는 hectaicosikaigon?)이라고 생각합니다.
  • 또한 101면은 " hectakaihenagon " (규칙에서 이해했듯이) 또는 " hectahenagon "?
  • @ beary605 잘못되었습니다. 그것은 라틴어에서 온 것이고 다른 것들은 hepta-, hexa-는 그리스어에서 온 것입니다. 그것은 ennea-이어야합니다. 위키 백과에서 노 나곤은 괜찮다고 말합니다!
  • @felipa : ennea-이 (가) 있어야할지 논의 중이었지만 ' " nonagon "을 " enneagon

    , 그래서 함께갔습니다.

  • @ugoren : 100-hectagon, 그리고 ' ' deca가 없습니다. 지적 해 주셔서 감사합니다. 110-hectadecagon, 120-hectaicosigon. 101-hectakaihenagon.

답변

C, 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 

댓글

  • 좋아. if..else?:로 바꾸고 ;를 )를 사용하여 일부 문자를 저장합니다. 또한 t>1&&p(t) 및 유사한 변경 사항이 도움이 될 수 있습니다. 그리고 ' 확실하지 않지만 사용하는 상수가 한 자리 숫자가되도록 s을 재정렬 할 수 있습니다.

답변

JavaScript- 405 386

버전 1 : (405 chars)

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 

답변

Cobra-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" 

어떤 이유로 코브라 형광펜에는 // 댓글이 잘못 설정되었습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다