Você deve criar um poliglota que produza o quadrado da entrada em um idioma e a raiz quadrada da entrada em outro. A resposta mais curta em bytes vence!
Você deve ter uma precisão de pelo menos três casas decimais, e a entrada sempre será uma flutuação positiva.
auto
significa "alocar na pilha". A palavra-chave é bastante inútil porque, de qualquer maneira, é o padrão; portanto, o C ++ a reformulou para significar outra coisa. Em C, no entanto, ele não expressa nenhuma opinião sobre o tipo dep
(é uma classe de armazenamento, não um tipo), por isso conta comoint
padrão (esse padrão deint
comportamento é desencorajado atualmente e provavelmente só existe porque alguns dos antecessores de C não tinham nenhum tipo de dado, mas os compiladores ainda o entendem). E, claro,(int)0.5
é 0.n^2
.Python 2 e Python 3,
2321 bytesO Python 2.x produz
n^2
, o Python 3.x produzsqrt(n)
.2 bytes salvos graças ao @Dennis!
fonte
or
?/
faz divisão inteira (1/2==0
). Em PY3, ele divisão de ponto flutuante (1/2==0.5)
.0
É Falsey.2sable / Jelly , 2 bytes
2sable calcula o quadrado. Experimente online!
Jelly calcula a raiz quadrada. Experimente online!
Como funciona
2sable
Geléia
fonte
C (clang) e Python ,
1091076953 bytesC: Experimente online!
Python: Experimente online!
Funciona usando comentários para poliglota. O resto é bastante explicativo.
Primeira vez usando C!
fonte
return 0;
do final - C99 mantém um retorno implícito de 0main()
especificamente. Fontestdio.h
nesse caso?Ohm e geléia , 3 bytes
Emite o quadrado em Ohm, a raiz quadrada em Jelly.
Ohm e Jelly usam diferentes páginas de código de byte único, portanto, o programa aparecerá diferentemente em cada codificação.
xxd hexdump do programa:
Geléia
Usando a página de código de Jelly, aparece assim:
A geléia considera que o link principal é o link principal e ignora os outros links, a menos que seja chamado especificamente. Então aqui ele apenas executa a raiz quadrada (
½
) e a gera implicitamente.Ohm
Usando a página de código de Ohm (CP437), aparece assim:
²
é a função quadrado⌂
e◙
são indefinidos; portanto, o programa apenas encaixa a entrada de leitura implícita e a gera implicitamente.fonte
½
byte, para que serve o²
mapa? É apenas lixo que ainda é ignorado? E vice-versa para Ohm? Então parece ter 2 bytes.²
em Ohm esteja no ponto de código 5. O ponto de código 5 em Jelly é%
e não faz nada, portanto, não importa qual seja a primeira linha. Suponha que½
Jelly esteja em 27 e o ponto de código 27 em Ohm sejaJ
e não faça nada, portanto, não importa qual seja a segunda linha. Portanto, se você possui um arquivo00000101<newline>00011011
, são 3 bytes. Eu acho que o único problema é se a nova linha estiver em um local diferente nas páginas de código.C89 e C99, 47 + 3 = 50 bytes
Requer
-lm
bandeira (+3)C89 produz
n^2
, C99 produzsqrt(n)
. Para testar no C89, experimente online!Conseguir que o C89 faça a
sqrt
versão deve levar menos código, mas ele insiste em declarar implicitamente asqrt
função comint
s, portanto esse é o melhor que eu poderia gerenciar.fonte
Oitava / MATLAB,
3129 bytesIsso gera o quadrado na oitava e a raiz quadrada no MATLAB.
Explicação:
A sintaxe é obviamente idêntica no MATLAB e no Octave (pelo menos para este pequeno pedaço de código).
Isso cria uma função anônima:
fonte
Básico / Delphi - 6 caracteres
Raiz quadrada em básico e quadrada em Delphi.
Você pode usar um depurador para inspecionar a expressão, cumprindo todos os requisitos de saída!
fonte
x
? Você não pode assumir que ele foi salvo em um valor. Mas você pode realmente remover o(x)
e rotulá-lo como retornando uma função.05AB1E / Bola de fogo , 3 bytes
Os seguintes bytes compõem o programa:
05AB1E calcula raiz quadrada, quadrados Fireball.
Explicação (05AB1E -
ý¹t
):Explicação (bola de fogo -
²╣t
):Às vezes, ajuda ter um idioma incompleto;)
fonte
PHP7 + JavaScript,
626158 bytesIsso foi realmente mais desafiador do que eu esperava! Estou bastante surpreso com a duração do meu código.
Como funciona?
Isso funciona selecionando o código a ser executado, a partir da matriz.
A detecção de PHP e JavaScript é feita com
+![]
.No PHP,
[]
(matriz vazia) é um valor falso, enquanto no JavaScript é um valor verdadeiro (objetos (excetonull
) são sempre verdadeiros, até mesmonew Boolean(false)
é verdade!).Mas, eu preciso obtê-lo com um valor numérico; portanto, basta usar a
not
(!
) e convertê-lo em inteiro (com o+
).Agora, o PHP gera o valor
1
, enquanto o JavaScript produz0
.A colocação do código dentro de uma matriz, nesses índices, permitirá selecionar o código correto para o idioma desejado.
Isso pode ser usado como
[JS,PHP][+![]]
, para obter o código do idioma correto.Em poliglotas anteriores, eu usei
'\0'=="\0"
, que étrue
em JavaScript (desde\0
é analisado como a NULL-byte) efalse
em PHP (a'\0'
não ser analisado como a NULL-byte, comparando a string literal\0
com o NULL-byte).Estou feliz por ter conseguido reduzir essa verificação para
+!'0'
.Estou ainda mais feliz com o @rckd , que o reduziu à versão atual!
A partir daí, é simplesmente
eval
o código necessário.PHP
O PHP executará
echo$argv[1]**.5
(equivalente aecho sqrt($argv[1]);
raiz quadrada do número), recebendo o valor do segundo argumento e exibindo-o na saída padrão.Javascript
O JavaScript é executado
alert((_=prompt())*_)
, o que exibe o número ao quadrado em umalert
.Obrigado a @rckd por salvar 1 byte e a @ user59178 por salvar 3 bytes!
fonte
echo$argv[1]**.5
vez deecho sqrt($argv[1])
05AB1E e geléia , 4 bytes
(05AB1E) - (Geléia)
Alguém fez uma boa observação, acho que os caracteres UTF-8 não compartilham a mesma operação nas páginas de código que tecnicamente possuem 2 bytes cada para codificar. No entanto, ao analisar isso em termos de despejo hexadecimal:
Na codificação CP1252 do 05AB1E, isso resulta em:
Ou seja, ele ainda emitirá o quadrado e sairá, ignorando o resto. Quando esses bytes são codificados usando a página de códigos de Jelly:
Qual é o código original pretendido, quando executado, resulta no resultado desejado de pegar a entrada e pegar o sqrt.
fonte
Ɠ
e½
exigem a codificação de dois bytes. No entanto, a sequência de bytes6e 71 93 0a
(nqƓ½
para Jelly,nq“\n
para CP-1252) deve funcionar nos dois idiomas.½
estar nas duas páginas de código não permite que ele conte como um único, porque são operações diferentes, eu assumo? Ainda estou confuso com toda a coisa da página de código.6e 71 93 0a
portanto não há teoricamente a reivindicação de 4 bytes. Apenas reivindique 4 bytes. Acontece que na codificação padrão do 05AB1E, ele lê uma coisa que faz o que você deseja, enquanto na codificação padrão da Jelly, ele lê outra que faz o que você deseja. Como um aparte, apenas porque duas codificações podem codificar o mesmo caractere não significa que o caractere será o mesmo em ambos. Pense em codificações como um código numérico com uma tabela de pesquisa já compartilhada e espero que isso lhe dê um bom modelo mental inicial.CJam / MATL , 8 bytes
Calcula o quadrado no CJam ( Experimente online! ) E a raiz quadrada no MATL ( Experimente online! ).
Explicação da praça no CJam
Explicação da raiz quadrada em MATL
fonte
Python 2 e adiante,
4333 bytesExperimente online: Python 2 (quadrado) | Quarto (sqrt)
Isso avalia uma função anônima no Python e uma função
fsqrt
interna no Forth. O Python pode ter uma função nomeadaf
para mais 2 bytes, colocandof=
na frente do lambda.O programa Forth assume um literal de ponto flutuante , que Forth deve ser escrito em notação científica. Pi truncado com 3 casas decimais (
3.141
) seria escrito assim:fonte
JavaScript (ES6) / JavaScript (ES7), 52 bytes
Retorna o quadrado da entrada no ES7 e a raiz quadrada no ES6. Muito difícil de testar, a menos que você tenha um navegador mais antigo que suporte o ES6, mas não o ES7.
fonte
PHP e CJam ,
302925 bytesCalcula o quadrado no PHP e a raiz quadrada no CJam. Tem que ser executado usando
-r
em PHP.PHP
Eleva o primeiro argumento da linha de comando (
$argv[1]
) à potência 2 e o gera. Aqui,$argv[1]
na verdade, é colocado como uma variável embutida em uma string, que é convertida em um número antes de fazer a exponenciação. Isso ocorre porquev
não é uma instrução válida no CJam e causará erros durante a análise, mas colocá-lo em uma string não causará problemas.#
inicia um comentário, então tudo depois é ignorado.Experimente online!
CJam
A primeira parte do código
ECHO"$argv[1]"**2;#
fornece um monte de valores e executa várias operações, todas inúteis. A única coisa importante é que eles não causam erros, porque logo em seguida é];
, o que envolve a pilha inteira em uma matriz e a descarta.Depois disso, ele lê um duplo de input (
rd
), obtém sua raiz quadrada (mq
) e a gera implicitamente.Experimente online!
fonte
C, linguagem de script da Operação Flashpoint , 52 bytes
Em um script OFP, um ponto e vírgula no início de uma linha faz dessa linha um comentário, enquanto C não se importa com o ponto e vírgula adicional.
C:
Experimente online!
Linguagem de script OFP:
Salve como
init.sqs
na pasta da missão e chame-a comhint format["%1", 2 call F]
.Resultado:
fonte
Reticular / Befunge-98 , 15 bytes
Linguagens 2D!
Befunge-98
Reticular
fonte
> <> / Jelly , 9 bytes (código de 7 bytes + 2 para o sinalizador '-v' em> <>)
Cara, estou realmente me divertindo com a estrutura de links Jelly.
Calcula o quadrado em> <> e a raiz quadrada em Jelly .
fonte
-v
está, na minha opinião, alinhado com a [resposta mais votada [( codegolf.meta.stackexchange.com/a/11431/44874 )) em uma meta-pergunta que trata desse caso. O><>
intérprete precisa disso-v
e é por isso a invocação mais simples possível.Python 3 + JavaScript, 101 bytes
Raiz quadrada em JS, quadrada em Python.
Funciona no Firefox (testado no FF 52) e requer
(function(x) x)(42) === 42
uma sintaxe válida. Também requer ES7 para o**
operador.fonte
x=>x**y
lugar? Ou Python vai engasgar com isso?function
não é uma palavra-chave, é um identificador válido. Então, acabei de atribuir uma função noop a ela (dentro daexec
instrução).bash e sh, 48 bytes
Atualização: Eu devo admitir a derrota. A resposta bash / sh do Digital Trauma é muito mais elegante que esta.
bash produz
n^2
, sh produzsqrt(n)
.bc
é necessário apenas para quesqrt
possa ser calculado. A diferença de comportamento é entre bash e sh.OK, tecnicamente o "sh" que estou usando ainda é bash, mas bash no modo "POSIX" (o que acontece se você chamar em
/bin/sh
vez de/bin/bash
sistemas onde/bin/sh
existe um alias para bash). Se este for o caso no seu sistema, você pode testar com:Isso se baseia em uma das diferenças explicadas aqui: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html
fonte
kill -l
(lista os sinais possíveis; não muda nada) embash
esh
. É uma das muitas diferenças que você pode encontrar aqui: gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.htmlQBIC / QBasic,
2618 bytesNo QBasic , ele pega um número e imprime esse número ao quadrado. O restante do código é ignorado porque o QBasic o vê como um comentário (
'
).QBIC usa a mesma instrução de entrada. Em seguida, imprimiu o mesmo número ao quadrado, depois aumentou para a potência de um quarto, efetivamente fazendo o root duas vezes. Isso ocorre porque
'
é visto como um literal de código: código QBasic puro que não é analisado pelo QBIC.fonte
Gelatina / Pip , 6 bytes
EDIT: É um byte mais curto para reverter as operações.
Experimente o Jelly online!
O Jelly inicia a execução na parte inferior do código (seu 'link principal') e vê se precisa de algo mais alto: vê o comando quadrado e cuida da entrada e da saída implicitamente.
Experimente o Pip online!
O Pip executa a linha superior, esquadrando a var (leitura implicitamente da linha cmd) var a e imprimindo isso implicitamente. A linha inferior é ignorada.
fonte
PRTaVS
.Wolfram Language / PHP , 25 bytes
Obtenha o quadrado de um número na Wolfram Language e a raiz quadrada em PHP;
A primeira linha é a Wolfram Language. Primeiro, é você quem altera n na barra de pesquisa no Wolfram Alpha, para que o código também seja a entrada. Então ele irá gerar a resposta ao pressionar enter
A segunda linha é PHP, obtém a raiz quadrada de n que deve ser inserida na barra de endereço (por exemplo, ppcg.php.net?n=213, onde 213 é o valor de n)
fonte
PHP 5.6 e PHP 7, 55 bytes
O PHP 5.6 produz
n^2
, o PHP 7 produzsqrt(n)
.fonte
macOS Bash e sh, 24 bytes
No Mac,
sh
estábash
sendo executado no modo Posix e, neste caso, conforme https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html :Assim
sh
, para , a variávelp
tem o valor^4
após a:
execução, mas parabash
, a variávelp
só possui esse valor enquanto:
é executada e fica vazia depois.Ainda estando realmente
bash
ocultos, alguns basismos como os<<<
herestrings ainda funcionam nos casos bash e sh.Bash and dash (e utilitários GNU), 27
No Ubuntu 16.01,
sh
é um link simbólico paradash
, que não faz<<<
herestrings. Então, temos isso:Experimente online .
fonte
Oitava / Cardinal , 28 bytes
Este programa esquadrinha a entrada no Cardinal e obtém a raiz quadrada na oitava
Experimente online! (Oitava)
Experimente online! (Cardeal)
Portanto,% é um comentário de linha única no Octave, para que apenas obtenha entrada e imprima a raiz quadrada
Para que o programa Cardinal não encontre um erro de divisão por 0 e morra, o programa
foi deslocado com um espaço, que é ignorado pelos dois programas
Explicação do programa Cardinal:
O programa inicia na%
. Recebe entrada e armazena o valor como ativo:
Define o inativo igual ao ativo =
Multiplica o ativo pelo inativo t
Finalmente, ele gera o valor ativo.
fonte
PHP / JavaScript, 43 bytes
A entrada é como:
Meio auto-explicativo, mas isso se encaixa nas regras? Meu primeiro código de golfe tho :-)
fonte
alert(<?=$x*$x.')>'.sqrt($x)?
) #CGL (CGL Golfing Language) / JS (ES6), 13 bytes (não concorrente)
Não concorrente porque:
CGL não é um idioma válido .Por causa de+
eⓟ
, CGL é tecnicamente uma linguagem válida.Código:
JS:
Simples: uma função de seta anônima que retorna seu primeiro argumento ao quadrado. O código do idioma sem nome está comentado.
CGL:
O espaço sem quebra antes da primeira linha atua como um comentário. Os
/
s não são ops. A-
segunda linha significa diminuir o número atual da pilha, que por padrão é 0. Isso então o define como -1, onde a entrada é armazenada. Ele₂
substitui o primeiro item da pilha atual por sua raiz quadrada, que agora é onde a entrada é colocada. Por padrão, a pilha atual é gerada, gerando a raiz quadrada da entrada.fonte