Decidi recentemente fazer o download de algum software de ditado, a fim de ajudar na minha redação. No entanto, não funciona muito bem quando estou codificando, pois tenho que mudar de dizer palavras para símbolos e voltar. É ainda pior quando estou codificando em uma linguagem esotérica que é tudo símbolos.
Para tornar meu uso do programa de ditado mais consistente, decidi mudar para o modo de caractere, onde apenas digo o nome de cada caractere. Problema resolvido! Embora isso atrase um pouco a data de lançamento do meu romance ...
Então, supondo que quanto maior o nome de um personagem, mais tempo é necessário para dizer, quanto tempo levarei para explicar alguns dos meus programas / frases?
Especificações
Dada uma sequência que consiste apenas em ASCII imprimível, retorne a soma do nome unicode de cada caractere. Por exemplo, /
é chamado SOLIDUS
com 7 caracteres e A
possui LATIN CAPITAL LETTER A
22 caracteres.
Mas lembre-se, eu tenho que dizer seus programas em voz alta para executá-los, portanto, a pontuação deles será baseada em quanto tempo levarei para dizê-los, ou seja, como a soma dos comprimentos do nome unicode de cada personagem.
Casos de teste:
Em formato input => output
sem espaços à direita / à esquerda na entrada.
A => 22
/ => 7
Once upon a time... => 304
slurp.uninames>>.comb.sum.say => 530
JoKing => 124
!" #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ => 1591
Double-check your \s on the last test case ;) => 755
<say "<$_>~~.EVAL">~~.EVAL => 388
,[.,] => 58
19 => 19
Regras:
- A entrada para o seu programa consistirá apenas em caracteres ASCII imprimíveis, ou seja, os pontos de código 32 (espaço) a 126 (til).
- Por uma questão de conveniência, eis a lista dos comprimentos dos caracteres que você precisa manipular:
[5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,15,20,17,8,12,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,18,13,19,5]
- Por uma questão de conveniência, eis a lista dos comprimentos dos caracteres que você precisa manipular:
- Aqui está um programa de referência que você pode usar para pontuar seu programa.
- Peter Taylor apontou que o programa de referência normaliza alguns caracteres unicode . Ele ainda deve funcionar para a maioria das soluções, mas fique à vontade para corrigi-lo se precisar
- Como você está dizendo como os caracteres realmente se parecem, sua solução será pontuada pelos caracteres exibidos, não pelos bytes envolvidos. Isso é direcionado para idiomas com codificações personalizadas.
- Você pode supor que eu memorizei toda a biblioteca Unicode e posso dizer quais caracteres estranhos você usa.
- Desculpe Rogem, mas as respostas devem ser compostas de caracteres que podem ser exibidos. Não imprimíveis são bons, só preciso ler os caracteres em voz alta.
- Faça o que fizer, não use
ﯹ
no seu programa.
fonte
ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
este será o nome completo do meu filho\x[2126]
é contado como\x[3a9]
.Respostas:
Java 8, marcar
846838822816-8 pontos graças a @tsh substituindo o
_1
porꀊ
.-22 pontuação graças a @ ASCII-only substituir o
ꀊ
withˇ
e$
withௐ
.Experimente online.
Explicação:
O
ௐ
eˇ
são usados em vez dos
ec
eu normalmente usaria, porque letras minúsculas são 20 (ieLATIN SMALL LETTER S
), masௐ
(TAMIL OM
) é 8 eˇ
(CARON
) é 5.fonte
push compressed integer 87235805968599116032550323044578484972930006625267106917841
: Pꀊ
vez de_1
poupar alguns pontos.Ω
(OHM SIGN
) tem 8 caracteres. Também haha eu não sabia que não era válido, apenas assumi que é válido em C # e Peter_1
também usou ( programa para encontrar nomes curtos de variáveis , o caractere de caixa não pode ser usado)Perl 6 , pontuação 337
Experimente online!
fonte
.&[~]
invés de.join
é um truque legal. Nunca me lembro de quais operadores de redução podem ser aplicados por esse métodoJapt v2.0a1
-x
, pontuação926908875865829791789Recebe a entrada como uma matriz de caracteres.
Experimente ou execute todos os casos de teste no TIO
(
APOSTROPHE
é omitido do sexto caso de teste no TIO, pois o Japt não pode lidar com aspas simples e duplas na mesma sequência de entrada)Explicação
Construindo a corda
(As pontuações incluem as etapas e os caracteres extras necessários para reverter cada modificação)
>=23
e juntando-se a uma sequência de 1832 .m
ek
por um único caractere maiúsculo, com pontuação de 963 .5
foi o personagem com o codepoint mais baixo (53
), então comecei com 52, que marcou 75651
deu a melhor pontuação de 738A sequência final, portanto, contém os caracteres nos seguintes pontos de código:
fonte
05AB1E , pontuação 963
Experimente online ou verifique todos os casos de teste .
Explicação:
Veja este 05AB1E ponta do meu (seções Como comprimir grandes inteiros? E Como listas inteiras compressa? ) Para entender por que
•Fδà‚<0?9½mΣ@×ƶC₁vc-™uΔ_ε'•21в
é[5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,0,19,15,20,17,8,12,2,18,13,19,5]
.fonte
C # (Compilador interativo do Visual C #) (pontuação
1627 1116 1096 1037 1019902)Isso não usa banco de dados interno: apenas algumas caixas especiais para letras e uma tabela de pesquisa.
Conjunto de testes online .
Ele não pode pontuar sozinho, porque a maioria dos caracteres não está no intervalo, incluindo as variáveis
CARON
eOHM SIGN
e os símbolos do zodíaco utilizados para codificar a tabela de referência.Obrigado ao ASCII-only por muitas sugestões.
fonte
R; Pontuação:
333015861443Também desafiador em R devido à falta de built-ins.
Bem, o código agora é principalmente do Giuseppe, mas está tudo bem. Consegui fazer uma pequena edição para jogar golfe, substituindo o * por ~ e os por ponto.
Obrigado a @Nick Kennedy por reduzir isso para 1443 usando
magia arcana"uma versão codificada em UTF8 da sequência numérica"Experimente online
fonte
utf8ToInt
é um comando super útil para jogar golfe :-) Não estou no PPCG há um mês ou mais, então é bom ver novas pessoas jogando golfe no R!Python 3 , pontuação de 993
Experimente online!
Abaixo de 1000 agora, algumas dicas ainda são apreciadas.
-16 agradecimentos a Kirill L.
fonte
_
porˇ
987.Perl 5
-pl
, pontuação 723Experimente online!
Explicação
fonte
Adido , 1934
Experimente online!
Compactação e indexação simples.
fonte
C # (Compilador interativo Visual C #) , Pontuação:
40073988375935512551Sinto-me esmagado pela solução de Peter Taylor acima. Agradecemos a Peter Taylor por apontar que uma tabela de pesquisa simples era melhor que a minha solução de dicionário anterior.
Experimente online!
fonte
_1=>_1.Select(_2=>new int[]{5,16,14,11,11,12,9,10,16,17,8,9,5,12,9,7,10,9,9,11,10,10,9,11,11,10,5,9,14,11,17,13,13,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,19,15,20,17,8,12,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,18,13,19,5}[_2-32]).Sum()
pontuação 2786.