Cops - square times square root

37

Nota: Este é o tópico da polícia , onde deve-se postar o código codificado. Aqui está o tópico dos ladrões onde a fonte quebrada deve ser postada e vinculada à resposta do policial.


Tarefa: Escreva o programa seguro mais curto que multiplique a raiz quadrada de um número inteiro n pelo quadrado de n

Isso é , então as regras são:

  • Na sua resposta, publique uma versão codificada do seu código-fonte (os caracteres devem ser escritos em qualquer ordem). A versão codificada não deve funcionar!
  • Você pode receber entradas de qualquer maneira padrão, o mesmo vale para a saída. A codificação é proibida
  • Depois que o código for decifrado pelos ladrões (se isso acontecer), você deve mencionar que seu código foi decifrado em seu título e adicionar um spoiler ao corpo da sua resposta com o código exato
  • O mesmo se aplica a respostas seguras (mencione que é seguro e adicione o spoiler )
  • O código é considerado seguro se ninguém o tiver decifrado em 5 dias após a publicação e você pode opcionalmente especificar isso no título
  • Você deve especificar sua linguagem de programação
  • Você deve especificar sua contagem de bytes
  • Você deve indicar o mecanismo de arredondamento na sua resposta (veja abaixo)

Você pode assumir que o resultado é inferior a 2 32 e n é sempre positivo. Se o resultado for um número inteiro, você deve retornar o valor exato com ou sem um ponto decimal; caso contrário, a precisão decimal mínima será de 3 casas decimais com qualquer mecanismo de arredondamento de sua escolha, mas poderá incluir mais. Você deve indicar o mecanismo de arredondamento na sua resposta. Você não tem permissão para retornar como frações (numerador, pares de denominadores - desculpe, Bash!)

Exemplos:

In -> Out

4 -> 32.0 (or 32)
6 -> 88.18163074019441 (or 88.182 following the rules above)
9 -> 243.0
25 -> 3125.0

A resposta mais curta e segura até o final de abril será considerada a vencedora.

Mr. Xcoder
fonte
2
Relacionado. (Mesmas regras CNR, tarefa diferente.)
Martin Ender
2
@MartinEnder Se a tarefa é a única coisa diferente, não é uma duplicata?
18717 Nathan Merrill
11
@NathanMerrill Não sei, acho que não temos diretrizes duplicadas estabelecidas para o desafio de policiais e ladrões, mas se eu pedir um novo desafio de golfe com código , onde a "única" coisa que é diferente de um golfe com código anterior é a tarefa, geralmente não é considerada uma duplicata. ;) (Dito isso, concordo que CNRS são, provavelmente, mais interessante se mudarmos o CNR-parte do desafio, não a tarefa subjacente).
Martin Ender
11
Boa sorte a todos! Estou realmente feliz por você ter decidido reabrir isso. Ansioso para ver respostas interessantes!
Mr. Xcoder
2
Eu tinha escrito meu código para trabalhar para uma entrada de até 2 ^ 32 ... É por isso que eu perguntei sobre erros de arredondamento, ficou bastante fora da marca nesse ponto
fənɛtɪk

Respostas:

2

05AB1E, 20 bytes - seguro

Outra abordagem totalmente diferente das minhas respostas anteriores.

****++/133DDFPTs}¹¹Ð

Sem arredondamento.

Execuções de exemplo

In   -> Out
0    -> 0
4    -> 32.0
6    -> 88.18163074019441
25   -> 3125.0
7131 -> 4294138928.896773

Não tenho dúvida de que @Emigna vai rachar em um instante, mas eh, é preciso tentar! :-D


Solução

D1TFÐ*D¹3*+s3*¹+/*}P

Isso está usando o fato de que esta sequência:

u_0 = 1, u_ {n + 1} = u_n * (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x)

converge para sqrt (x) e, de maneira cúbica, rápido (desculpe, não encontrou como formatar equações matemáticas no PCG).

Explicação detalhada

D1TFÐ*D¹3*+s3*¹+/*}P
D1                   # Duplicate the input, then push a 1: stack is now [x, x, 1] (where x is the input)
  TF                 # 10 times (enough because of the cubic convergence) do
    Ð                # triplicate u_n
     *               # compute u_n ^ 2
      D              # and duplicate it
       ¹3*+          # compute u_n ^ 2 + 3 x
           s         # switch that last term with the second copy of u_n ^ 2
            3*¹+     # compute 3 u_n ^ 2 + x
                /    # compute the ratio (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x)
                 *   # compute u_n * (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x), i.e. u_{n+1}, the next term of the sequence
                  }  # end of the loop
                   P # compute the product of the whole stack, which at that point contains u_10 (a sufficiently good approximation of sqrt(x)), and the 2 copies of the input from the initial D: we get x ^ 2 * sqrt(x)

Experimente online!

user4867444
fonte
17

Python 3 , 44 bytes ( quebrado )

'**:(((paraboloid / rabid,mad,immoral))):**'

Sem arredondamento. Precisão de ponto flutuante.

Kyle Gullion
fonte
4
Vamos lá, isso merece mais pontos, é tão criativo! Existe simetria, e todas as palavras são reais.
Erik the Outgolfer
Se eu não cometer erros bobos ... Cracked
KSab
11

MATL , 12 bytes ( quebrado por @tehtmi )

'Un&0P'/^:+1

Sem arredondamento; usa ponto flutuante.

Solução pretendida (diferente da encontrada por @tehtmi):

:&+n10U'P'/^

Explicação

:&+ % Create a matrix of size n × n, where n is implicit input
n % Number of elements. Gives n^2
10U % 10 squared. Gives 100
'P' % 'P' (ASCII code 80)
/ % Divide. Gives 1.25
^ % Power. Implicit display

Luis Mendo
fonte
11
Rachadura?
Tehtmi #
@tehtmi De fato! Bem feito! Minha solução pretendida era diferente; Acabei de publicar #
Luis Mendo
10

Röda , 28 bytes ( Rachado por @tehtmi )

 (),.025^^cdfhnnnopprstuu{|}

Observe o espaço no início. Sem arredondamento, mas ele usa números de ponto flutuante, portanto a precisão é limitada.

fergusq
fonte
Esta é uma função anônima ou uma função "completa"?
precisa saber é o seguinte
@KritixiLithos se o policial não quer dar pistas, não é suposto
Mr. Xcoder
Rachado?
Tehtmi #
10

Perl, 42 bytes (Seguro)

Existem 41 bytes de código e -psinalizador (nenhum outro sinalizador).

/"/4~~r..rso4r<_$4va=eg1de|i/h0-&$c={}l+"

O resultado não é arredondado (ou melhor, arredondado para o mesmo ponto que o Perl teria arredondado fazendo $_ = (sqrt $_) * ($_ ** 2)).

Solução:

$_=eval".i44<4}{|~"=~s/./chr-10+ord$\&/gre
(sem o spoiler \antes da &remarcação parece não gostar, $seguido por &)
Experimente online!

Explicação:

.i44<4}{|~é $_**2*sqrtmas com cada caractere substituído pelo caractere com seu código ASCII + 10. (código ASCII de $é 36, então ele se torna .cujo código ASCII é 46etc.).
O objetivo de s/./chr-10+ord$\&/greé então desfazer essa transformação: ela substitui cada caractere pelo caractere pelo código ascii 10 inferior. ( chr-10+ord$\&provavelmente é mais claro, pois chr(ord($\&)-10)where chrretorna o caractere correspondente a um código ascii e ordretorna o código ascii correspondente a um caractere).
por fim, evalavalia essa string e, assim, calcula o resultado armazenado $_, que é implicitamente impresso no final graças à -pflag.

dada
fonte
Verdade. Eu estava tentando editar rapidamente porque vi 4 votos de reabertura e esperava resolver a questão antes que o 5º fosse lançado. Se a pergunta tivesse sido deixada na caixa de areia até estar pronta, teria sido melhor para todos os envolvidos.
Peter Taylor
@PeterTaylor Claro, não há problema, e de qualquer maneira estava em negrito tão visível (eu não estava culpando ninguém, mas apenas apontando um fluxo menor (que eu corrigi imediatamente (introduzindo erros de digitação no processo))). E eu não poderia concordar mais sobre a parte da caixa de areia.
Dada
você pode explicar um pouco?
Phuclv
@ LưuVĩnhPhúc Você quer dizer se eu posso lhe dar um pouco de ajuda para quebrá-lo? mmh ... o código começa com $_=. E existe um evallugar. (que não é muito, mas eu sinto que não posso dar-lhe mais sem lhe dar muita informação)
Dada
8

Oitava, 43 bytes (Seguro)

$'()*+,-/23579:[]aelnouv'*,-23:[]lu',-23]',

Este é um script que requer entrada da linha de comando (não é uma função). É precisão de ponto flutuante (sem arredondamento).

Solução:

eval(-[5,-2:3,-3:2]+['nlouu*$$',39,']2/7'])

Explicação:

eval( <string> ) % Evaluated the string inside the brackets and executes it
Tudo dentro da evalchamada é avaliado como input('')^2.5

Como?

-[5,-2:3,-3:2] % A vector: [-5, 2, 1, 0, -1, -2, -3, 3, 2, 1, 0, -1, -2]
['nlouu**$$',39,']2/7'] % This is a string: nlouu**$ concatenated with the number
. % 39 (ASCII ']'), and ']2/7'. Thus, combined: 'nlouu**$$']2/7'

Adicionar o primeiro vetor a esta string o converterá no vetor inteiro:
[105, 110, 112, 117, 116, 40, 39, 39, 41, 94, 50, 46, 53]

evalconverte implicitamente isso em uma string, e esses números são assim: input('')^2.5

Stewie Griffin
fonte
11
Isso foi difícil. Bem feito!
Luis Mendo
7

C, 50 bytes ( Rachado por fergusq )

%(())   ,-12225;>\\aaabbdddeeefffllnoooprrttuuuuw{

Usa o arredondamento IEEE754 padrão. Conforme observado pela resposta de fergusq, pode exigir-lm dependendo do seu compilador.

Dave
fonte
Rachado?
precisa saber é o seguinte
@fergusq correto, e quase exatamente o que eu tinha. Bem feito; Eu pensei que tinha deixado arenques vermelhos suficientes lá para manter as pessoas ocupadas por muito mais tempo!
Dave
@ Dave Wow, isso parece um erro de sintaxe no início.
Erik the Outgolfer 04/04
6

Mathematica, 131 bytes, não concorrente ?, rachado

Isso foi quebrado por @ lanlock4 ! No entanto, ainda tenho pontos de internet para conceder a alguém que encontre a solução original, onde todos os personagens são realmente necessários ...

f[y_]:=With[{x=@@@@@@#####^^&&&(((()))){{}}111111,,+-/y},Print[#,".",IntegerString[Round@#2,10,3]]&@@QuotientRemainder[1000x,1000]]

Isto é planejado como um quebra-cabeça. Embora você possa usar os caracteres acima como quiser, certamente pretendo que a resposta siga o formulário

f[y_]:=With[{x=
    @@@@@@#####^^&&&(((()))){{}}111111,,+-/y
},Print[#,".",IntegerString[Round@#2,10,3]]&@@QuotientRemainder[1000x,1000]]

onde a primeira e a terceira linhas são apenas um invólucro para tornar o arredondamento e a exibição legais (ele grava todas as saídas exatamente com três casas decimais, arredondadas), e a segunda linha é a versão codificada das tripas do código. Saídas de amostra:

6 -> 88.182
9 -> 243.000
9999 -> 9997500187.497

(O Mathematica é um software não-livre, mas existe uma caixa de proteção Wolfram onde é possível testar quantidades modestas de código. Por exemplo, cortando e colando o código

f[y_]:=With[{x=
    y^2.5
},Print[#,".",IntegerString[Round@#2,10,3]]&@@QuotientRemainder[1000x,1000]]

define uma função, que você pode chamar posteriormente como f@6ou f[9], que faz a mesma coisa que a versão sem codificação do código acima. Então, isso realmente precisa ser não competitivo?)

Greg Martin
fonte
Rachou!
Não uma árvore
6

Swift - 64 bytes (Seguro)

prot Fdnufi;nooitamunc xetgru(->atl)Ior:n{tFn pg,F(ao.o25t)(w)l}

Sem arredondamento e exibe um .0mesmo se o resultado for um número inteiro.

Mr. Xcoder
fonte
4

Haskell, 16 bytes ( Rachado por @nimi )

()*...25=eglopxx

Nenhum arredondamento específico

Leo
fonte
4

C #, 172 bytes ( Rachado por SLuck49 )

       (((((())))))***,,,,......1225;;;;;;<====>CFLMMMMMPPPRSSSSSWaaaaaaabbbbcccddddddeeeeeeeeeeegghiiiiiiiillllllmmnnnnnnnooooooooqqqqrrrssssssssstttttttttuuuuuuuvvwyy{{}}

Este código é um programa completo.

Existem sete caracteres de espaço no início.

A entrada é lida no formulário STDIN e impressa em STDOUT. O resultado é double, sem arredondamentos.

Código original não destruído:

using System;
using S = System.Console;

class P
{
    static void Main()
    {
        var t = S.ReadLine();
        double q = int.Parse(t);
        Func<double, double, double> M = Math.Pow;
        S.Write(M(q, 2 * .25) * M(q * q, 1));
    }
}
raznagul
fonte
Rachado
SLuck49
3

JavaScript (ES7), 20 bytes ( Rachado por @IlmariKaronen )

****..22255666=>____

Precisão JavaScript padrão.

Neil
fonte
Rachado. (Opa, postada no segmento errado em primeiro lugar.)
Ilmari Karonen
Uma abordagem tão inteligente! 1 :)
Arjun
3

Python 2, 60 bytes ( rachado por @notjagan )

 3n0)4  5)594p3(p5*5i9t4542)0/*((8(t.84- 90945 u)i*48/95n8r8

Nenhum arredondamento envolvido. Precisos até 10 dígitos decimais.

Anthony Pham
fonte
Rachado!
precisa saber é o seguinte
3

Python 3.6, 59 bytes

ba(,b5,d' (,a/([m:'-)oa)(bl*aadplma dba](r)d )l*d,:)*m:-mml

Sem arredondamento. Precisão de ponto flutuante.

Kyle Gullion
fonte
Sério, 3 lambdas?
Mr. Xcoder
3

Haskell, 64 bytes, ( rachado por Laikoni )

$$$$$$(((((())))))**,...0<<<>>>[]cccccdddeffiiiiilloopppprrsstuu

Operações padrão de ponto flutuante Haskell.

Minha versão original é:

produto. ((($ succ $ cos $ 0) (flip (**).) [id, destinatário])). flip (id)

nimi
fonte
Rachado!
Laikoni
@Laikoni: muito bem!
N
3

Fourier , 124 119 bytes

((()))*******--011111<=>>>HHINNNN^^^eeehhhhkkkkmmmmmmmmmmmmmmmmossuuuuuuuuuuuuuuuuu{{{{{{{{{{}}}}}}}}}}~~~~~~~~~~~~~~~~

Não há espaços em branco ou caracteres de nova linha.

A raiz quadrada é arredondada para o número inteiro mais próximo porque Fourier parece não manipular nada além de números inteiros (e, como @ATaco obteve permissão, espero que esteja tudo bem)

Foi corrigido um erro de edição. Se você já estava decifrando isso, o anterior era funcional

Percebi que havia interpretado mal parte do código e estava usando mais caracteres do que precisava para

Se eu perdi alguma coisa, me avise

wwj
fonte
3

Informar 7 , 71 bytes ( Rachado por @Ilmari Karonen )

""()**-..:[]
                 RT
aaaabeeeffilmmnnnnnooooooqrrrrrssstuuy

O código inclui 17 espaços e 2 novas linhas. Este é um programa completo do Infrom 7 que define uma função que imprime o resultado com uma precisão de 5 casas decimais.

corvus_192
fonte
Rachado.
Ilmari Karonen 03/04
3

Oitava, 30 bytes (Seguro)

(((((())))))**++/:@eeeiiijmsu~

Um pouco mais simples que o meu primeiro. Não deve ser muito difícil, mas espero que seja um quebra-cabeça divertido.

Stewie Griffin
fonte
2
Não ^? Hmmm ...
Luis Mendo
11
Cheguei com isso, @(e)(e**((i/(i+i))+~sum(e:j)))mas é só n^1.5... esse é complicado.
precisa
3

Ohm, 11 bytes

M ⁿ¡D¼½;+1I

Use com -cbandeira. Usa a codificação CP-437.

Roman Gräf
fonte
Sinto muito, mas você tem certeza de que isso está correto?
precisa saber é o seguinte
Agora que ninguém o quebrou no tempo informado, por favor, compartilhe sua solução? Estou muito curioso :)
user4867444
Por enquanto, esta é a resposta mais curta considerada segura. Aceitarei, mas se você não publicar seu código original em cinco dias, desmarcarei isso, pois não tenho certeza de que isso seja possível. EAGER também ver a sua solução
Mr. Xcoder
2
@ RomanGräf tente encontrar sua solução, por favor. Caso contrário, vou desligar esta ...
Mr. Xcoder
11
@ RomanGräf: ping? Ainda muito ansiosa para ver que solução :)
user4867444
2

OCaml , 13 bytes ( Rachado por @Dada )

2*fn-5f>f*u .

Sem arredondamento (dentro do escopo IEEE 754).

shooqie
fonte
3
rachado .
Dada
2

Javascript, 123 bytes, Rachado por notjagan

 """"""((((((((()))))))))********,--.....//2;;======>>Seeeeeeegggggggggggghhhhhhhhhhhilllllnnnnnnnnnnorrrsstttttttttttttu{}

Este código é uma função completa

Há um caractere de espaço no início da lista de caracteres

O arredondamento desta resposta é a precisão de ponto flutuante para Javascript; a precisão está dentro de 10 ^ -6 para cada resposta.

Ficou mais curto porque a precisão não precisava ser mantida tão alta quanto eu pensava.

Eu tinha percebido que seria muito mais fácil resolver do que inicialmente o fiz, mas já estava lá: P

Código inicial:

g=t=>t-(t*t-n)/("le".length*t);e=h=>{n=h*h*h*h*h,s=2**(n.toString("ng".length).length/"th".length);return g(g(g(g(g(s)))))}

Método de Newton, aplicado 5 vezes a partir da potência mais próxima de 2

fəˈnɛtɪk
fonte
2

Python 3.6 - 52 bytes ( Rachado por @xnor )

f=lambda x:x**125*77*8+8/5/((('aafoort.hipie.xml')))

Arredondamento Python padrão

c ..
fonte
Cracked
xnor
2

Ruby, 35 bytes (quebrado por xsot )

'a'0-a<2<e<2<l<3<v<4<4<4<5<5<6>7{9}

Sem arredondamento. Precisão de ponto flutuante.

GB
fonte
Rachado
xsot
2

05AB1E , 47 bytes

)*.2555BFHIJJKKKPQRST``cgghilnstwx}«¹¹Áöž‚„…………

Não arredonda, usa precisão de ponto flutuante.

Okx
fonte
Cracked
Emigna
2

Excel, 26 bytes

=(())*//11122AAAIINPQRSST^

Sem arredondamento.

Nota: Como o Excel é um software pago, isso também funciona no LibreOffice.

pajonk
fonte
11
Existe uma maneira de executar isso sem comprar o Excel? Atualmente, é consenso que idiomas não livres não podem ser usados ​​em policiais e ladrões.
Wheat Wizard
11
Deve funcionar no Libreoffice gratuito, mas vou verificar e retornar.
Pajonk
11
Funciona muito bem.
Pajonk
@WheatWizard, não é mais relevante, mas acho que o consenso é: idiomas não livres podem ser usados, mas devem ser marcados como não concorrentes .
Stewie Griffin
2

RProgN 2 , 6 bytes ( rachado por @notjagan )

š2]^*\

Sem arredondamento, exibe muitas casas decimais. Não exibe nenhum para uma solução inteira.

ATaco
fonte
2
Isso realmente funciona n²√n? Posso calcular facilmente n² + √n, mas não consigo ver como você conseguiu multiplicar os termos.
precisa saber é
@notjagan me também ... tenho tentado por 2 horas quebrá-lo e nada funciona. ATaco você tem certeza de que a fonte está correta?
Mr. Xcoder
@ Mr.Xcoder Ah, você está certo. Desculpe por desperdiçar seus tempos coletivos! Por favor, veja a fonte editada.
ATaco 4/04
Agora faz sentido!
Mr. Xcoder
Um pouco atrasado, porque eu estava ocupado, mas rachado .
precisa saber é o seguinte