ポリゴンは、その辺の数に基づいて名前が付けられます。五角形には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の辺を持つポリゴンは、システムが異なります。10桁の接頭辞を使用してください(にあります)。左の列)、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面のポリゴンはヘクトゴンと呼ばれます。100桁を取り、1桁の列で見つけて、「ヘクタ」を貼り付けます。 (hundreds)hecta(tens)kai(ones)gon。100桁の数字が1の場合は、「hecta」の後ろに接頭辞を付けないでください。 1の位が0の場合は、(1)セクションを省略します。

したがって、整数(3 < = n < = 999)、n辺のポリゴンの名前を返します。 n-gonは有効な答えではありません:P

すべてのコードゴルフと同様に、最短のコードが勝ちます。

コメント

  • 100面は百角形ですか、それとも百角形ですか? 100を超える10桁も不明確です。 110と120はhectahenakaigonとhectadikaigon(またはhectaicosikaigon?)だと思います
  • また、101面は" hectakaihenagon "(ルールからわかるように)または" hectahenagon "?
  • @ beary605私はnona-だと思います間違っている。それはラテン語からのものであり、他のもの、ヘプタ-、ヘキサ-はギリシャ語からのものです。それはennea-でなければなりません。ウィキペディアに九角形は大丈夫だと書かれているのは知っています!
  • @felipa:ennea-にするかどうかを議論していましたが、' " nonagon "を" enneagon

なので、一緒に行きました。

  • @ugoren:100-九角形で、'見なかった'にはdecaがありません、ご指摘いただきありがとうございます。 110-十七角形、120-十七角形。 101-ヘクタカイヘナゴン。
  • 回答

    C、 401 、391

    参照用に少なくとも1つの答えがあるように何かを出しましょう:-)

    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を再配置して使用する定数が1桁になるようにすることもできます。

    回答

    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 chars)

    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" 

    そして何らかの理由でコブラハイライターには//コメントとして設定されていますが間違っています。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です