Então, na matemática da 1ª série, você aprende os nomes dos polígonos. Três lados são um triângulo, 4 é um quadrado e 5 é um pentágono. No entanto, nas honras da 1ª série, você vai um pouco mais longe.
Seu desafio
Existe um sistema de nomeação para polígonos acima de alguns lados; portanto, polígonos arbitrariamente grandes têm um nome.
Sua tarefa é escrever um programa ou uma função que aceite o nome de um polígono como entrada e produza o número de lados que ele possui.
Os nomes dos polígonos são definidos como na coluna esquerda deste artigo da Wikipedia, com algumas exceções.
Os polígonos de três lados serão chamados de triângulo em vez de um trigon e os polígonos de quatro lados serão um quadrado em vez de um tetrágono (suponha que todos os polígonos sejam regulares). Caso contrário, os nomes no artigo serão usados.
Regras
- A entrada será um valor de sequência.
- O programa deve imprimir o resultado em STDOUT (ou deve retornar um número inteiro).
- Somente polígonos entre 3 e 99 serão inseridos.
- Seu programa deve satisfazer todos os casos de teste.
- Sem brechas padrão.
- O programa não precisa fazer nada para entradas inválidas / fora da faixa.
- A pontuação está em bytes. Como se trata de código-golfe , o programa mais curto vence.
Casos de teste
3 triangle
4 square
5 pentagon
10 decagon
11 hendecagon
12 dodecagon
13 triskaidecagon
20 icosagon
21 icosikaihenagon
22 icosikaidigon
34 triacontakaitetragon
35 triacontakaipentagon
36 triacontakaihexagon
47 tetracontakaiheptagon
48 tetracontakaioctagon
49 tetracontakaienneagon
64 hexacontakaitetragon
80 octacontagon
81 octacontakaihenagon
99 enneacontakaienneagon
Classificação
Aqui está um snippet de pilha para gerar uma classificação regular e uma visão geral dos vencedores por idioma.
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
# Language Name, N bytes
onde N
está o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Se você quiser incluir vários números no cabeçalho (por exemplo, porque sua pontuação é a soma de dois arquivos ou deseja listar as penalidades do sinalizador de intérpretes separadamente), verifique se a pontuação real é o último número no cabeçalho:
# Perl, 43 + 2 (-p flag) = 45 bytes
Você também pode transformar o nome do idioma em um link que será exibido no snippet do placar de líderes:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
fonte
Respostas:
Ruby,
405207 bytes207 bytes
Ungolfed 207
405 bytes:
Ungolfed 405
Talvez não seja a melhor finalização de golfe, mas pode ganhar um concurso de código ofuscado!
Teste
fonte
Python2 -
357368 bytesComo as únicas exceções reais ao sistema são "quadrado", "hendecagon" e "dodecagon", todos os outros números seguem o mesmo padrão de "kai" para os segundos dígitos e "conta" / "deca" para o primeiro dígito.
Explicação:
Isso funciona para todas as entradas entre 3 e 99 e imprime o resultado no console.
Pode ser mais jogável, mas isso é o mais longe que posso ir agora.
** Edit: Acabei de perceber, este impresso para STDERR, não STDOUT. O código fixo é um pouco mais longo:
fonte
q
vez desq
?import sys;
e apenas usay=exit
. Faz a mesma coisa.Goma de canela, 430 bytes
Não competindo desde que o chiclete de canela foi feito após esse desafio. Este é um hexdump do código fonte; você pode revertê-lo usando
xxd -r
.Experimente online.
fonte