Los polígonos reciben el nombre de la cantidad de lados que tienen. Un pentágono tiene 5 lados, un octágono tiene 8 lados. Pero, ¿cómo se llaman? ¿Cuál es el nombre de un polígono de 248 lados?

Todos los polígonos tienen el sufijo -gon. Hay prefijos específicos para cada polígono según el número de lados . Aquí están los prefijos para los números más bajos:

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 

Los polígonos con 21 a 99 lados tienen un sistema diferente. Tome el prefijo para el dígito de las decenas (que se encuentra en la columna de la izquierda), el dígito de las unidades (columna de la derecha abajo), y luego pegue un «kai» entre ellos para obtener (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 

Los polígonos de lados de 3 dígitos se nombran de manera similar. Un polígono de 100 lados se llama hectágono. Tome el dígito de las centenas, búsquelo en la columna para los dígitos de las unidades, luego pegue una «hectárea» a su derecha. Ahora numere las decenas y unidades como arriba: (hundreds)hecta(tens)kai(ones)gon. Si el dígito de las centenas es un 1, no ponga el prefijo detrás de «hectárea»; si el lugar de las unidades es 0, omita la sección (unidades).

Entonces, dado un número entero (3 < = n < = 999), devuelve el nombre de un polígono de n lados. n-gon no es una respuesta válida: P

Como con todos los códigos de golf, gana el código más corto.

Comentarios

  • ¿100 lados es hectágono o hectárea? El dígito de las decenas por encima de 100 tampoco está claro. Supongo que 110 y 120 son hectáreakaigon y hectádikaigon (¿o hectaicosikaigon?)
  • Además, 101 lados son » hectáreaihenagon » (según tengo entendido por sus reglas) o » hectáhenagon «?
  • @ beary605 Creo que nona- Está Mal. Eso sería del latín y los otros, hepta-, hexa- son del griego. Debería ser enea-. ¡Sé que la wikipedia dice que nonagon está bien!
  • @felipa: Estaba debatiendo si debía ser ennea-, pero yo ‘ he escuchado » nonagon » con más frecuencia que » enneagon «, así que seguí eso.
  • @ugoren: 100 – hectárea, y no ‘ vi que no ‘ No tenemos deca, gracias por señalarlo. 110 – hectárea decágono, 120 – hectáreaigón. 101 – hectákaihenagon.

Respuesta

C, 401 , 391

Pongamos algo ahí para que haya al menos una respuesta de referencia 🙂

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

Prueba con:

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

Subconjunto de salida:

 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 

Comentarios

  • Agradable. Puede reemplazar if..else con ?: (y ; con ,) para guardar algunos personajes. También t>1&&p(t) y cambios similares pueden ayudar. Y ‘ no estoy seguro, pero quizás podría reorganizar s para que las constantes que use sean de un solo dígito.

Respuesta

JavaScript – 405 386

Versión 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") 

Versión 2: (386 caracteres)

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

Ejemplo de salida:

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 

Respuesta

Cobra – 370 bytes

Esta es actualmente una función, pero si no está permitida, la cambiaré.

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" 

Y por alguna razón, el resaltador de cobra tiene // establecido como comentario, lo cual es incorrecto.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *