Escreva um programa que defina uma função que possa verificar se uma variável de cadeia chamada "qualquer coisa que você deseja ou introduziu pelo usuário" é ou não um piem. (piem = uma história ou poema em que os comprimentos das palavras representam os dígitos de π ( da Wikipedia ))
Alguns exemplos:
myfunction("I am clearly wrong") # False
myfunction("How I want a drink, alcoholic of course, after the heavy lectures involving quantum mechanics") #True (Taken from Wikipedia)
myfunction("Law ' s fine") # True
Você deve excluir qualquer tipo de pontuação ou nova linha antes do processamento. Golfe de código puro, as vitórias mais curtas
Data final: noite de 10/01/2014
Várias respostas
- Quantos dígitos precisamos manusear? Mais do que 10
- Por uma questão de interesse, como os 0s no PI devem ser interpretados? Palavras puladas ou com 10 letras? Como 10 letras palavras
- "uma variável chamada piem" - então o nome do parâmetro deve ser piem? Não, o texto da pergunta não foi corrigido
- Um bônus divertido pode ser uma solução que é um piem. Se sua solução é um piem, você recebe * 0,5 de bônus
- Por uma questão de argumento, _ é sempre pontuação? Você pode decidir se é pontuação ou se não é
- Não está claro o que se entende por "qualquer tipo de pontuação", quero dizer,. '"?! ;; ()
- Então os dígitos devem ser contados? E a multa de Law seria falsa? Os dígitos devem ser tratados como letras; a multa de Law = False; Lei é boa = True
Comentários
- A solução APL deve ser contada em bytes
- Se sua solução funcionar com mais de 100 dígitos de pi, você recebe * 0,8 de bônus
- Por causa do grande interesse, a data final é mais um dia no futuro.
piem
? Isso torna todas as respostas atuais incorretas.Respostas:
APL (39)
Ele usa todos os dígitos que a constante pi do intérprete APL fornece, até um limite de 99. No meu caso (Dyalog APL 14 de 32 bits), eram 16 dígitos. A versão de 64 bits provavelmente tem mais dígitos. No entanto, 16 dígitos são suficientes para os exemplos fornecidos.
Seqüências de caracteres com mais do que essa quantidade de palavras falharão , mesmo se todos os dígitos que pudessem verificar fossem verdadeiros. (O mesmo se aplica a outras postagens, até o momento em que este artigo foi escrito.) Por exemplo, se houvesse apenas 10 dígitos, o "Como eu quero beber" falharia. Isso pode ser corrigido, mas ao custo de 14 caracteres:
Essa versão aceita qualquer string em que os primeiros N dígitos estejam corretos.
fonte
JavaScript
(169) (140) (137) (135)(63) para 17 dígitos de piNa minha versão
Law's fine
eLaw ' s fine
retornar ambos verdadeiro.Versão mais recente (63) de Ingo Bürk e hsl
Nova versão (135) para 17 dígitos do pi (graças a Ingo Bürk):
Versão antiga (169) para 32 dígitos do pi:
fonte
1e15*Math.PI+"2384626433832795"
for
loop não pode ser adicionado dessa maneira.r=0
e, em seguida, apenas repetirr+=s[a].length!=p[a]
(você pode omitir o;
no final). Então volte!r
.Ruby,
11310179 (98 * 0,8)Explicação
String
.999
decimais e transformado em uma String com o.
removido."Let's"
é contado como duas palavras:"Let"
e"s"
.Array#map
para converter cada palavra no tamanho da palavra, concatená-las em aString
.String
s criados começam com os mesmos caracteres.Eu apliquei o bônus por lidar com mais de 100 dígitos.
_
não é tratado como pontuação nesta solução.fonte
_
como pontuação._
sempre é pontuação? E frases comoMy nickname on Stack Overflow is britishtea_500
.Mathematica, 123 bytes * 0,8 = 98,4
Quase a inscrição mais longa até agora, mas:
fonte
Python -
130 127116 - 17 dígitos de piComo em resposta 's @flawr ,
Law ' s fine
eLaw's fine
tanto retorno True.Agradecemos ao @Emil por remover 12 caracteres do programa.
fonte
l
em uma variável e definindo a função usando lambda.Java, 185
fonte
python 3, 17 dígitos de pi, 104
fonte
;
por uma nova linha para facilitar a leitura. Além disso, vários espaços podem ser removidos.Python 3-129
Não considera pontuação:
fonte
T-SQL
488383E agora para uma grande solução T-SQL :)
Isso cria uma função com valor de tabela embutida que usa um CTE recursivo para detectar limites de palavras.Cria uma função escalar que percorre o caminho entre as palavras e o PI até 31 decimais (primeiro 0). É chamado da seguinte maneira
fonte
CJam, 40
Não está claro o que se entende por "qualquer tipo de pontuação"; Esta solução remove os
,.'"?!;;
caracteres.fonte
Ferramentas Bash e Unix, 111
fonte
NodeJS 32 dígitos 230 bytes
Não consigo diminuí-lo com JS: D
fonte